如何使用geocode()

时间:2012-12-13 15:05:25

标签: google-maps-api-3 reverse-geocoding

  

可能重复:
  Reverse Geocode On Google Maps api v3

我想通过使用lat-lang值来查找地址,因为我正在使用新的google.maps.Geocoder()。geocode() 以下是方法的实现

function checkAddress(){
  var address="";
  var amstr = new google.maps.LatLng(37.556179,-122.288219);
  address = getAddress(amstr);
  alert(address);

}

function getAddress(latLng) {
    var geocoder = new google.maps.Geocoder();
        geocoder.geocode( {'latLng': latLng},
        function(results, status) {
         if(status == google.maps.GeocoderStatus.OK) {
          if(results[0]) {            
        return results[0].formatted_address;
          }
          else {
            return "No results";
          }
        }
        else {
          return "not working";
        }
      });
    }

但是在运行上面的代码之后我得到'未定义'作为结果。 请告诉我,我做错了。

由于

1 个答案:

答案 0 :(得分:0)

geocoder.geocode()是异步的。它只会在其余代码完成后的某个时间调用您的回调函数。

您需要在回调中返回值:

function getAddress(latLng, callback) {
    ...
    geocoder.geocode(..., function(...) {
        ...
        callback(someValue);
    });
}