2010-07-20 12 views
5

alquanto semplice problema (da spiegare) questa volta:Rimuovere ascoltatori marcatori

ho una serie di marcatori che i equipaggiare con eventlisteners così:

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

Come detto nel commento, voglio semplicemente l'ascoltatore da rimuovere una volta cliccato.

il problema è che non so quale sia l'handle per l'ascoltatore.

+0

non ho notato è stato rimosso il tag 'google-maps', poco prima che ho ri-tag esso. Lo terrei, perché è così che tutte le domande dell'API di Google Maps vengono taggate normalmente. –

risposta

4

È possibile utilizzare il "addListenerOnce". Quindi non devi nemmeno preoccuparti di rimuovere l'ascoltatore.

addListenerOnce (esempio: Object, eventName: string, handler: Function)

Come event.AddListener, ma il gestore si rimuove dopo aver toccato il primo evento.

+0

bello, proprio quello che mi serviva :) – Stjerneklar

+0

Brillante! Grazie! –

0

Sono abbastanza sicuro che in questo caso si utilizzerebbe un array di ascoltatori (o un oggetto che racchiude indicatori e ascoltatori). google.maps.event restituisce un oggetto evento. 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]); 
    }); 
} 

Disclaimer: non ho controllato la sintassi. Puoi anche provare removeListener (markersArray [i]) come ho visto fare, ma non so se funziona.

+0

removeListener (markersArray [i]) non ha funzionato per me quando ho provato ieri, continuava a darmi errori API – Stjerneklar

Problemi correlati