Захват событий с одним и двумя щелчками - PullRequest
0 голосов
/ 18 ноября 2018

Мне нужно регистрировать события как одиночного, так и двойного щелчка, используя API Карт Google. Я фиксирую оба в данный момент, но один щелчок также выполняется, когда происходит двойной щелчок, который я понимаю как двойной щелчок = 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 голосов
/ 18 ноября 2018

Простой обходной путь: удалите прослушиватель dblclick и используйте таймер. Вот пример , который использует ту же логику для одиночного / двойного щелчка на маркере карты (tMarker), измените код так, чтобы он соответствовал вашему нужно:

 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...