- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
This question is asked often, but never really answered well. Let's see if we can remedy it!
Google 允许您通过其 API 绑定(bind)到 Google map View 中的事件使用 event handlers .
有时,您可能会将事件处理程序绑定(bind)到 Google 自身 已绑定(bind)的事件。因此,当您的事件触发并按照您的指示执行时,您可能会发现 Google 同时也在做自己的小事。
Hmm, can I handle the event so my code runs, but stop the event from continuing on and firing Google's event handler?
你当然可以!欢迎使用事件传播
(又名事件冒泡)。
在这里,我绑定(bind)了一个事件处理程序来双击 Google map :
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
是要绑定(bind)到的 Google Map 对象。
这行不通。事件冒泡, map 放大。我不知道为什么。
You ask, have you read the documentation?
的确如此。 documentation说要使用 event.stop();
我看过别人说的。 This issue正是我的问题。它被标记为已修复,但解决方案不起作用。
想法?
doubleclick 事件的一个可能的解决方法是在您需要它不触发时禁用 Google 的默认行为,然后在稍后重新启用它。
您可以使用 disableDoubleClickZoom
参数来执行此操作。请参阅文档 here .
这里是一些要禁用的代码:
map.set("disableDoubleClickZoom", true);
现在重新启用:
map.set("disableDoubleClickZoom", false);
当然,您可以在 MapOptions
参数中设置该属性,以便首先创建 map
对象。
最佳答案
更新: 不幸的是,我发现 Firefox 无法通过 window.event
访问当前事件,因此这段代码成功了在那里工作。我还没有找到解决方法。
事实证明对代码的修复是最小的:只需从事件处理程序函数中删除 event
参数,从而访问处理程序中的全局 window.event
对象.
以下示例代码适用于 IE 和 Chrome,但不适用于 Firefox:
google.maps.event.addListener(map, "dblclick", function(googleMapsEvent) {
console.debug("caught double click");
// reference the global event object
// ignore the googleMapsEvent passed in by Google Maps!
event.preventDefault();
});
This answer让我走上正轨!
关于javascript - 谷歌地图双击事件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17373677/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!