这个问题经常被问到,但从来没有真正得到很好的回答。让我们看看我们是否可以解决它!
事件传播
Google允许您使用事件处理程序通过其API绑定到 Google 地图视图中的事件。
有时,您可能会将事件处理程序绑定到 Google本身已经绑定的事件。因此,当您的事件触发并执行您告诉它执行的任何操作时,您可能会发现 Google 同时也在做自己的小事。
嗯,我可以处理事件以便我的代码运行,但阻止事件继续并触发 Google 的事件处理程序吗?
你一定可以!欢迎来到Event Propagation
(又名事件冒泡)。
看看这段代码
在这里,我绑定了一个事件处理程序以双击 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
对象何时创建的属性。