Плавне переміщення маркера вздовж двох координат GPS


10

Я намагаюся оживити маркер від однієї координати GPS до іншої. В даний час я використовую Карти Google для досягнення цього, і хоча мій алгоритм здається правильним, Google Maps робить погану роботу з перетворення позиції GPS на потрібний піксель на карті, що робить анімацію не такою гладкою, коли карта зменшується . Збільшення масштабу є дуже плавним, і тому я підозрюю, що "зигзаг" спричинений тим, що Google робить погану конверсію LatLng-> пікселів.

Найкращим рішенням буде для мене безпосередньо мати справу з координатами пікселів (x, y), але, на жаль, не існує жодного публічного методу для призначення місця розташування пікселів маркеру.

Код доступний тут: http://dev.syskall.com/map/

Як би ви зробили анімацію більш гладкою при зменшенні масштабу? Крім того, мені було б цікаво використовувати еквівалент Карт Google, який дозволив би мені виконати те, що я намагаюся зробити, якщо це неможливо з 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 Я автор бібліотеки.


Чи має ваша бібліотека можливість повертати піктограму на кут? виходячи з останнього lat, lon переходить до наступного lat lon?
Тім Максей

Дивіться дискусію тут . Для кожного кроку анімації піднімається подія, де ви можете отримати координати та спробувати повернути маркер.
viskin


1

Ви також можете розглянути наступний підхід:

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

Повний приклад

JSFiddle

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.