我有一个 Google Maps div 和复选框列表,用于过滤地图上的标记。
但是,如果我单击标记,打开InfoWindow
,然后单击复选框以删除该类型的标记,InfoWindow
则不会从地图中删除。
删除标记后,我调用此代码,但InfoWindow
保持不变:
try {
if( infowindow ) {
infowindow.close();
}
}
catch(err) { }
我有一个 Google Maps div 和复选框列表,用于过滤地图上的标记。
但是,如果我单击标记,打开InfoWindow
,然后单击复选框以删除该类型的标记,InfoWindow
则不会从地图中删除。
删除标记后,我调用此代码,但InfoWindow
保持不变:
try {
if( infowindow ) {
infowindow.close();
}
}
catch(err) { }
我建议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();
});
});
正如问题中所讨论的:当相关的标记被隐藏时,如何清理信息窗口?:
function closeInfoWindow() {
if (infoWindow !== null) {
google.maps.event.clearInstanceListeners(infoWindow); // just in case handlers continue to stick around
infoWindow.close();
infoWindow = null;
}
}