我们可以在google-maps-v3上捕捉“双击右键”事件吗?

时间:2010-04-02 04:01:32

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

我们可以吗?

我想做这样的事情:

google.maps.event.addListener(map, 'db_right_click', function(event) {
   alert('ssss')
}

如何捕获'db_right_click'事件??

有什么办法吗?

3 个答案:

答案 0 :(得分:1)

我明白了

这是我的代码:

//***********  double right click ********/ 
                                var c =0 ;
                                $('#map_canvas')[0].onmousedown=function(event){
                                    if(event.button == 2){
                                        c++;
                                setTimeout(cc, 600);
                                }
                             if (c >1){
                                   alert('ok i get it')
                                }
                                }
                                function cc{
                                    c=0;
                                }
                              //***********  double right click ********/

答案 1 :(得分:1)

我无法在Google地图上轻松捕捉双击右键事件。

但这是我用于用例的工作:

我需要的是在单击右键单击时执行操作,但在双击右键时不执行该操作,只需让地图像正常一样缩小。

我还注意到,即使您双击右键,谷歌地图也只会发出1次右击事件。

所以我所做的就是听google的右键单击事件,然后将setTimeout设置为300毫秒,如果新缩放与旧缩放不同,则意味着他们双击右键,否则执行我的操作:

google.maps.event.addListener(map, "rightclick", function(event) {
    var zoom = map.getZoom()
      setTimeout(function () {
      if (map.getZoom() == zoom) { // zooms are the same so they didn't double right click.
        handleSingleRightClick() // <-- your code here
      }
    }, 300)
});

答案 2 :(得分:0)

您可以通过JavaScript捕获双重右键单击事件,但如果您需要来自Google地图事件的某些特定数据,这还不够。例如,您需要获取双击右键的位置的坐标。这是解决方案:

// variable to store right clicked place coordinates
let rightClickCoordinates;
// variable to store amounts of right clicks
let rightClicksAmount = 0;

// listener for google map right click event
google.maps.event.addDomListener(map, 'rightclick', (e) => {
    // store coordinates of place was right clicked
    rightClickCoordinates = e.latLng;
});

// listener for google map container double right click event
document.getElementById('your_map_container_id').addEventListener('mousedown', () => {
    // check for double right click
    if(e.button == 2) {
        // if right mouse button clicked increase amount by 1
        rightClicksAmount++;
    }

    // if we had more than 1 right click during the 300 ms - we caught right double click event
    if (rightClicksAmount > 1) {
        // do what you want with coordinates
        console.log(rightClickCoordinates.lat() + ', ' + rightClickCoordinates.lng());
    }

    // after 300ms set right clicks amount to 0
    setTimeout(()=> {
        rightClicksAmount = 0;
    }, 300);
}});

您可以采用相同的方式获取任何Google地图事件属性。