我试图通过google api v3地理编码功能返回地址的纬度和经度。地理编码工作正常我只是不能将结果设置为我的地理编码obj从函数返回。我怀疑这是一个范围问题
function codeAddress(address) {
var geocoder = new google.maps.Geocoder();
//this is the container var which I will reurn
var geocode={};
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
geocode.success = true;
geocode.position= results[0].geometry.location;
//If I log geocode here I can see the position and success values in the object
} else {
geocode.success=false;
geocode.message="Geocode was not successful for the following reason: " + status;
}
});
//If I log geocode here it's empty
return geocode;
}
任何建议表示赞赏。
答案 0 :(得分:0)
这绝对是一个范围问题。传递给地理编码请求的回调函数是异步执行的。
自谷歌地图以来,访问地理编码服务是异步的 API需要调用外部服务器。出于这个原因,你 需要传递一个回调方法来完成后执行 请求。此回调方法处理结果。
这意味着您的codeAddress
函数将始终返回一个空对象。