Google Map API v3的mousedown事件会在左右两次点击时触发,如何识别是右击还是左击。
我是谷歌地图API的新用户,到目前为止,我一直在使用Virtual Earth API,在那里我可以区分左键和右键鼠标,如e.leftMouseButton,如果左击,则返回true。
答案 0 :(得分:4)
而不是mousedown
只使用click
。
对于右键单击事件,您可以通过以下方式捕获rightclick
事件:
google.maps.event.addListener(map, "rightclick", function(event) {
/* do something on right click */
});
要区分使用mousedown
事件按下的按钮,您可以使用event.which
参数。但为此,处理程序应添加到DOM元素(画布),因为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");
}
});
答案 1 :(得分:0)
问题提出后很长一段时间了,但我刚刚开始研究Google地图应用程序的工具,我想在右键下载时启动一个进程,在拖动的同时继续进程,然后结束右上角的过程。
所以,我最终通过在地图画布上使用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
}
对我来说效果很好......
答案 2 :(得分:0)
试试这个
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");
}
});