2012-04-05 64 views
26

我正在制作移动网络应用程序。通过单击地图在谷歌地图中关闭信息窗口?

该应用的一部分会丢弃多个标记,可以单击该标记打开信息窗口。如果您继续使用地图而不确认它们,这会让我感到不安,就像在iOS地图应用程序中一样。

有没有办法设置它,以便如果用户单击底层地图,所有打开的信息窗口都关闭了?

回答

31

添加监听器映射的单击事件,并密切InfoBoxes到在其处理

google.maps.event.addListener(map, "click", function(event) { 
    for (var i = 0; i < ibArray.length; i++) { //I assume you have your infoboxes in some array 
     ibArray[i].close(); 
    } 
}); 

我这样做,典型的网站,但看不出有任何理由它不会在移动

+1

也map.addListener(“点击”,函数(事件){...作品 – 2016-12-30 11:08:45

33

工作试试这个:

google.maps.event.addListener(map, "click", function(event) { 
    infowindow.close(); 
}); 

这应该也很简单。

+4

这应该是公认的答案!就像一个魅力! – 2016-05-11 07:10:05

+1

是的,我同意上述 – Pupil 2017-06-16 04:52:20

+0

值得一提的是,这段代码需要放在marker事件监听器函数'google.maps.event.addListener(marker,'click',function(){',因为我花了一段时间试图让它不工作知道它应该在那里,谢谢 – tinyCoder 2018-03-09 19:54:16

5
google.maps.event.addListener(marker, 'click', function() { 
    if(!marker.open){ 
     infoWindow.open(map,marker); 
     marker.open = true; 
    } 
    else{ 
     infoWindow.close(); 
     marker.open = false; 
    } 
    google.maps.event.addListener(map, 'click', function() { 
     infoWindow.close(); 
     marker.open = false; 
    }); 
}); 

完美的作品

+0

这是唯一的答案,除了'infowindow'现在是'infoWindow'。 – 2017-06-16 16:20:20