函数不从googlemaps地理编码返回位置对象

时间:2017-08-05 13:42:33

标签: javascript google-maps position geocode

我有一个函数可以使用googles geocode从地址获取latLng。

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"在这个函数中的对象我得到了位置,但是当我尝试在其他函数中调用它时,例如下面的那个函数。

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

我收到以下警告: TypeError:undefined不是对象(评估' pos.lat')

pos对象的返回似乎有问题。

1 个答案:

答案 0 :(得分:0)

与geocodezip一样,您的geoCode函数是异步的。这意味着,当您从foo函数调用它时,foo会在从geoCode获取数据之前完成,这会导致您出现undefined错误。您可以做的是将您的geoCode函数包含在Promise中,并使用Google提供的数据解决这个问题。