Android: How To: отображать карту (файл неподвижного изображения) с движущимся указателем текущего местоположения - PullRequest
1 голос
/ 15 августа 2011

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

  • место представляет собой широкое здание с несколькими этажами.
  • я могу получить / получить карты (фотографии). например. текущий: 1F пункт назначения: 5F; так что я могу получить неподвижные изображения 1-го, 2-го ... 5-го этажей (5 файлов изображений).

Сценарий:

  1. запустить приложение
  2. введите текущее местоположение (или может быть автоматически установлено с использованием текущего местоположения) и пункт назначения
  3. нажмите кнопку поиска маршрута, чтобы найти нужные карты (фотографии) и отметить текущее местоположение и пункт назначения
  4. обновить текущее местоположение при перемещении / переходе к месту назначения

Проблема:

  1. Мне просто нужно отображать 1 файл изображения (каждый этаж) за один раз, а затем перейти на другой этаж с помощью полосы прокрутки . Но .. не знаю, как это отобразить.
  2. Я могу получить координату текущего местоположения через WiFi, но не знаю, как поместить его в неподвижное изображение, чтобы отметить текущее местоположение .

Наверняка уже есть пример приложения. Не могли бы вы поделиться концепциями / идеями или включить фрагменты кода. Большая помощь по моей диссертации.

Любые указания в правильном направлении приветствуются.

1 Ответ

1 голос
/ 15 августа 2011

У вас есть пара возможностей, создайте свой собственный объект, похожий на MapView, чтобы обеспечить прокрутку или наложение вашей карты на Google Api. Пример использования MapView Api доступен в руководстве разработчика Location .

Сделать это через собственный вид будет проще, если вы понимаете основы графического программирования и преобразования для масштабирования и панорамирования. (Если вы хорошо разбираетесь в математике, учиться не составит труда). Используйте ImageView с android:scaleType="matrix" переопределением обработчика MotionEvent, чтобы получить прикосновения, а затем обработать их в матрицу преобразования и масштабирования.

Чтобы связать индикатор с изображением, сделайте два пикселя в опорных точках, которые соответствуют реальным широте / долготе. Обычно его (0,0) и (ширина, высота) прямоугольного изображения. Сделайте вашу жизнь проще и убедитесь, что изображения в масштабе. Затем с помощью второго ImageView (для индикатора) нарисуйте его сверху и переместите в правильное место на экране и убедитесь, что фон в этом представлении прозрачен, а также фон вашего индикатора, или у вас будет прямоугольный блок "гало".

Обязательно проверьте точность каждого местоположения, заданного LocationManager.

Дополнительный контент

onCurrentPosition(Location current){
    double hypotenuse = upperLeft.distanceTo(current);
    double bearing = upperLeft.bearingTo(current);
    double currentDistanceX = Math.cos(bearing) * hypotenuse;
    //                     "percentage to mark the position"
    double currentPixelX = (currentDistanceX / upperLeft.distanceTo(lowerRight) * Math.cos(upperLeft.bearingTo(lowerRight))) * mapWidth;

    moveIndicatorX(currentPixelX);
}
...