Подтвердить что ты не робот

Как я могу выполнить плавный анимированный переход между двумя местоположениями Google Maps?

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Это оживляет камеру от текущей позиции до новой.

Ответ 3

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

Вот бит кода:

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

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