2012-08-14 56 views
2

我知道有很多方法可以處理谷歌地圖標記的點擊事件,我一直在使用這些方法,並且他們總是很好地工作。如何避免使用標記點擊事件監聽器的匿名回調函數?

但是,只是好奇,如果我們可以用更好的方式做同樣的事情,我在想這個,因爲在一個新項目中可能會有100,000個標記(當然它們不會顯示在地圖上同時,但標記的實例確實存在)

google.maps.event.addListener(marker,'click',clickhandler); 函數clickhandler(事件){/ * HERE * /}

在clickhandler的範圍中,我們只有latLng信息,找到點擊標記的最佳方法是什麼?

回答

1

當我試圖從一個組元素(比如說具有相同類的元素)中引用一個元素時,使用this可以幫助找到觸發事件的正確元素。只是爲了確保this將工作,我檢查console.log

google.maps.event.addListener(marker, 'click', clickhandler); function clickhandler() { console.log(this); }

這應該記錄標記對象。

+0

謝謝倦怠,它真的幫了我很多,「本」就是標誌! – agou 2012-08-14 07:31:59

2

上標記的鼠標點擊事件傳遞一個google.maps.MouseEvent object給聽者的功能,因此:

// give the maker an id 
marker.myId = 25; 
google.maps.event.addListener(marker, 'click', clickhandler); 

function clickhandler(mev) { 
    alert(mev.latLng); 
    alert(this.myId);// shows 25 
} 
+0

謝謝Marcelo,這非常有幫助! – agou 2012-08-14 07:34:18

+0

不客氣。隨意投票有用的答案。 ;-) – Marcelo 2012-08-14 07:58:18

+0

我試過了,但是......當我滿足投票的最低要求時我會回來的:-S,哈哈^ _ ^ – agou 2012-08-14 10:46:59