Android пользовательское приложение GPS-карта - PullRequest
3 голосов
/ 18 июля 2011

Я хочу создать приложение, которое использует данные GPS и карту здания, которую я предоставляю, чтобы показать пользователю, где они находятся в здании на карте. Это будет сделано в определенном здании, которое, как я уже знаю, получает GPS и мобильную связь.

Сначала я подумал, что самый простой способ сделать это - посмотреть, смогу ли я использовать карты Google для построения местоположения пользователей, а затем просто «наложить» свою пользовательскую карту здания поверх карты Google, чтобы мне не пришлось иметь дело с любой информацией о gps или сложностями сопоставления, мне просто нужно было бы масштабировать свое «наложение», чтобы оно правильно помещалось поверх карты Google, чтобы пользователь отображался в правильной комнате в здании. Мне интересно, может ли кто-нибудь предоставить мне какую-либо информацию о том, как это сделать, или есть более простой способ сделать мою карту. Любая информация вообще полезна!

Ответы [ 6 ]

1 голос
/ 22 июля 2011

Вы можете достичь этого с помощью пользовательского представления, которое отображает ваш план здания и знает точные координаты каждого угла здания.

Когда вы получаете обновления своего местоположения, вы можете добавить маркер в свой пользовательский вид, преобразовав реальную позицию в положение на изображении, используя что-то вроде:

псевдокод:

markerX = realWorldX - mapStartX;
markerY = realWorldY - mapStartY;

if( isOnMap( markerX, markerY ) )
{
    drawMarker( markerX, markerY );
}
1 голос
/ 22 июля 2011

Вы хотите ... Просмотр карты Google

... и, более конкретно, вы, вероятно, захотите прочитать подраздел с соответствующим названием: «Часть 2. Добавление элементов наложения»

РЕДАКТИРОВАТЬ: Упс! Не берите в голову! Я неправильно понял ваш вопрос ... это только если вы хотите наложить элемент на карту. К сожалению ...

1 голос
/ 22 июля 2011

Нет возможности использовать более близкий уровень масштабирования, чем тот, который вы можете видеть в стандартном GMap, то есть в браузере. Другая проблема заключается в том, что Google использует класс GeoPoint, основанный на кардинальных микродеградах, для рисования оверлеев, и его точность слишком мала. Вы можете посмотреть на jGarminImg - это библиотека java - к сожалению, написанная для использования с swing, но она должна быть относительно простой, чтобы она работала с android. С другой стороны - вы должны сделать свою собственную карту. Вы можете использовать стандартные наложения или создать карту в формате kml и использовать этот пример для ее отображения.

0 голосов
/ 28 июля 2011

Я бы сделал это так,

  1. Поместите маркер на карту Google, чтобы указать положение здания

  2. Развернутьна здании будет загружать вашу карту здания как пользовательский вид.Изобразите местоположение пользователя в пользовательском представлении

Я думаю, что попытка наложения вашей карты здания на карту Google, пока это возможно, будет более сложной для написания кода, чем выполнение этого с помощью пользовательского представления.

Кроме того, наложение самого низкого уровня масштабирования на карту здания не даст вам достаточного разрешения, если у вас не будет большого здания.Целые блоки довольно малы

Одна из проблем, которую вы, вероятно, уже рассмотрели, заключается в том, что устройство вернется к вышке сотовой связи и Wi-Fi для определения местоположения внутри здания, что даст вам менее точное определение местоположения.

0 голосов
/ 22 июля 2011

Если вам нужна только карта здания, не составит труда построить местоположение на изображении без использования Google Maps, при условии, что вы можете определить свое местоположение в виде координат внутри здания.

Вам нужно знать две координаты: северо-западный и юго-восточный углы карты здания, которую вы используете.Когда вы получаете обновления местоположения GPS, правильное местоположение на изображении карты может быть легко вычислено на основе этих угловых координат.

0 голосов
/ 22 июля 2011

Да, вы можете наложить растровые изображения поверх Google MapView.

Все, что вам нужно сделать, это создать подкласс класса Overlay, переопределить метод draw и нарисовать на холсте.Вы должны предоставить прямоугольник GeoPoints (вероятно, верхний левый и нижний правый углы), чтобы закрепить растровое изображение здания поверх MapView.Вы используете mapView.getProjection () для перевода широты и долготы в координаты xy на холсте.

Я предполагаю, что drawBitmap (Растровое изображение, Rect src, RectF dst, Paint paint) будет полезно здесь.Имейте в виду, что src и paint могут быть нулевыми.Если используемые вами географические точки являются точными, растровое изображение автоматически подстраивается под панорамирование и масштабирование, хотя оно может стать пиксельным, если пользователь увеличит масштаб слишком сильно.

edit: я не настолько уверен, что в Google Картах ваше здание будет иметь одинаковые GeoPoints при разных уровнях масштабирования, поэтому вам, возможно, придется настроить эти значения для разных уровней масштабирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...