函数不从 googlemaps geocode 返回位置对象

Function not returning position object from googlemaps geocode

我有一个函数可以从带有谷歌地理编码的地址中获取经纬度。

function geoCode(address){
    var geocoder = new google.maps.Geocoder;
    geocoder.geocode({'address': address}, function(results, status) {
      if (status === 'OK') {
        var pos = {
            lat:results[0].geometry.location.lat(),
            lng:results[0].geometry.location.lng()
        };
        return pos;
      } else {
        alert('Geocode was not successful for the following reason: ' + status);
      }
    });
}

当我在这个函数中控制台记录 "pos" 对象时,我得到了位置,但是当我尝试在另一个函数中 console.log 它时,例如下面的

function foo(){
    var pos = geoCode(place);
    console.log(pos.lat);
}

我收到以下警报: TypeError: undefined 不是对象(正在计算 'pos.lat')

pos 对象的 return 似乎有问题。

就像 geocodezip 所说的那样,您的 geoCode 函数是异步的。这意味着当您从 foo 函数调用它时,foo 在它从 geoCode 获取数据之前完成,这就是给您带来 undefined 错误的原因。您可以做的是将 geoCode 函数包装在一个 Promise 中,并使用来自 google.

的数据解析该 promise