如何在标记中使用事件侦听器,其事件在侦听时会在两个函数之间切换?

How do you use an event listener in markers whose event toggles between two functions when listened to?

我有这段代码运行良好:

marker.addListener('click', function(){
    showInfo(marker, content);
});
marker.addListener('dblclick', function(){
    hideInfo();
});

我正在使用两个事件监听器,一个监听“click”,另一个监听“dblclick”。但是,我只想使用一个事件侦听器来侦听“点击”并获得相同的结果。如何仅使用一个事件“点击”在 showInfo()hideInfo() 函数之间切换?

您可以使用全局变量来确定信息是可见还是隐藏。

...
var isInfoVisible;
...

然后

marker.addListener('click', function(){
    if (isInfoVisible){
        isInfoVisible = false;
        hideInfo();
    } else {
        isInfoVisible = true;
        showInfo(marker, content);
    }       
});

或:

如果您使用信息窗口,您可以检查它是否附加到地图上。

marker.addListener('click', function(){
    if (infowindow.map != null){
        infowindow.close();
    } else {
        infowindow.setContent(content);
        infowindow.open(map, marker);
    }       
});

https://jsfiddle.net/oxh0gq5w/