0

私は次のコードを持っています:

/*
 * converts a string to geolocation and returns it
 */

function stringToLatLng(string){
    if(typeof string == "string"){
        geocoder = new google.maps.Geocoder();
        geocoder.geocode( { 'address': string}, function(results, status) {
           if (status == google.maps.GeocoderStatus.OK) {
              console.log("LatLng: "+results[0].geometry.location);
              return results[0].geometry.location;
           } else {
              console.log("Geocode was not successful for the following reason: " + status);
           }
        });
   }
}

LatLngはコンソールに正しい場所を出力しますが、これを書くと:

var pos = stringToLatLng('New York');
            console.log(pos);

戻ってundefinedきます。何故ですか?ありがとう

4

2 に答える 2

2

このようなもの:

function stringToLatLng(strloc, callback){
    if(typeof string == "string"){
        geocoder = new google.maps.Geocoder();
        geocoder.geocode( { 'address': strloc}, function(results, status) {
           if (status == google.maps.GeocoderStatus.OK) {
              callback.call({}, results[0].geometry.location);
           } else {
              console.log("Geocode was not successful for the following reason: " + status);
           }
        });
   }
}

stringToLatLng('New York', function(pos){
    console.log(pos);
});

コードでは、戻ると、実際には、stringToLatLng関数ではなく、function(results、status){..}関数から戻っています。これは、コメントで非同期呼び出しであるため、コールバックを使用する必要があります。

于 2012-09-17T22:10:02.930 に答える
0
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();

ref: 住所から緯度と経度の数値へのJavascriptジオコーディングが機能しない

于 2012-09-17T22:17:22.020 に答える