2012-04-05 139 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