Mein Projekt verwendet einen JSON-Feed, um Informationen über Erdbeben innerhalb einer bestimmten Längen- und Breitengren- ze zu sammeln. Ich nehme diese Informationen und wandle alle Ergebnisse in Markierungen auf einer Google-Karte um. Ich brauche jeden Marker, um auch einige zusätzliche Informationen anzuzeigen, also versuche ich, die eingebauten InfoWindow-Objekte so zu verwenden, dass wenn Sie auf einen Marker klicken, Sie den Tooltip mit einigen Informationen öffnen, die diesem Marker zugeordnet sind. Ich finde jedoch, dass egal welcher Marker ich anklicke, das gleiche Infowindow immer über dem gleichen Marker dieser Gruppe erscheint, und ich glaube, es ist immer das letzte Infowindow, das in meinem Loop erstellt wurde. Hier ist der Code.Der Versuch, mehrere InfoWindows mit mehreren Markern auf einer Google Map zu verbinden und fehlzuschlagen
$.getJSON(url, function(json) {
for(var i = 0; i < json.earthquakes.length; i++)
{
var pos = new google.maps.LatLng(json.earthquakes[i].lat, json.earthquakes[i].lng);
var info = json.earthquakes[i].lat + ", " + json.earthquakes[i].lng;
var marker = new google.maps.Marker({
map: map,
position: pos,
title: json.earthquakes[i].eqid
})
var tooltip = new google.maps.InfoWindow({
content: info
})
google.maps.event.addListener(marker, 'click', function() {
tooltip.open(map, marker);
});
markers.push(marker);
tooltips.push(tooltip);
}
});
Marker ist ein Array für die alle Marker Objekte auf der Karte und tooltips ist eine weitere Array für die Infofenster Objekte speichern. Sie sind global.
Dies ist darauf zurückzuführen, wie Verschlüsse Arbeit (Marker unter Bezugnahme auf die Schließung geführt wird, was würden Sie wollen, ist eine Kopie). Aber wenn der Listener aufgerufen wird, bezieht sich "this" auf das Objekt (Marker), dem der Listener hinzugefügt wurde, also können Sie 'this' anstelle von' marker' verwenden. – herman