Как удалить прослушиватель событий bounds_changed в Google Maps API v3 ?
google.maps.event.removeListener(_???_);
Как удалить прослушиватель событий bounds_changed в Google Maps API v3 ?
google.maps.event.removeListener(_???_);
Ответы:
Обычно ответы на такие вопросы можно найти в документации Google Maps API.
Как сказал Эндрю, addListener возвращает дескриптор, который вы можете использовать позже, чтобы удалить слушателя. Это потому, что у одного события может быть много слушателей, и чтобы удалить их, вы должны сохранить ссылку на каждый из прикрепленных слушателей.
Также есть функция, которая удаляет всех слушателей одновременно:
clearListeners(instance:Object, eventName:string);
//In your case:
google.maps.event.clearListeners(map, 'bounds_changed');
Вот справочник по API Карт Google, где вы можете прочитать об этом.
google.maps.event.clearListeners(map, 'idle')
работает. Но map.clearListeners('idle')
не делает. Этот синтаксис работает для всего остального в API ( .addListener
и т. Д.). Странный.
addListener возвращает дескриптор, который позже можно передать removeListener:
var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() {
google.maps.event.removeListener(listenerHandle);
Кажется, это работает в текущей версии.
var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() {
// Handler code.
});
listenerHandle.remove();
listenerHandler.remove()
работает и для слушателей уровня данных, т. Е. google.maps.data.addListener
Поскольку здесь НЕТ google.maps.data.removeListener
определенного метода.
Если вы не могли каким-то образом удерживать объект слушателя, вы могли бы удалить слушателя (ов) напрямую как google.maps.event.clearListeners(objectListened, 'event');
Пример: google.maps.event.clearListeners(map, 'bounds_changed');