3

我知道我们中的许多人都在编写代码以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 Maps 文档中解决的问题。我不禁认为,必须有一个更简单的机制InfoWindow来自动处理这个问题。有没有我刚刚错过的标准方法?

4

2 回答 2

4

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

if(infoWindow != null){
   infoWindow.close();
}
infoWindow.setPosition(mouseEvent.latLng);
infoWindow.setContent("....");
// etc
于 2012-04-27T10:47:15.130 回答
0

我将此问题标记为已回答,因为我继续搜索文档并查看许多代码示例,但没有找到任何其他解决方案。当相关标记关闭时,信息窗口当然没有提供自动将其从地图中删除的功能。如果以后有人找到更好的选择,我很乐意将他们的解决方案标记为更好的答案。

于 2012-05-02T13:58:13.540 回答