Распространение событий двойного щелчка на карте Google
Этот вопрос часто задают, но так и не получили хорошего ответа. Посмотрим, сможем ли мы это исправить!
Распространение событийGoogle позволяет привязывать к событиям в представлении карты Google через ихAPI с помощьюобработчики событий.
Иногда вы можете привязать ваш обработчик событий к событию, которое Googleсам уже связан с. Таким образом, когда ваше событие запускается и делает то, что вы сказали, вы можете обнаружить, что Google также делает свою собственную маленькую вещь в то же время.
Хм, могу ли я обработать событие, чтобы мой код запускался, но не позволять событию продолжать работу и запускать обработчик событий Google?
Вы уверены, что можете! Добро пожаловать вEvent Propagation
(он же Event Bubbling).
Здесь я привязываю обработчик событий к двойному щелчку на карте Google:
var aListener = google.maps.event.addListener(map, 'dblclick', function(event) {
// Try to prevent event propagation to the map
event.stop();
event.cancelBubble = true;
if (event.stopPropagation) {
event.stopPropagation();
}
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
});
Вотmap
объект Google Map для привязки
Это не работает Событие вспыхивает, и карта увеличивается. Я не знаю почему.
Вы спрашиваете, вы читали документацию?
На самом деле.документация говорит использоватьevent.stop();
Я посмотрел на то, что говорят другие.Эта проблема это точно моя проблема. Он был помечен как исправленный, но решение не работает.
Идеи?
Временное решениеВозможный обходной путь для события doubleclick - отключить поведение Google по умолчанию, когда оно не срабатывает, а затем снова включить его.
Вы делаете это сdisableDoubleClickZoom
аргумент. Смотри документациюВот.
Вот код для отключения:
map.set("disableDoubleClickZoom", true);
Теперь, чтобы снова включить:
map.set("disableDoubleClickZoom", false);
Конечно, вы можете установить свойство вMapOptions
аргумент, когдаmap
Объект создается в первую очередь.