Der folgende Code führt eine Schleife über ein Json-Objekt, um eine Markierung auf einer Google-Karte zu platzieren. Was gut funktioniert.Gibt es eine Möglichkeit zu identifizieren, auf welchen Google Map Marker geklickt wurde?
function displayMarkers(data){
for(var i = 0; i < data.Lat.length; i++){
var point = new GLatLng(data.Lat[i],data.Lng[i]);
marker = new GMarker(point);
map.addOverlay(marker);
// here's the problem
GEvent.addListener(marker, "click", function(){
alert(data.Name[i]);
});
}
}
Das Problem ist, jeder Marker antwortet immer mit dem letzten Wert von "i". Ich hänge daran, einen Weg zu finden, den Marker zu identifizieren, auf den geklickt wurde, um irgendwie die richtigen Informationen aus dem Datenobjekt zu bekommen.
Ich denke darüber nach, ein Array von Markern bei der Erstellung zu erstellen, um basierend auf dem Marker-Ort zu durchlaufen, aber das fühlt sich für mich wirklich ineffizient an.
Jede Hilfe, wie immer, sehr geschätzt.
Ah, Sie haben völlig Recht. Das Problem besteht darin, dass wir den Listener zum Marker und nicht zur Karte hinzufügen. Wenn Sie den Listener zur Karte hinzufügen, funktioniert er wie erwartet - und Sie müssen den Listener nur einmal hinzufügen. –
Cool, danke dafür. – gargantuan