我有一个函数可以使用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对象的返回似乎有问题。
答案 0 :(得分:0)
与geocodezip一样,您的geoCode
函数是异步的。这意味着,当您从foo
函数调用它时,foo
会在从geoCode
获取数据之前完成,这会导致您出现undefined
错误。您可以做的是将您的geoCode
函数包含在Promise中,并使用Google提供的数据解决这个问题。