javascript-Funktion ist die Rückgabe undefiniert
Ich versuche, die Implementierung von google maps und das problem, das ich habe ist, dass wenn ich die Funktion aufrufen getLatLng, es ist wieder eine Undefinierte Wert und ich kann nicht herausfinden, warum.
initialize();
var map;
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
var address = "Rochester, MN";
var myLatLng = getLatLng(address);
console.log("myLatLng = "+myLatLng);
}
function getLatLng(address) {
var codedAddress;
geocoder.geocode({'address': address}, function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
codedAddress = results[0].geometry.location;
console.log("codedAddress 1 = "+codedAddress);
} else {
alert("There was a problem with the map");
}
console.log("codedAddress 2 = "+codedAddress);
});
console.log("codedAddress 3 = "+codedAddress);
return codedAddress;
}
In der firebug-Konsole, hier ist die Ausgabe, die ich in dieser genauen Reihenfolge:
codedAddress 3 = undefined
myLatLng = undefined
codedAddress 1 = (44.0216306, -92.46989919999999)
codedAddress 2 = (44.0216306, -92.46989919999999)
Warum ist codedAddress 3 und myLatLng zeigt sich zunächst in der Konsole?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, was ich habe zu arbeiten, die über die Google-Maps-Dokumentation:
Hier ein jsFiddle, um ihn in Aktion zu sehen. Natürlich können Sie aktualisieren diese, um jQuery verwenden, wenn Sie benötigen.
geocode
ist asynchron (d.h. es sendet eine Anfrage an den Google-Server), so muss man eine callback-Funktion, diegetLatLng
, anstatt es sofort wieder zurück:var myLatLng = getLatLng(address, callback);
bekomme ich nichts in die Konsole und keine Karte zeigt.var myLatLng = getLatLng(address, function(codedAddress) { /* do something */ });
codedAddress
gehört in der callback (die "etwas tun" Stück). Dies ist, wie die asynchrone Programmierung funktioniert.Du bist fehlt eine schließende
}
für die initialize-Funktion.