2009-10-09 4 views
81

Comment supprimer l'écouteur d'événement 'bounds_changed' dans Google Maps API v3?API Google Maps v3: comment supprimer un écouteur d'événements?

google.maps.event.removeListener(_???_);  
+1

Je pense avoir trouvé ce que vous recherchez. C'était la 3ème fonction d'événement dans les documents API. –

+1

Je ressens votre douleur. Vous penseriez que cette documentation serait sur http://code.google.com/apis/maps/documentation/javascript/events.html mais ce n'est pas le cas. Grrrr –

Répondre

135

Habituellement, vous pouvez trouver des réponses à ces questions dans la documentation de l'API Google Maps. Comme Andrew l'a dit, addListener renvoie un handle que vous pouvez utiliser plus tard pour supprimer l'écouteur. En effet, un seul événement peut avoir de nombreux écouteurs et pour les supprimer, vous devez enregistrer une référence à chacun des écouteurs attachés.

Il y a aussi une fonction qui supprime tous les auditeurs en même temps:

clearListeners(instance:Object, eventName:string); 
//In your case: 
google.maps.event.clearListeners(map, 'bounds_changed'); 

Here's the Google Maps API reference où vous pouvez lire à ce sujet.

+2

Il en va de ce supprimer seulement l'événement bounds_changed? –

+0

Quel est le pro/con d'utiliser cette méthode vs méthode Andrews? –

+0

Cela supprime tous les auditeurs de l'événement bounds_changed. Bien que la méthode d'Andrew enlève un. Si vous ne voulez pas stocker la poignée quelque part et vous avez seulement à vous soucier de 1 écouteur pour événement donné alors ceci est le chemin à parcourir. –

83

addListener retourne une poignée que vous pouvez ensuite passer à removeListener:

var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() { 

google.maps.event.removeListener(listenerHandle); 
+0

Donc, il n'y a plus de variables statiques pour les auditeurs? –

+0

Les auditeurs doivent être supprimés un par un. Vous ne pouvez pas les dissocier tous ala jQuery. Je sais parce que je pensais la même chose et est devenu confus sur ce point aussi. Je me suis finalement débrouillé et le pseudo-code ci-dessus illustre à peu près comment je l'ai fait. – Andrew

+0

Regardez ma réponse, je pense que c'est une meilleure solution. –

11

Cela semble fonctionner dans la version actuelle.

var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() { 
    // Handler code. 
}); 
listenerHandle.remove(); 
+0

Et la bonne chose au sujet de cette approche est que 'listenerHandler.remove()' travaux pour les auditeurs de la couche de données ainsi - à savoir 'google.maps.data.addListener' - puisqu'il n'y a pas de méthode 'google.maps.data.removeListener' définie. –

+0

Yeap .... https://developers.google.com/maps/documentation/javascript/events#removing –

0

Si on ne pouvait pas tenir l'objet écouteur, vous pouvez supprimer en quelque sorte l'auditeur (s) directement google.maps.event.clearListeners(objectListened, 'event');

Ex: google.maps.event.clearListeners(map, 'bounds_changed');

Questions connexes