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
这个问题提出已经很长时间了,但我刚刚为谷歌地图应用程序开发了一个工具,我想用鼠标右键向下启动一个过程,在拖动的同时继续这个过程,然后用鼠标右上结束这个过程。
因此,我最终获得了鼠标右键按下事件,方法是在地图画布上使用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");
}
});