2015-03-18 166 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