2016-11-01 2 views
0

ich mit dem Google geocoder die lat und lng zu bekommen, wenn initMap genannt worden war, bekam ich zwei Alarm, ist in erster Wert undefined, und zweitens erhalten die lat Wert, was ist das Problem der undefined Wert zu erhalten und wie löst man das? Ich muss den Wert sofort erhalten.Google map Geocoder

function initMap(){ 
     var addr = '1600 Amphitheatre Parkway, Mountain View, CA'; 
     var code = getLatLng(addr); 
     alert(code.lat); // --> alert_1 
} 

function getLatLng(addr) { 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({'address': addr }, function (results, status) { 
     var lat,lng = 0; 
     if (status == google.maps.GeocoderStatus.OK) { 
       lat = results[0].geometry.location.lat(); 
       lng = results[0].geometry.location.lng(); 
     } 
     alert(lat); // --> alert_2 
     return {lat : lat,lng : lng}; 
    }); 
} 
+0

'lat()' auf '' lat' & lng() 'auf' lng'? –

Antwort

0

Die Funktion geocode ist eine asynchrone Funktion. Daher erhalten Sie undefined für code.lat in der Warnung der initMap-Funktion und den geocodierten Wert in der getLatLng-Funktion. Sie können eine Callback-Funktion auf die Parameter der getLatLng Funktion hinzufügen, um Ihr Problem wie folgt zu lösen:

function initMap() { 
    var addr = '1600 Amphitheatre Parkway, Mountain View, CA'; 
    getLatLng(addr, function(code) { 
    alert(code.lat); 
    }); 
} 

function getLatLng(addr, cb) { 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({'address': addr }, function (results, status) { 
    var lat,lng = 0; 
     if (status == google.maps.GeocoderStatus.OK) { 
     lat = results[0].geometry.location.lat(); 
     lng = results[0].geometry.location.lng(); 
     } 
     cb({lat: lat, lng: lng}); 
    }); 
} 
+0

oh ... Es ruft immer noch einen undefinierten Wert zurück. – Fan

+0

Es ruft einen undefinierten Wert zurück, der einen Fehler bei 'alert (code.lat) verursacht;' kann den 'lat' nicht bekommen – Fan

+0

Ich habe meine Antwort aktualisiert, damit die Callback-Funktion jetzt richtig funktioniert – mrunde