谷歌地图V3 - 右键单击​​标记上的防止上下文菜单

时间:2018-03-03 21:58:41

标签: javascript google-maps-api-3

在谷歌地图Javascript V3 API最近的一些更新后,我注意到当我在标记上右击时,上下文菜单开始显示。基本上代码是

google.maps.event.addListener(marker, 'rightclick', function (event) {
    foo(marker);
});

我已经尝试过选项

google.maps.event.addListener(marker, 'rightclick', function (event) {
    deleteMarker(marker);
    event.stop();
    return false;
});

但是上下文菜单仍然会继续出现。我也把它放在整个地图上

    $("#map").contextmenu(function (e) {
        e.preventDefault();
        e.stopPropagation();
        return false;
    });

而且,正确地说,点击地图时不会出现上下文菜单。如果右键单击也可以停止?

这是问题的一个示例:https://jsfiddle.net/rnxLum5j/

3 个答案:

答案 0 :(得分:3)

出现了相同的问题,并通过延迟执行超时显示对话框来解决。 在您的提琴中,将google.maps.event.addListener更改为

 google.maps.event.addListener(map, 'rightclick', function (ev) {
    setTimeout(ShowContextMenuGoolge, 0, ContextMenu, ev);
});

答案 1 :(得分:1)

最后我解决了禁用地图所在的div而不是地图本身的上下文菜单。

答案 2 :(得分:1)

我也有这个问题。

我认为这是google maps'rightclick'事件的一个错误。

我试图阻止传播并取消冒泡,但DOM'contextmenu'事件仍然在打开的'context-menu'元素上触发!

我的解决方案是停止在上下文菜单元素上触发事件。

var mapCanvas = document.getElementById("map_canvas");
$(mapCanvas).on('contextmenu', '.custom-context-menu', function (e) {
    e.stopPropagation();
    e.preventDefault();
    return false;
});

这是错误的示例:https://jsfiddle.net/rnxLum5j/