如何在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"); } });