2017-08-05 64 views
-1

我有一个函数,从谷歌地理代码获取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”对象,但是当我尝试CONSOLE.LOG它例如在发生其他功能如下

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

我的一个得到如下警告: 类型错误:不确定是不是(评估“pos.lat”)的对象

似乎有点毛病POS对象的回报。

+0

地理编码器是异步的,你不能从回调函数返回任何东西 – geocodezip

回答

0

和geocodezip一样,你的geoCode函数是异步的。这意味着当您从foo函数中调用该函数时,foo会在从geoCode获取数据之前完成,这会导致您的undefined错误。你可以做的是将你的geoCode函数包装在承诺中,并用谷歌的数据解决承诺。