Wenn ich mich nicht irre, sieht es so aus
geocoder.getLocations
gibt keinen Wert zurück, sondern erwartet in Ihrem Fall eine Callback-Funktion:
function(addresses) {
if(addresses.Status.code == 200) {
return addresses.Placemark[0].address.toString();
}
}
Dieser "innere" Rücksprung wird nicht viel bringen, da er zu den Innenseiten von geocoder.getLocations zurückkehrt.
Die Funktion, die die Zuweisung vornimmt, wird also wahrscheinlich später aufgerufen als die äußere Rückgabe (der Callback und der Status 200 deuten darauf hin, dass es sich um einen langsamen http-Aufruf handelt).
Das heißt, wenn Sie geocoder.getLocations nicht ändern können, wird die Lösung darin bestehen, Ihre Funktion ebenfalls funktional zu machen, etwa so:
function getAddress(latlng, callback) {
if (latlng != null) {
geocoder.getLocations(latlng, function(addresses){
if(addresses.Status.code == 200) {
address = addresses.Placemark[0].address.toString();
alert(address);
//Outputs something :)
callback(address);
}
});
}
}
und Sie werden es mit etwas wie aufrufen:
getAddress(ll, function(address){
alert(address);
});
Und als Bonus können Sie die globale Variable loswerden :-)
0 Stimmen
Diese Frage scheint entweder viel zu einfach oder viel zu schwer zu beantworten zu sein :(
0 Stimmen
Wie ist geocoder.getLocations definiert? Ohne das zu wissen, ist es sehr schwer zu sagen, welche Änderungen Sie vornehmen müssen.
0 Stimmen
Und sollte getAddress(0,0) nicht nur einen Parameter haben? getAddress([0,0])?