Wie asynchroner Request in Funktion verwenden
Hallo,
ich nutze den Geocoder von Google um die Koordinaten zu einer Adresse zu erhalten. Der Request erfolgt dabei asynchron. Ich will aber eine Funktion erstellen, der ich die Adresse übergebe und als Antwort dir dazugehörigen Koordinaten erhalten. Hat jemand einen Tipp dafür?
So weit bin ich bis jetzt:
[code]
function KoordinatenInAdresseUmwandeln(adresse) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': adresse }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
koordinaten = new google.maps.LatLng(results.geometry.location.lat(), results.geometry.location.lng());
}
else
alert('error: ' + status);
});
return "noch nichts";
}
[/code]
ich nutze den Geocoder von Google um die Koordinaten zu einer Adresse zu erhalten. Der Request erfolgt dabei asynchron. Ich will aber eine Funktion erstellen, der ich die Adresse übergebe und als Antwort dir dazugehörigen Koordinaten erhalten. Hat jemand einen Tipp dafür?
So weit bin ich bis jetzt:
[code]
function KoordinatenInAdresseUmwandeln(adresse) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': adresse }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
koordinaten = new google.maps.LatLng(results.geometry.location.lat(), results.geometry.location.lng());
}
else
alert('error: ' + status);
});
return "noch nichts";
}
[/code]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 217247
Url: https://administrator.de/contentid/217247
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
2 Kommentare
Neuester Kommentar
Hi mabue88,
Du versuchst hier aus dem asynchronen Schema auszubrechen.
Im Normalfall würde man der function einfach das Ziel des Ergebnisses mitteilen, z.B. die ID des DOM - Elements
und in der Ergebnisfunktion "function (results, status) {" das Element suchen und den Wert setzen.
Dann bleibt alles schön asynchron und die Funktion selbst hat keine Rückgabe.
Wenn man jedoch auf die Ausführung warten muss, kann man sich mal unter dem Stichwort "Deferred" bei jQuery schlau machen.
Grüße vom Nobody
Du versuchst hier aus dem asynchronen Schema auszubrechen.
Im Normalfall würde man der function einfach das Ziel des Ergebnisses mitteilen, z.B. die ID des DOM - Elements
und in der Ergebnisfunktion "function (results, status) {" das Element suchen und den Wert setzen.
Dann bleibt alles schön asynchron und die Funktion selbst hat keine Rückgabe.
Wenn man jedoch auf die Ausführung warten muss, kann man sich mal unter dem Stichwort "Deferred" bei jQuery schlau machen.
Grüße vom Nobody
Hallo mabue88,
du könntest deine "Function" so gestalten um sie an mehreren Stellen in deinem Code zu verwenden:
Um dann die Koordinaten abzufragen benutzt du folgenden Aufruf welchen du in dein synchrones Schema einbauen kannst.
Grüße Uwe
du könntest deine "Function" so gestalten um sie an mehreren Stellen in deinem Code zu verwenden:
getCoords = function(adresse, f){
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': adresse }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
koordinaten = new google.maps.LatLng(results.geometry.location.lat(), results.geometry.location.lng());
f("OK",koordinaten);
} else {
f("ERROR",status);
}
});
}
getCoords("Berlin", function(status,result) {
if (status == "OK"){
// die variable 'result' enthält hier die Koordinaten
}else{
// die Variable 'result' enthält hier den Fehler;
}
});
Grüße Uwe