Плавное перемещение маркера по двум координатам GPS


10

Я пытаюсь анимировать маркер из одной GPS-координаты в другую. В настоящее время я использую Google Maps для достижения этой цели, и, хотя мой алгоритм кажется правильным, Google Maps плохо справляется с преобразованием положения GPS в правый пиксель на карте, что делает анимацию не такой плавной, когда масштаб карты уменьшается. , Увеличенное изображение, оно очень плавное, и поэтому я подозреваю, что «зигзаг» вызван плохим преобразованием LatLng-> пикселей в Google.

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

Код доступен здесь: http://dev.syskall.com/map/

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

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

Ответы:


8

v2 http://econym.org.uk/gmap/example_cartrip.htm

v3 http://plebeosaur.us/etc/map/ (лучше всего работает с iphone) вы можете использовать ваши необработанные данные GPS.

совет - используйте фактические географические координаты, а не пиксельные координаты, поскольку они округлены (2 десятичных знака), а географические координаты используют 6 dp


2

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

Вы можете инициализировать свой маркер так:

var marker = new SlidingMarker({
   //your original marker options
   //...
});

Таким образом, ваш маркер будет анимирован из начальной точки в данную по этому вызову:

marker.setPosition(givenPosition);

PS Я автор библиотеки.


Есть ли в вашей библиотеке возможность повернуть значок на угол? на основании последнего лат, переходим к следующему лат?
Тим Макси

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


1

Вы также можете рассмотреть следующий подход:

  • создать коллекцию маркеров между двумя координатами для каждого местоположения
  • переключать определенный маркер с помощью marker.setVisibility(value)функции

Полный пример

JSFiddle

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.