如何在Google Map API v3中区分左键和右键鼠标点击mousedown事件

Google Map API v3的mousedown事件会在左右两次点击时触发,如何识别是右击还是左击。

我是谷歌地图API的新手,我到目前为止使用的是虚拟地球API,在那里我可以区分鼠标左键和右键鼠标,如e.leftMouseButton如果左键单击则返回true。

而不是mousedown使用只需click

对于右键单击事件,您可以通过以下方式捕获rightclick事件:

 google.maps.event.addListener(map, "rightclick", function(event) { /* do something on right click */ }); 

的jsfiddle


要区分使用mousedown事件按下的按钮,可以使用event.which参数。 但为此,处理程序应添加到DOM元素(canvas),因为Google API不提供事件对象中的which选项。

 var c = document.getElementById('map-canvas'); google.maps.event.addDomListener(c, "mousedown", function (e) { if (e.which === 1) { $("#click").text("Left click"); } else if (e.which === 2) { $("#click").text("Middle click"); } else if (e.which === 3) { $("#click").text("Right click"); } }); 

的jsfiddle

问题提出后很长一段时间,但我刚刚开始研究Google地图应用程序的工具,我想在右键下载时启动一个进程,在拖动的同时继续进程,然后结束进程右键单击。

所以,我最终通过在地图canvas上使用DOM侦听器来存储右键向下事件,以存储已按下哪个按钮到全局变量,并使用地图对象上的普通Google地图侦听器来触发另一个函数,但是一个简短的计时器,以确保DOM侦听器已正确写入全局。 就像是:

 var cvs = document.getElementById("map_canvas"); google.maps.event.addDomListener(cvs, 'mousedown', function(event) { getMouseBtnFromDomListener(event); }); google.maps.event.addListener(mainMap, 'mousedown', function(event) { setTimeout(function() { initFooEvent(event); },30); }); function getMouseBtnFromDomListener(evt) { // 1=left, 2=middle (not recognized with my mouse), 3=right... mButton = evt.which; // global var } 

对我来说效果很好……

试试这个

 var _key = (window.Event) ? e.which : e.keyCode; 

例:

 var c = document.getElementById('map-canvas'); google.maps.event.addDomListener(c, "mousedown", function (e) { var _key = (window.Event) ? e.which : e.keyCode; if (_key === 1) { $("#click").text("Left click"); } else if (_key === 2) { $("#click").text("Middle click"); } else if (_key === 3) { $("#click").text("Right click"); } });