我知道我们很多人在编写代码时会在点击标记时打开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
中必须有一个更简单的机制来自动处理这个问题。有没有一种标准的方法可以做到这一点,我刚刚错过了?
答案 0 :(得分:3)
对于单个infoWindow,我总是在地图初始化期间将其创建为全局。我的点击事件以:
开头if(infoWindow != null){
infoWindow.close();
}
infoWindow.setPosition(mouseEvent.latLng);
infoWindow.setContent("....");
// etc
答案 1 :(得分:0)
我正在回答这个问题,因为我一直在搜索文档并查看许多代码示例,但是没有找到任何其他解决方案。当关联标记关闭时,InfoWindow肯定没有设施可以自动将其从地图中删除。如果有人以后找到更好的选择,我很乐意将他们的解决方案标记为更好的答案。