函数不从 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
我有一个函数可以从带有谷歌地理编码的地址中获取经纬度。
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.