【问题标题】:Only open one infowindow at a time一次只打开一个信息窗口
【发布时间】:2016-12-01 15:03:01
【问题描述】:

我正在创建一个带有多个标记的 Google 地图。目前每个标记都有一个信息窗口,我怎样才能一次只打开一个信息窗口?

目前它会在点击地图时关闭所有窗口。

我知道这个问题已被问过几次,但代码似乎与我的大不相同。

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

}

【问题讨论】:

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

标签: javascript google-maps


【解决方案1】:

试试这个:只声明一个信息窗口(地图全局,而不是一个标记)。

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

【讨论】:

    猜你喜欢
    • 2016-02-16
    • 2014-09-17
    • 2013-02-13
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2021-06-30
    • 2018-07-01
    相关资源
    最近更新 更多