Как сделать плавный анимированный переход между двумя местоположениями на Картах Google? - PullRequest
25 голосов
/ 21 января 2010

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

Я пытаюсь настроить карту, в которой есть несколько местоположений в основной области карты, но есть карта, которая находится вне экрана. У меня есть значок указателя для более отдаленного местоположения в пределах начальной области карты, который я хочу плавно прокручивать к местоположению за пределами экрана при нажатии (чтобы лучше понять его относительное местоположение). Однако в API Карт я не могу найти ничего, что позволило бы мне сделать это.

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

Ответы [ 3 ]

29 голосов
/ 21 января 2010

К сожалению, я не думаю, что это возможно (без изменений от Google). Из справочника v3 API для panTo:

Изменяет центр карты на указанный LatLng. Если изменение меньше ширины и высоты карты, переход будет плавно анимирован.

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

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

Извините, это не очень полезно (у меня та же проблема).

11 голосов
/ 04 июня 2015

Для меня этот метод работает, но я использую Google Maps API v2.

LatLng latLng = new LatLng(lat,lng);
map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, ZOOM_FACTOR));

Анимация камеры из текущей позиции в новую.

1 голос
/ 31 мая 2010

Если вы используете Gmaps API V2, вы можете очень легко реализовать плавное анимированное перемещение с помощью метода panBy (). Вы должны использовать метод fromLatLngToContainerPixel (), чтобы найти количество пикселей для панорамирования.

Вот бит кода:

var newLoc = map.fromLatLngToContainerPixel(new GLatLng(lat, lng));
map.panBy(new GSize( newLoc.x, newLoc.y ));

Однако я пытаюсь добиться того же в API карт V3, но, к сожалению, метод fromLatLngToContainerPixel () больше не работает так, как он это делал:

...