Вам нужен метод zoomOut
с параметром непрерывного масштабирования, установленным для масштабирования, и метод panTo
для плавного панорамирования новой центральной точки.
Вы можете прослушивать события zoomEnd
и moveEnd
на объекте карты, чтобы связать вместе ваши zoomOut
, panTo
и zoomIn
методы.
EDIT:
Таким образом, в ходе реализации примера для этой проблемы я обнаружил, что параметр doContinuousZoom
для ZoomIn
и ZoomOut
(или просто EnableContinuousZoom
на карте) не работает должным образом. Это работает нормально при уменьшении масштаба, если плитки находятся в кеше (это важный момент, если плитки не кэшируются, тогда на самом деле невозможно получить плавную анимацию, к которой вы стремитесь), тогда это делает хорошее масштабирование плитки для имитации плавной анимации масштабирования и вводят задержку ~ 500 мс на каждом шаге масштабирования, так что вы можете делать это асинхронно (в отличие от panTo
, который вы увидите в моем примере, я использую setTimeout для вызова async).
К сожалению, это не относится к методу zoomIn
, который просто переходит к целевому уровню масштабирования без анимации масштабирования для каждого уровня масштабирования. Я не пытался явно установить версию для кода карт Google, поэтому это может быть исправлено в более поздних версиях. Как бы то ни было, вот пример кода , который в основном представляет собой просто прыжок через javascript, а не с API Карт Google:
http://www.cannonade.net/geo.php?test=geo2
Поскольку этот подход кажется немного ненадежным, я думаю, что было бы более разумно явно выполнить асинхронную обработку для setZoom (то же самое, что и панорамирование).
EDIT2:
Так что теперь я делаю асинхронное масштабирование явно (используя setTimeout
с одним увеличением за раз). Я также должен запускать события, когда каждый зум происходит, чтобы мои события цепочки правильно. Похоже, что события zoomEnd и panEnd вызываются синхронно.
Установка enableContinuousZoom на карте, похоже, не работает, поэтому я предполагаю, что вызов zoomOut, zoomIn с параметром - единственный способ заставить это работать.