如何检测长按Google地图标记(javascript)?

Anb*_*lam 4 javascript google-maps dom-events

我猜Google地图没有长按/ taphold事件处理程序.下面的代码是实现这个的方法吗?

Anb*_*lam 11

我使用鼠标按下和鼠标按下事件监听器实现了长按功能.谢谢!!

var longpress = false;

    google.maps.event.addListener(marker,'click', function (event) {
            (longpress) ? console.log("Long Press") : console.log("Short Press");
        });



    google.maps.event.addListener(marker, 'mousedown', function(event){

                start = new Date().getTime();           
            });

    google.maps.event.addListener(marker, 'mouseup', function(event){

                end = new Date().getTime();
                    longpress = (end - start < 500) ? false : true;         

            });
Run Code Online (Sandbox Code Playgroud)


raf*_*ais 7

我知道这是一个老帖子,但我遇到了同样的问题,我发现我认为比@Anbarasan Thangapalam建议的更好的解决方案.

解:

var mousedUp = false;
google.maps.event.addListener(marker, 'mousedown', function(event){ 
    mousedUp = false;
    setTimeout(function(){
        if(mousedUp === false){
            //do something if the mouse was still down
            //after 500ms        
        }
    }, 500);
});
google.maps.event.addListener(marker, 'mouseup', function(event){ 
    mousedUp = true;
});
Run Code Online (Sandbox Code Playgroud)

我认为这种方法可能更好理解,代码行少,侦听器功能少.

要避免在拖动事件上触发超时功能,只需复制该mouseup功能并进行更改即可dragstart.像这样:

google.maps.event.addListener(marker, 'dragstart', function(event){ 
    mousedUp = true;
});
Run Code Online (Sandbox Code Playgroud)