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