2015-03-18 118 views
0

我试过谷歌它,但无法找到一个适用于我的代码。我希望每次有人在地图上按下另一个地方时关闭我的infowindow,或者在另一个地方打开另一个infowindow。谷歌地图api关闭infowindow当点击其他地方

有人可以帮忙吗?

var myLatlng = new google.maps.LatLng(val.coords.split(',')[0].trim(),val.coords.split(',')[1].trim()); 

var infowindow = null; 
     var contentString = '<div id="content">'+ 
    '<div id="siteNotice"> content'+ 
    '</div>'; 


     var infowindow1 = new google.maps.InfoWindow({ 
      content: contentString, 
      maxWidth: 250 
     }); 

     var marker1 = new google.maps.Marker({ 
      position: myLatlng, 
      map: map, 
      icon: image, 
     }); 

     google.maps.event.addListener(marker1, 'click', function() { 
      infowindow1.open(map,marker1); 
     }); 


    }); 
}); 
+0

我一直在试图建立一个jsfiddle来测试我的反应,没有运气。你能发布足够的代码,以便我可以建立一个测试基础(或者更好的是,你建立一个JSfiddle来帮助我们全部了解你的问题,修复它并与世界其他地方分享修复...) – zipzit 2015-03-19 00:01:10

+0

我仍然不能让这个东西加载......但我确实看到你的右括号有问题..你有太多的不匹配。 – zipzit 2015-03-19 00:35:20

+0

[Google地图中的关闭信息窗口是否可以通过单击地图?]进行重复(https://stackoverflow.com/questions/10022873/closing-info-windows-in-google-maps-by-clicking-the-map) – 2017-10-11 08:50:52

回答

2

结帐在JS Fiddle代码我加

google.maps.event.addListener(map, 'click', function(){ 
      infowindow1.close(map, marker1); 
     }); 

显然赶在地图上所有打开的项目,你必须使用一个小循环赶上“时间所有的函数中,但那是我会留给你的。我会添加一个变量来跟踪您创建的数量,然后将“infowindow”+ var_index循环到该最大值,并将其全部关闭。我仍然在寻找一种更好的方法来抓取所有开放的infowindows,但同时这种技术也会起作用。

+0

非常感谢。奇迹般有效。 :) – Peter 2015-03-20 14:59:08

+0

这很好,但如果你有多个标记,你可以点击其中的几个而不关闭原始标记。任何想法如何在侦听器中包含这些其他标记,以便当您打开一个infoWindow并单击另一个时,第一个关闭? – AlmostPitt 2017-09-06 11:37:18