关闭google maps api v3中的所有打开的信息窗口

hhj*_*hhj 28 javascript google-maps google-maps-api-3

正如标题所述,在一个特定的事件上(对我而言,这恰好是在打开一个新的时候google.maps.InfoWindow我希望能够关闭任何其他当前打开的信息窗口.现在,我可以一次打开很多..但我只想要一次打开1次.

我正在动态创建信息窗口(即我不知道会生成多少个),所以在当前信息窗口的click事件中(我希望所有其他打开的窗口关闭)我不知道t引用任何其他要打开的信息窗口close().我想知道如何实现这一目标.我不是一个经验丰富的JavaScript程序员,所以我不知道我是否需要在这里使用反射或类似的东西.

最好的方法是将所有引用保存在某种集合中,然后遍历列表将它们全部关闭?

谢谢.

jam*_*vey 64

我遇到了同样的问题,并通过创建一个全局信息窗口来修复它.

var infowindow = new google.maps.InfoWindow();
Run Code Online (Sandbox Code Playgroud)

然后我有一个函数在click侦听器上执行以下操作:

function getInfoWindowEvent(marker) {
    infowindow.close()
    infowindow.setContent("This is where my HTML content goes.");
    infowindow.open(map, marker);
}
Run Code Online (Sandbox Code Playgroud)

这实现了我认为你正在寻找的b/c现在地图上只有一个信息窗口我只是关闭它,重新加载内容并再次打开给定的标记.


ple*_*xer 8

拥有全球信息,然后改变信息的位置和内容应该足够了.

var infowindow = new google.maps.InfoWindow();

// Call this function to open an infowindow i.e. on click.
function respondToClick(latlng) {
  infowindow.setOptions({
    position: latlng,
    content" "Hello, world"
  });
}
Run Code Online (Sandbox Code Playgroud)

由于每次都使用相同的infowindow,因此您保证只打开一个,并且它比创建然后销毁多个infowindows使用更少的资源/内存.