我有这个javascript函数对LatLng对象进行地理编码:
function geolocate_table(location)
{
geocoder.geocode({'latLng': location}, function(results, status){
if( status == google.maps.GeocoderStatus.OK){
if(results[0])
{
console.log(results[0].formatted_address);
return(results[0].formatted_address);
}
else
return("Non disponibile");
}
else
{
return("jasand");
}
});
}
我的问题是如果我从另一个调用该函数(例如:
)function test(latlng)
{
var street;
street=geolocate_table(latlng);
console.log(street);
}
即使geolocate_table
中的原始值被正确评估并在控制台中记录,测试的控制台日志也会给我“未定义”。
难道我做错了什么?
提前感谢您的答案:)
答案 0 :(得分:0)
您可能希望在此实例中使用回调:
function geolocate_table(location, callback)
{
//do stuff, but for every return you would have
//something like
if (typeof callback == 'undefined') return whatever;
else return callback(whatever);
}
function test(latlng)
{
var street;
street=geolocate_table(latlng, function() { console.log(street); });
}
你这样做是因为地理编码器是异步的 - 它会在等待时继续执行程序的其余部分。通过回调,您可以在完成异步部分后为其提供下一组指令。