结果[0].formatted_address return 未定义或为空
results[0].formatted_address return undefined or null
我正在尝试通过一个函数获取地址,我只需要提供 latLong 但我遇到了一个真正的问题,将 de 值保存到 return 或 return 很简单
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);
}
我正在尝试通过一个函数获取地址,我只需要提供 latLong 但我遇到了一个真正的问题,将 de 值保存到 return 或 return 很简单
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);
}