2016-12-01 67 views
0

我使用多个标记创建Google地图。目前,每个标记都有一个infowindow,我怎样才能一次只打开一个infowindow?一次只能打开一个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(); } 
     }); 

} 
+0

您正在为每个标记创建新的infoWindow,还为每个infowindows创建了事件侦听器。大多数人通过设置一个infoWindow来解决这个问题,并在点击标记时设置它的位置和内容。这在性能方面也是最佳的。如果不适合,你可以在理论上关闭所有infowindows,但是你需要存储一个数组并循环。 –

+0

[Google Maps API - 一次只打开一个infowindow]的副本(http://stackoverflow.com/questions/33713676/google-maps-api-only-one-infowindow-open-at-once) – geocodezip

回答

1

试试这个:声明只是一个infowindow(全局的地图,而不是一个标记)。

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