2010-07-23 6 views
2

Je comprends que si je dispose de plusieurs marqueurs sur une carte, et je dois gérer les clics sur eux, je dois mettre en place un gestionnaire pour chaque marqueur comme ceci:Comment créer un seul gestionnaire d'événements pour tous les marqueurs dans Google Maps V3?

// ... 
var marker = new google.maps.Marker({position: new google.maps.LatLng(55, 37)}); 
marker.setMap(map); 
var listener = google.maps.event.addListener(marker, 'click', function(event){ 
    // my listener handler here 
}); 

Mais si j'ai beaucoup de marqueurs, ne serait-il pas trop lourd? Puis-je en quelque sorte définir un gestionnaire et déterminer quel marqueur a été cliqué à l'intérieur?

Répondre

5

Pour ce faire, la façon dont je voulais faire est impossible, c'est vrai. Mais j'ai trouvé un moyen de le faire d'une autre manière, ce qui est beaucoup mieux que d'avoir un gestionnaire pour chaque marqueur. Cela aurait dû être évident pour moi, mais cela n'a pas été le cas:

function markerHandler(event){ 
    window.console.log(this); 
    // 'this' variable is the marker that has been clicked 
} 

var marker = new google.maps.Marker({position: new google.maps.LatLng(55, 37)}); 
marker.setMap(map); 

var listener = google.maps.event.addListener(marker, 'click', markerHandler); 
+1

Ceci est un bon exemple du contexte implicite "this" utilisé lors de l'appel de fonctions en javascript. –

Questions connexes