#android #map #positioning #gis
#Android #Карта #позиционирование #гис
Вопрос:
Я разрабатываю систему позиционирования в помещении для Android. Мне нужно нарисовать пользовательский план этажа здания и наложить на него указатель.
В этом случае, какое программное обеспечение / API я должен использовать для рисования пользовательского плана этажа?
Заранее спасибо.
Ответ №1:
Недавно я сделал план библиотеки как часть моей магистерской диссертации. Я остановился на простом обычае Drawable
, который просто масштабировал Bitmap
(план этажа), чтобы соответствовать экрану, а затем рисует несколько полупрозрачных прямоугольников (книжные полки) поверх него. Мой макет имеет общий View
с fill_parent
для обоих направлений и получает пользовательский Drawable
через setBackgroundDrawable()
in Activity.onCreate()
.
Если у вас есть карты с высоким разрешением (больше, чем помещается в память приложения в одном месте), требуется масштабирование или даже поворот, это потребует много работы. Я попытался использовать код приложения Google IO, упомянутый Рено в его ответе, пользовательские наложения Google Maps (не удается увеличить достаточно близко), автономный режим WebView
(для «бесплатной» функции масштабирования) и даже обдумывал пользовательскую систему рендеринга на основе плиток — в конце концов, использование простого Bitmap
было наименьшимхлопоты и сработали на удивление хорошо для моего варианта использования.
Однако меня бы очень заинтересовало решение, которое выполняет масштабируемый, вращающийся рендеринг на основе плиток 🙂
Комментарии:
1. Большое спасибо. Это полезно. Какой инструмент вы используете для рисования растрового изображения (плана этажа)?
2. Это был прототип для одного этажа библиотеки, поэтому я просто сделал снимок плана эвакуации при пожаре с помощью телефона и очистил его в графической программе (Gimp); для фактического готового приложения я, вероятно, переведу изображение в векторную графику (используя Inkscape), а затем экспортирую в PNG (меньше проблем, чем поддержка SVG на Android)
3.
I'd be very much interested in a solution that does zoomable, rotating, tiled-based rendering, though :)
— вы видели github.com/moagrius/TileView ? Я никогда не пробовал, но мне, возможно, придется, и мне любопытно.
Ответ №2:
Google сделал это для своего события ввода-вывода Google. Жаль, что они использовали javascript: ( Я в этом не разбираюсь.
Они загрузили map.js в a MapFragment
, который содержит a WebView
.
Комментарии:
1. Спасибо за ответ. Во-первых, мне нужно найти способ нарисовать пользовательский план этажа (плитку карты). Я проводил исследования по этому вопросу в последние несколько дней. Я расстроен.
Ответ №3:
Компонент MapView предоставляет очень гибкий метод добавления пользовательских элементов любого типа на карту под названием mapOverlays. Вы можете реализовать ItemizedOverlay и добавлять к нему элементы, а также определять чертежи для элементов наложения на этом наложении. После того, как вы зарегистрировали свое наложение в MapView, представление позаботится о том, когда рисовать ваши элементы и где на экране.
Для получения более подробной информации и руководства см. http://developer.android.com/resources/tutorials/views/hello-mapview.html