Google maps v3 zoom end - PullRequest
       16

Google maps v3 zoom end

5 голосов
/ 01 сентября 2011

У меня проблема с google maps v3 zoom_change, поскольку она не решает мою проблему идеально.

У меня есть 2 неудовлетворенных требования:

  • Мне нужнополучить границы и показать точки, которые находятся внутри границ после , когда пользователь щелкнул по элементу управления масштабированием, и масштаб был перенастроен на карте.Метод zoom_change делает это до повторной настройки масштаба, и мне не нужны границы.

  • Метод zoom_change вызывается каждый раз, например, всякий раз, когда я выполняю fitBounds или setZoom .Он мне нужен только при нажатии zoomcontrol или при перемещении колесика мыши.

Есть ли в API v3 решение для этих проблем?

Ответы [ 3 ]

7 голосов
/ 01 сентября 2011

Событие называется zoom_changed (НЕ zoom_change). Обработчик этого события называется ПОСЛЕ изменения масштабирования. На самом деле не так просто отличить изменение масштаба, вызванное пользователем, от изменения, вызванного программой. Возможное решение - сохранить «глобальную» переменную, скажем, userZoom, которая обозначает, активировал ли пользователь масштабирование.

var userZoom = true; // initial value: be prepared for user action
// Install listener
google.maps.event.addListener(Map.self, 'zoom_changed', function() {
    if (userZoom) {      
        // the user changed zoom: do what should be done
    }
    else {
        // zoom change caused by a program action: ignore
    }
    userZoom = true;  // be prepared for the user zoom action    
});

Прежде чем вызывать какие-либо действия программы, которые изменяют масштаб, установите userZoom = false, например,

userZoom = false;
map.setZoom(9);
5 голосов
/ 20 октября 2013

Прослушивание события простоя.

Из Справочник по API JavaScript Карт Google V3 :

idle: это событие вызывается, когда карта переходит в режим ожидания после панорамирования или трансфокации.

0 голосов
/ 29 ноября 2013

Единственный реальный способ, который я нашел, - это создать собственный элемент управления масштабированием на карте,

https://developers.google.com/maps/documentation/javascript/controls?utm_source=welovemaspdevelopers&utm_campaign=stackoverflow#CustomEvents

и затем установите прослушиватель событий на элементе управления,

https://developers.google.com/maps/documentation/javascript/controls?utm_source=welovemaspdevelopers&utm_campaign=stackoverflow#ControlModification.

Понятно, не элегантно, но вариант.

...