Ich habe einige Google Maps/Javascript Probleme. Ich denke, ich weiß, was das Problem ist, aber ich kenne keinen Weg.Google Maps Problem: Verschlüsse & Passing durch Referenz
Ein Beispiel für mein Problem ist here. Auf welchen Marker Sie auch klicken, der zweite erscheint. Ich übergebe offensichtlich die falschen Informationen in meinen Ereignis-Listener, aber ich kann einfach nicht scheinen, den Code richtig zu bekommen. Hier ist eine abgespeckte Teil des Codes:
Zuerst, hier ist ein Teil meines Codes:
if (GBrowserIsCompatible() && mapResults != null) {
// Read in the JSON
var mapDetailsArray = loadJSON();
// Create a map
var map = new google.maps.Map2(document.getElementById(elementId));
map.setCenter(new google.maps.LatLng(mapDetailsArray[0].getLatitude(),
mapDetailsArray[0].getLongitude()), 13);
map.addControl(new google.maps.SmallMapControl());
// Add the points and center
var mgr = new google.maps.MarkerManager(map);
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < mapDetailsArray.length; i++) {
var mapDetails = mapDetailsArray[i];
var point = new google.maps.LatLng(mapDetails.getLatitude(), mapDetails
.getLongitude());
bounds.extend(point);
// Create our marker
var marker = new google.maps.Marker(point);
// What action do we use to show the hover
var infoAction = "mouseover";
marker.value = mapDetails;
google.maps.Event.addListener(marker, infoAction, function() {
alert(marker.value);
map.openInfoWindowHtml(point, getResultInfoContent(marker.value));
});
mgr.addMarker(marker, 1);
}
mgr.refresh();
}
„marker.value“ immer endet Satz als letzter Wert dessen, was mapDetails war. Wenn überhaupt, würde ich erwarten, dass es "undefiniert" ist, sobald die Schleife beendet ist, sollte dieser Wert nicht weg sein? Ich habe verschiedene verschiedene Werte ausprobiert (z. B. marker.value = i + 1;), aber es wird immer noch als der gleiche Wert für beide Punkte angezeigt.
Hat jemand eine Idee, wie ich die richtigen Werte in den Event-Listener übergeben kann? diese
, die den Trick tat. Prost Greg. Ich habe sowas schon früher probiert, aber ohne die return function() {...} um den Code zu wickeln. –
Ich habe das gleiche Problem erfahren und dasselbe Problem behoben. Ich glaube, das ist ein Bug in Javascript. – SingleNegationElimination
Ich glaube nicht, dass es ein Fehler ist, es ist einfach nicht sehr intuitiv – Greg