2010-04-22 20 views
7

我正在使用Google Maps v3,並且在服務器端構建了位置數據的json集合。因此,當我收到這些信息時,我遍歷該集合併爲它們中的每一個創建一個標記對象。如何在標記中存儲更多信息?

對於這些標記中的每一個,我將它們與click事件綁定,因此當用戶在地圖上單擊標記時,它會顯示一個infoWindow,其中包含與關聯位置相關的數據。

我有一個數組來存儲從服務器獲取的所有位置,該服務器包含檢索到的json對象及其相應的標記。

問題是,即使當我有一個數組可以引用或遍歷時,我不僅需要在用戶點擊它們時獲取標記對象,還需要存儲更多信息的位置對象。

我試圖維護這個對象數組,並從調用對象中引用它而沒有成功,因爲該函數是由標記調用而不是位置對象。所以我想如果有可能在谷歌地圖標記對象中存儲更多信息,如使用通用字段。

如果需要更多信息,請讓我知道。

謝謝!

回答

9

是的,你可以,感謝JavaScript。在這種語言中,對象和哈希表是相同的東西。

這是你如何創造你的標記:

var point = new google.maps.LatLng(40.70, -74.00); 
var myMarker = new google.maps.Marker({ position: point, map: map }); 

這是你怎麼能一個額外的屬性添加到您的myMarker對象:

myMarker.myNewField = 100; 

中提琴!無需保存單獨的相關數據陣列。不需要通用領域。簡單地創造一個新的財產名稱,你很好去。


A Survey of the JavaScript Programming Language由Douglas Crockford的。

+0

這正是我一直在尋找的!非常感謝你! – Sebastian 2010-04-22 01:40:01

+0

我不太確定這是一個好的答案。如果你的myNewField會與谷歌地圖api的屬性相沖突,那麼未來可能會添加? **如果你幸運的話,這是一種黑客行爲,而不是一個乾淨的終極解決方案**。 – TMS 2012-04-10 19:19:02

+0

@Tomas這不是黑客。對象是JavaScript中的hashmaps。 Google Maps API使用hashmap的一些鍵。他們可以在未來的版本中使用其他版本,但堅持特定版本的API應該可以防止這種衝突。 – 2012-04-11 21:16:22