如何为codeAddress函数返回latlon变量。返回latlon不起作用,可能是因为范围,但我不确定如何使其工作。
function codeAddress(addr) {
if (geocoder) {
geocoder.geocode({ 'address': addr}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latlon = results[0].geometry.location.c+","+results[0].geometry.location.b;
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
}
答案 0 :(得分:1)
在外部函数中声明一个变量,在内部函数中设置它并将其返回到外部:
function codeAddress(addr) {
var returnCode = false;
if (geocoder) {
geocoder.geocode({ 'address': addr}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latlon = results[0].geometry.location.c+","+results[0].geometry.location.b;
returnCode = true;
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
return returnCode;
}
注意:这仅在内部功能立即运行时才有效!
答案 1 :(得分:0)
您无法从codeAddress返回geocoder.geocode的结果,因为geocoder.geocode会将其结果返回给您提供的回调/闭包。您必须继续使用作为函数codeAddress的参数给出的回调。
从geocoder.geocode返回geocoder.geocode的回调中返回任何内容对你的应用程序没有任何意义。您必须从您提供给geocoder.geocode的回调中调用应用程序中的某个函数。
API的Geocoding Requests部分对此进行了解释。