如何清理信息窗口时,该标记是隐藏?(How do I clean up an InfoWindow

2019-06-25 08:06发布

我知道,我们很多人都编写代码来打开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的设计模式。 我从来没有见过在谷歌地图文档解决的问题。 我不禁想,必须有内置于一个更简便的InfoWindow ,自动照顾这一点。 有没有办法做到这一点,我只是错过了一个标准的方式?

Answer 1:

对于一个信息窗口,我总是地图初始化过程中创建它作为一个全球性的。 我的单击事件始于:

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


Answer 2:

我标志着这个问题的回答,因为我继续淘文档和看很多代码样本,但没有发现任何其他的解决方案。 当然是有没有提供信息窗口时,该标记被关闭,自动从地图上删除设备。 如果有人发现了一个更好的选择后,我会很乐意纪念他们为更好的答案的解决方案。



文章来源: How do I clean up an InfoWindow when the associated Marker is hidden?