Javascript 结果[0]。格式化的\u地址返回未定义或空

Javascript 结果[0]。格式化的\u地址返回未定义或空,javascript,google-maps,geocode,Javascript,Google Maps,Geocode,我试图通过一个函数获得地址,我只需要给latLong,但我有一个真正的问题,就是保存de值以返回或简单地返回它 函数getAddress(latLong){ var address=“”; geocoder.geocode({'latLng':latLng}, 功能(结果、状态){ if(status==google.maps.GeocoderStatus.OK){ 如果(结果[0]){ adress=results[0]。格式化的_地址;//错误方式结果为空 警报(结果[0]。格式化的_地址

我试图通过一个函数获得地址,我只需要给latLong,但我有一个真正的问题,就是保存de值以返回或简单地返回它

函数getAddress(latLong){
var address=“”;
geocoder.geocode({'latLng':latLng},
功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
如果(结果[0]){
adress=results[0]。格式化的_地址;//错误方式结果为空
警报(结果[0]。格式化的_地址);//结果完美地址
返回结果[0]。格式化的\u地址//结果未定义
}
否则{
地址=“无结果”;
}
}
否则{
地址=状态;
}
});
返回地址;

}
Javascript是异步的,如果以这种方式编写,返回的地址将始终为空。以下是当前代码的执行顺序:

function getadress(latLng){

  var adress =""; // (1) Sets address as empty.

  geocoder.geocode( {'latLng': latLng}, // (2) Launches the geocoding request.
      function(results, status) { // (4) later, when the result gets back, populates the address.
          adress = results[0].formatted_address;
      });
  });

  return adress; // (3) Immediately returns an empty address.
}
您应该如何构建它:

function getadress(latLng){

  var adress =""; // (1) Sets address as empty.

  geocoder.geocode( {'latLng': latLng}, // (2) Launches the geocoding request.
      function(results, status) { // (3) later, when the result gets back, populates the address.
          adress = results[0].formatted_address;
          nextStep(address);
      });
  });
}

function nextStep(address){ // (4) should log the address
   console.log(address);
}

地理编码器是异步的。无法从异步回调返回任何内容。您需要在回调函数中使用响应,该响应在何时何地可用work@geocodezip这正是OP所做的。他们在回调
函数(结果、状态)
中利用地理编码的结果@Alberto您的变量
latLong
-->
latLng
中有一个输入错误,
返回结果[0]。格式化的\u地址
在回调函数中。是这样吗?这不是应该的吗?编辑:好的,我明白你的意思。实际上,您不能从回调函数返回任何内容。完美完成;)tk太多了-jeremy:DGlad我可以帮忙,请接受答案,这样我可以得到一些代表:)这也可以“下一步(结果[0]。格式化的地址);”