关闭

2010-06-03 76 views
28

正如标题状态,在给定的事件在谷歌地图API V3任何打开信息窗口(对我来说这恰好是在打开一个新的google.maps.InfoWindow我希望能够关闭任何其它当前打开的信息窗口。现在,我可以打开许多在time..but我想只有1同时打开。关闭

我创建信息窗口动态(即我不知道提前多少会产生的),所以在当前信息窗口的单击事件(这是我希望所有的其他开放那些关闭的)我没有引用任何在其上调用close()。我想知道我怎么能做到这一点其他打开的信息窗口。我不是一个有经验的JavaScript程序员,所以我不知道我是否需要在这里使用反射或类似的东西。

的最好方式是只保存在某种集合中的所有引用,然后依次通过列表关闭它们呢?

谢谢。

回答

64

我遇到了同样的问题,并通过创建一个全球性的信息窗口固定它。

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

然后,我有一个函数来做到的点击收听以下内容:

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

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

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

由于相同的信息窗口每次使用时,你guarantee'd只曾经有一个开放的,它使用更少的资源/内存比创建和销毁,然后多个信息窗口。

0

要做到这一点,我认为最好的办法是......具有你已经打开

我有两个对象的信息窗口对象, 的相关信息都在信息窗口创建和标记包含了所有标志物,他们信息窗口 所以我只是执行这个功能,这个循环的信息窗口对象,然后关闭所有的信息窗口

function CloseInfowindows() { 
    for (var mkey in infos) { 
    var mobj = markers[mkey]; 
    mobj.infowindow.close(); 
    } 
} 
2

信息窗口是局部变量和窗口目前还无法提供 接近的时间()

var latlng = new google.maps.LatLng(-34.397, 150.644); var infowindow 
= null; 

... 

google.maps.event.addListener(marker, 'click', function() { 
    if (infowindow) { 
     infowindow.close(); 
    } 
    infowindow = new google.maps.InfoWindow(); 
    ... }); 
... 

REF:Close all infowindows in Google Maps API v3

1

我决定创建的所有动态创建信息框的数组。当你点击任何第一次旅行的数组,然后你关闭所有打开你只点击一个。

var allInfos = []; 

function closeInfos() { 
     for (i = 0; i < allInfos.length; i++) { 
      allInfos[i].close(); 
     } 
} 

一旦创建了信息框,动态的,你将它添加到阵列中的每个如下:

allInfos.push(infowindow); 
1

你只需要一条线: $(".gm-style-iw").next().click();

有这个类股利, 'gm-style-iw',在infowindow中。之后,有关闭按钮的div。因此,此代码将单击地图中现有的每个infowindow关闭按钮。

+1

您应该解释为什么以及如何解决此问题。有关详细信息,请参见[此处](http://stackoverflow.com/help/how-to-answer)... – jkalden 2017-01-30 12:51:29

+1

在infowindow中有这个类,'gm-style-iw'的div。之后,有关闭按钮的div。所以,这段代码将点击地图中现有的每个infowindow关闭按钮。 – 2017-01-30 13:11:38

+0

它的工作原理,谢谢!并且不需要创建大量的变量 – djdance 2017-10-26 18:36:53