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 );
    });
}