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