關閉

2010-06-03 34 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