2010-07-20 114 views
5

有些簡單的問題(解釋)這個時候:刪除標記聽衆

我有我與事件監聽裝備正是如此標記的數組:

for (i in markersArray) { 
google.maps.event.addListener(markersArray[i], 'click', function() {   
    //stuff it does 
    google.maps.event.removeListener(?????)  //remove self... but HOW?! 
});} 

正如我在評論提到,我只是想聽者一旦被點擊就被移除。

問題是,我不知道監聽器的句柄是什麼。

+0

我沒有注意到你刪除的'谷歌maps'標籤,就在我重新標記它。我會保留它,因爲這就是所有Google Maps API問題正常標記的方式。 – 2010-07-21 07:40:08

回答

4

您可以使用 「addListenerOnce」。那麼你甚至不必費心去除聽衆。

addListenerOnce(例如:對象, eventName的:字符串處理函數:功能)

像event.AddListener,但處理 處理 第一個事件後刪除自身。

+0

不錯的一個,就是我需要的:) – Stjerneklar 2010-07-21 07:34:50

+0

輝煌!謝謝! – 2011-08-17 13:26:25

0

我很肯定在這種情況下,你會使用一個監聽器(或封裝標記和監聽器的對象)的數組。 google.maps.event返回一個事件對象。 Check the documentation

var markersListeners = []; 

for (i in markersArray) 
{ 
    markersListeners[i] = google.maps.event.addListener(markersArray[i], 'click', function() 
    { 
     //stuff it does 
     google.maps.event.removeListener(markersListeners[i]); 
    }); 
} 

免責聲明:我沒有檢查語法。我也可以嘗試removeListener(markersArray [i]),但不知道它是否有效。

+0

removeListener(markersArray [i])在我昨天試過時一直不工作,一直給我api錯誤 – Stjerneklar 2010-07-21 07:35:51