单击另一个标记时关闭infowindow

use*_*656 5 javascript google-maps

我有以下代码来打开一个infowindow当一个特定的标记点击它打开一个窗口.当点击另一个时,有谁知道如何关闭以前的信息窗口?

   google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map1, marker);
        });
Run Code Online (Sandbox Code Playgroud)

Nel*_*son 12

只需确保您只infoWindow在全局范围内创建一个,如下所示:

infoWindow = new google.maps.InfoWindow; //static infoWindow for all your markers
google.maps.event.addDomListener(window, 'load', function() {
   //create your markers here
   google.maps.event.addListener(marker, 'click', function() {
               infoWindow.open(map1, marker); //take care with case-sensitiveness
          });
});
Run Code Online (Sandbox Code Playgroud)

更新:

  • 修复Duncan发现的区分大小写.
  • 说明标记点击处理程序必须在标记创建后连接,两者都在页面加载事件内.


Bah*_*eib 7

在您的JS文件中创建一个全局变量,将其命名为lastOpenedInfoWindow或您想要的任何名称,然后在打开新信息窗口之前将其关闭,然后将“ lastOpenedInfoWindow”分配给当前打开的窗口,依此类推

google.maps.event.addListener(marker, 'click', (function(marker, content, infowindow) {
        return function() {
            closeLastOpenedInfoWindow();
            infowindow.setContent(content);
            infowindow.open(map, marker);
            lastOpenedInfoWindow = infowindow;
        };
    })(marker, makrerdata[i], infowindow));
}


function closeLastOpenedInfoWindow() {
    if (lastOpenedInfoWindow) {
        lastOpenedInfoWindow.close();
    }
}
Run Code Online (Sandbox Code Playgroud)