在谷歌地图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/
答案 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/