results[0].formatted_address return undefined or null

results[0].formatted_address return undefined or null

本文关键字:return undefined or null address formatted results      更新时间:2023-09-26

我正试图通过一个函数获得地址,我只需要给latLong,但我遇到了一个真正的问题,即保存de value以返回或返回简单的

function getadress(latLong){
  var adress ="";
  geocoder.geocode( {'latLng': latLng},
  function(results, status) {
    if(status == google.maps.GeocoderStatus.OK) {
      if(results[0]) {
        adress = results[0].formatted_address; // wrong way result empty
        alert(results[0].formatted_address); // result perfect adress
        return results[0].formatted_address // result undefiened
      }
      else {
        adress = "No results";
      }
    }
    else {
      adress = status;
    }
  });
  return adress;
}

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);
}