谷歌地图Api v3地理编码地址,如何返回对象

时间:2015-08-18 13:12:42

标签: javascript google-maps

我试图通过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; 
}

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

这绝对是一个范围问题。传递给地理编码请求的回调函数是异步执行的。

  

自谷歌地图以来,访问地理编码服务是异步的   API需要调用外部服务器。出于这个原因,你   需要传递一个回调方法来完成后执行   请求。此回调方法处理结果。

Source

这意味着您的codeAddress函数将始终返回一个空对象。