Android найти положение на карте - PullRequest
1 голос
/ 06 февраля 2012

Вот мой сценарий:

У меня есть изображение, которое является картой. Я использую это как фоновое изображение.

Изображение не имеет квадратной формы. Это больше похоже на трапецию.

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

Теперь, когда я получаю координаты местоположения из GPS, я хочу иметь возможность построить точку на карте. Поскольку изображение не имеет квадратной формы, я не могу использовать простое соотношение для оценки положения координат GPS на карте.

Как я могу отобразить координаты, которые я получаю от GPS к местоположению на карте?

Обновление:

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

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

При условии, что нет перспективы, и у вас есть координаты четырех углов, достаточно просто изменить положение следующим образом:

Point upperRightGPS; // upper right GPS coordinates
Point upperLeftGPS; // upper left GPS coordinates
Point lowerRightGPS; // lower left GPS corrdinates
Point upperRight; // upper right screen pixel value (100, 0)?
Point upperLeft; // upper left screen pixel value (0,0)?
Point lowerRight; // lower right screen pixel value (0, 200)?

public Point positionOnMap(Point gps){

    double dx = (upperRight.x - upperLeft.x)/(upperRightGPS.x - upperLeftGPS.x);
    double dy = (upperRight.y - lowerRight.y)/(upperRightGPS.y - lowerRightGPS.y);

    return new Point((int) dx * gps.x, (int) dy * gps.y);
}

Это предполагает, что начало координат находится в верхнем левом углу экрана..

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

0 голосов
/ 06 февраля 2012

Мой подход, для чего бы это ни стоило, заключается в том, что вы должны отобразить всю свою карту на дисплее и как можно лучше подогнать ее под координаты экрана, поэтому в вашем случае ширина дна может соответствовать всей нижней части экрана. в то время как верхняя часть будет более узкой, возможно, с некоторыми «не нанесенными на карту» областями с левой и правой сторон экрана. Вы должны иметь возможность переводить гео-координаты карт в координаты пикселей экрана (для относительно небольшой области линейный перевод может быть достаточно точным). Затем вы можете поместить маркер, представляющий местоположение пользователя, поверх изображения, используя тот же перевод географических координат в пиксели. если вы хотите, чтобы пользователь мог перетаскивать изображение карты в любом направлении или увеличивать и уменьшать масштаб, то вам необходимо отрегулировать пиксель экрана, чтобы соответственно рассчитать расчет.

...