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

时间:2014-10-16 06:32:52

标签: javascript jquery google-maps google-maps-api-3

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

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

3 个答案:

答案 0 :(得分:4)

而不是mousedown只使用click

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

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

JSFIDDLE


要区分使用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");
    }
});

JSFIDDLE

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