当隐藏相关标记时,如何清理InfoWindow?

时间:2012-04-27 06:45:29

标签: google-maps google-maps-api-3 google-maps-markers

我知道我们很多人在编写代码时会在点击标记时打开InfoWindow。但InfoWindow将保持不变,直到点击右上角 X ,这意味着将关联的Marker可见性设置为false将创建基本上孤儿InfoWindow。并且可能会同时在地图上显示多个InfoWindow个实例。我想这对用户来说只需点击InfoWindow关闭就足够了,但感觉隐藏Marker应隐藏关联的InfoWindow

我已经开始编写如下代码来处理这种情况:

google.maps.event.addListener( marker, "click", function() {
    var bubble = new google.maps.InfoWindow({
        content: buildBubbleContent( param1, param2 )
    });
    bubble.open( map, marker );
    //pretty standard stuff to here, but the next line is new (for me):
    google.maps.event.addListenerOnce( marker, "visible_changed", function() {
        bubble.close();
    });
});

这是其他人在做什么的吗?感觉就像一个应该被称为 ListenBack 的设计模式。我从未见过Google地图文档中解决的问题。我不禁想到InfoWindow中必须有一个更简单的机制来自动处理这个问题。有没有一种标准的方法可以做到这一点,我刚刚错过了?

2 个答案:

答案 0 :(得分:3)

对于单个infoWindow,我总是在地图初始化期间将其创建为全局。我的点击事件以:

开头
if(infoWindow != null){
   infoWindow.close();
}
infoWindow.setPosition(mouseEvent.latLng);
infoWindow.setContent("....");
// etc

答案 1 :(得分:0)

我正在回答这个问题,因为我一直在搜索文档并查看许多代码示例,但是没有找到任何其他解决方案。当关联标记关闭时,InfoWindow肯定没有设施可以自动将其从地图中删除。如果有人以后找到更好的选择,我很乐意将他们的解决方案标记为更好的答案。