Frage an javascript – Rückgabe von Werten aus Callback

0

Ich habe keine Vorkenntnisse in Javascript.

Ich versuche die folgende Funktion zu implementieren, die ich verwenden möchte, um die Werte lat und lng zurückzugeben:

<code>function get_address() {
    var geocoder = new google.maps.Geocoder()

    geocoder.geocode({ address: "SE-17270 Sverige"}, 
    function(locResult) {

    var lat = locResult[0].geometry.location.lat();
    var lng = locResult[0].geometry.location.lng();
    alert(lat);
    alert(lng);
    })
}
</code>

Wie mache ich das?

Also, was ich tun möchte, ist so etwas:

<code>      function get_address(postcode)
      {
        var geocoder = new google.maps.Geocoder()
        var lat
        var lng

        geocoder.geocode({ address: "SE-"+postcode+"Sverige"}, 
        function(locResult) {

            lat = locResult[0].geometry.location.lat();
            lng = locResult[0].geometry.location.lng();
        })
        return lat,lng
      } 
</code>

Deine Antwort

4   die antwort
1

n einem Array zurückgeben:

Methode für globale Variablen:

<code>lat = "";
lng = "";

function get_address() {
    var geocoder = new google.maps.Geocoder()

    geocoder.geocode({ address: "SE-17270 Sverige"}, 
    function(locResult) {

    lat = locResult[0].geometry.location.lat();
    lng = locResult[0].geometry.location.lng();
    alert(lat);
    alert(lng);
    })
}
</code>

Array-Methode:

<code>function get_address() {
    var geocoder = new google.maps.Geocoder()

    geocoder.geocode({ address: "SE-17270 Sverige"}, 
    function(locResult) {

    var lat = locResult[0].geometry.location.lat();
    var lng = locResult[0].geometry.location.lng();

    thearray = [];
    thearray.push(lat);
    thearray.push(lng);
    return thearray;
    })
}
</code>
So,geocoder.geocode ist asynchron, das hilft nicht. Alexander Pavlov
1

Fügen Sie im Kopfbereich die Google-Bibliothek hinzu:

<code><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
</code>

korrigiere Syntaxfehler und starte dann die Funktion:DEMO

CODE (mit jquery onload):

<code>var lat = "";
var lng = "";

function getLatLng(callback) {
    lat = callback.lat();
    lng = callback.lng();
    alert(lat +" "+lng);
}

$(function() {
    var geocoder = new google.maps.Geocoder()

    geocoder.geocode({
        address: "SE-17270 Sverige"
    }, function(locResult) {
        getLatLng(locResult[0].geometry.location);
    });
});
</code>
0

lat undlng externe Rückruffunktion.

geocoder.geocode ist asynchron ... Alexander Pavlov
3

um die Geokodierungsergebnisse zu verarbeiten:

<code>function myCallback(lat, lng) {
  // Process lat and lng.
}

function get_address(callback) {
    var geocoder = new google.maps.Geocoder()

    geocoder.geocode({ address: "SE-17270 Sverige"}, 
      function(locResult) {
          var lat = locResult[0].geometry.location.lat();
          var lng = locResult[0].geometry.location.lng();
          callback(lat, lng);
      }
    );
}
....
get_address(myCallback);
</code>

Verwandte Fragen