如何停止谷歌地图closeclick事件传播

时间:2017-06-16 08:22:06

标签: javascript google-maps infowindow

我在包含Google地图的元素上绑定了click个事件。当用户在地图上单击交叉点关闭InfoWindow时,将触发click事件并在整个DOM上传播。我想停止此事件传播,因此infoWindow关闭但我的容器上没有引发click事件。

Google Maps API会在InfoWindow关闭时引发closeclick事件,但无法访问此事件(它不作为参数出现):

google.maps.event.addListener(infowindow, "closeclick", function() {
    // The API function doesn't have the e parameter, I can't access closeclick
});

由于我的容器绑定到click,我甚至不确定closeclick.stopPropagation()是否有效。因此,当用户点击十字架时,我正在寻找一种方法来访问Google地图引发的点击事件。当然,谷歌地图的html是如此混乱,我无法访问交叉DOM元素,为它添加一个eventListener(它只是divs到处,没有任何类)。

有什么建议吗?

编辑:作为一种解决方法,我通过修改自己的代码并测试事件来自我的容器捕获的位置来修复此问题:

container.addEventListener('click', function(ev) {
    if (ev.target.src == 'https://maps.gstatic.com/mapfiles/api-3/images/mapcnt6.png') {
        return false;
    }
    // the code I want to execute only when the click event doesn't come from the InfoWindow
});

2 个答案:

答案 0 :(得分:0)

google.maps.event.addListener(infowindow, "closeclick", function(e) {
   e.stopPropagation();
});

这不起作用吗?

答案 1 :(得分:0)

您可以使用以下帮助我的代码:

var aListener = google.maps.event.addListener(map, 'click', 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;  
    }
});