捕获单击和双击事件

时间:2018-11-18 00:52:51

标签: javascript google-maps-api-3

我需要使用Google Maps API捕获单击事件和双击事件。我目前正在捕获这两者,但是当发生双击时,单击操作也在运行,我可以理解为双击= 2次单击。

如果发生双击事件,我想禁用单击事件,但不确定如何或是否可行。

google.maps.event.addListener(map, 'click', function(event) {
  console.log("single click");
});


google.maps.event.addListener(map, 'dblclick', function(event) {
  console.log("double click");
});

当我双击时,我同时获得了两个日志条目-我希望有一种方法可以确定是否发生了双击并同时禁用了单击事件?

1 个答案:

答案 0 :(得分:0)

简单的解决方法:删除dblclick侦听器并使用计时器。以下是an example,它对单击地图标记(tMarker)使用相同/相同的逻辑,请修改代码以适合您的需要:< / p>

 google.maps.event.addListener(tMarker, "click", function (e) 
    {
        var closureTrackID = tid;
  
        handleClickONMarker(closureTrackID);
        return false;       
    });
   

function doDoubleClickProcessing(closureTrackID)
{
    logMessage("mySlider.js::doDoubleClickProcessing -:: trackID:  " + closureTrackID);
    doSingleClickProcessing(closureTrackID);    
}

var singleClickInProgess = false;
var clickTimeout = 300;
function handleClickONMarker(tid)
{
    if ( singleClickInProgess )
    {
        logStatus("slider.js::handleClickONMarker:: DOUBLE CLICK trackID: " + tid);
        singleClickInProgess = false;
        doDoubleClickProcessing(tid);
    } 
    else
    {
        singleClickInProgess = true;
        setTimeout(checkClickONMarkerStatus,300,tid);
    }       
}

function checkClickONMarkerStatus(tid)
{
    if ( singleClickInProgess  )
    {
        singleClickInProgess = false;
        logStatus("slider.js::handleClickONMarker:: SINGLE CLICK trackID: " + tid);
        doMarkerProcessing( tid)   
     }
    singleClickInProgess = false;
}