我需要使用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");
});
当我双击时,我同时获得了两个日志条目-我希望有一种方法可以确定是否发生了双击并同时禁用了单击事件?
答案 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;
}