Javascript 一次只能打开一个信息窗口
我正在创建一个带有多个标记的谷歌地图。现在每个标记都有一个信息窗口,我怎么能一次只打开一个信息窗口 此时,它会在单击地图时关闭所有窗口 我知道这个问题已经被问过好几次了,但代码似乎与我的大不相同Javascript 一次只能打开一个信息窗口,javascript,google-maps,Javascript,Google Maps,我正在创建一个带有多个标记的谷歌地图。现在每个标记都有一个信息窗口,我怎么能一次只打开一个信息窗口 此时,它会在单击地图时关闭所有窗口 我知道这个问题已经被问过好几次了,但代码似乎与我的大不相同 // if marker contains HTML, add it to an infoWindow if( $marker.html() ) { // create info window var infowindow = new google.maps.InfoWindow({
// if marker contains HTML, add it to an infoWindow
if( $marker.html() )
{
// create info window
var infowindow = new google.maps.InfoWindow({
content : $marker.html()
});
// show info window when marker is clicked
google.maps.event.addListener(marker, 'click', function() {
infowindow.open( map, marker );
});
google.maps.event.addListener(map, 'click', function(event) {
if (infowindow) {
infowindow.close(); }
});
}
尝试这样做:只声明一个信息窗口(地图的全局窗口,而不是一个标记窗口)
您正在为每个标记创建新的信息窗口,并为每个信息窗口创建事件侦听器。大多数人通过只设置一个信息窗口,并在单击标记时设置其位置和内容来解决这个问题。这在性能方面也是最佳的。如果这不合适,理论上你可以在打开一个新的信息窗口时关闭所有的信息窗口,但你需要存储在一个数组中并循环通过
var infoWindow;
...
if( $marker.html() ){
google.maps.event.addListener(marker, 'click', function() {
if (infoWindow) infoWindow.close();
infoWindow = new google.maps.InfoWindow({
content : $marker.html()
});
infoWindow.open( map, marker );
});
}