2016-03-03 23 views
-1

評估圈我試圖讓一個按鈕可以打開和關閉多個圓圈(顯示/隱藏可見性)。假設我只有一個html按鈕,並且我已經爲該按鈕添加了一個google.maps.event.addDomListener,我看過很多示例都使用setMap()來確定該圓是否已經存在。Google Map API - 使用getMap()或setMap()

if(circle.setMap() != null){ 
    circle.setMap(null); 
}else{ 
    circle.setMap(map); 
} 

但是,這僅刪除圈,但一旦按鈕被再次點擊將不添加回來。如果圓不爲NULL並且像這樣計算,那麼我將圓設置爲null。這是怎麼回事,第二次點擊按鈕circle.setMap()!= null應該是false,但它只是繼續運行if語句而不是else。

我能夠用的GetMap(解決它)代替..

if(circle.getMap() != null){ 
    circle.setMap(null); 
}else{ 
    circle.setMap(map); 
} 

到底是什麼的GetMap()在做什麼?爲什麼當我在很多例子中看到它時(即使是多段線和矩形)都會得到map()!= null NOT work?

我的第二個問題是,這是否是正確的方法來做到這一點?或者我會更好,只需將填充和描邊不透明度設置爲0?同樣,我通過使用setMap(null)來隱藏circle和setMap(map)來顯示它,我已經完成了上面的操作,地圖如何知道用於重新添加/顯示圓的參數?我問這是我的zindex爲圓圈強制它們在我繪製的一些多段線下方,但是當我隱藏圓圈而不是再次顯示它時,它位於多段線的頂部,但仍然是正確的大小和位置?

謝謝你的任何煽動!

回答

0

getMap()只有當您設置地圖屬性null

如果不設置地圖屬性返回undefined

簡單檢查的getMap()的評估的returnValue到truefalse返回null

if(circle.getMap()){ 
    circle.setMap(null); 
}else{ 
    circle.setMap(map); 
} 

與第2個問題相關:

代替setMap使用setVisible顯示/隱藏形狀:

if(circle.getVisible()){ 
    circle.setVisible(false); 
}else{ 
    circle.setVisible(true); 
} 
+0

哦確定,所以的setMap()對於一個給定圓實際設置的GetMap()的值?爲什麼這麼多的例子使用setMap()而不是getMap()來檢查圓是否已經存在?正如if(setMap()!= nuill){do stuff} – GifCo

+0

我不知道哪些示例使用'setMap'來檢查一個圓是否存在.... setMap'不返回任何內容,所以它不適合檢查任何東西。這只是一個設置方法。 –