如何区分谷歌地图API v3中鼠标左键和右键点击鼠标向下事件



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

最新更新