Как плавно анимировать маркер с помощью Google Maps? - PullRequest
3 голосов
/ 02 октября 2010

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

lat_delta = new_lat - old_lat;
lng_delta = new_lng - old_lng;

for(alpha=0; alpha < 1; alpha += 0.1) {
  lat = old_lat + (alpha * lat_delta);
  lng = old_lng + (alpha * lng_delta);
  update_marker(lat, lng);
}

Полный код доступен в http://dev.syskall.com/map/ и http://dev.syskall.com/map/commute.js.

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

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

Конечно, текущая реализация хороша, когда карта увеличена, но не так хороша, когда она уменьшена.

Есть ли способ обойти эту проблему?

1 Ответ

0 голосов
/ 02 октября 2010

Да ... API предоставляет вам методы , чтобы получить пиксельные координаты всех ваших маркеров на карте.Я бы сделал следующее:

получите пиксельные координаты вашего маркера

визуализируйте фиктивный маркер на этом месте

удалите оригинальный маркер

анимируйте ваш манекен на новом месте, используя значения пикселей

поместите новый маркер на карту

удалите манекен

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

...