从可点击的谷歌地图覆盖传播鼠标事件

Posted

技术标签:

【中文标题】从可点击的谷歌地图覆盖传播鼠标事件【英文标题】:Propagating mouse events from clickable Google Maps overlays 【发布时间】:2013-10-29 14:10:05 【问题描述】:

是否可以在可点击的 Google 地图(圆形、多边形等)中叠加鼠标事件,但仍会将鼠标事件向下传播到底层地图?目前,例如一个可点击的圆圈似乎总是会隐藏地图中的事件。

示例:在这里,我希望在您单击圆圈时触发两个单击处理程序:http://jsfiddle.net/tW9SE/

var circle = new google.maps.Circle(
    map: map,
    center: center,
    radius: 100000,
    clickable: true
);

google.maps.event.addListener(map, "click", function()
    alert("Map clicked");
);

google.maps.event.addListener(circle, "click", function()
    alert("Circle clicked");
);

我在叠加层上找不到允许事件传播的属性,除了设置 clickable=false 并因此禁用叠加层本身的事件处理程序。

【问题讨论】:

在圆圈点击时,不能触发地图点击吗? 【参考方案1】:

只需自己触发点击:

google.maps.event.addListener(circle, "click", function()
    alert("Circle clicked");
    google.maps.event.trigger(map, 'click', null);
);

Marcelo's answer 中有关以编程方式触发 Google 地图点击的更多信息。

【讨论】:

是的,您可能是对的,只要 API 没有“enableEventPropagation”选项,这将是默认方式。但我认为我需要在更一般的层面上处理这个问题,然后我需要为每个事件(鼠标移动、单击、右键单击等)执行此操作。而且,如果地图和圆圈之间还有其他叠加层,我还需要处理对这些叠加层的事件传播。如果您理解的话,这似乎很麻烦。如果能够让事件通过各个层,那就太好了。但这可能是不可能的? 这取决于图层的构建方式。相互重叠的 z-indexed 层不一定嵌套在 DOM 中,因此标准事件冒泡可能不适用。 好点。看来您的解决方案是最好的解决方案。谢谢!

以上是关于从可点击的谷歌地图覆盖传播鼠标事件的主要内容,如果未能解决你的问题,请参考以下文章

鼠标悬停时的谷歌地图 v3 标记信息窗口

如何显示谷歌地球旧世界地图(或空白/物理世界地图)的谷歌地图平铺覆盖?

我可以在我网站上覆盖的谷歌地图底部移动Google版权吗?

访问无偏移的谷歌地图——工具篇

不同外部链接的谷歌地图标记点击功能问题

如何通过叠加层检测谷歌地图上的点击事件?