我有一个函数,在外部.js文件中,该文件应该接收地址字符串然后返回纬度和经度。它什么都不返回。有人可以帮忙吗?
我也想问;在javascript中,当你从另一个函数中调用异步函数时;一旦外部函数终止,异步函数会终止吗?
这是代码,任何人都可以解释为什么这不返回任何东西?感谢。
function FindLatLong(address)
{
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
return { Status: "OK", Latitude: lat, Longitude: lng };
}
});
}
(我当然包括google maps js lib)
我基本上没有从地理编码器得到一个好的结果;如果我不把它放在FindLatLong函数中,相同的代码工作,而只是将它嵌入到我调用FindLatLong的地方,即上面的代码放入FindLatLong函数时不起作用,但如果我将它用作调用javascript的一部分,则有效码。函数确实被调用,Geocoder()确实被调用,但是没有返回'OK'结果,实际上没有重新生成结果,甚至没有来自谷歌的错误。
地址字符串是“伦敦,英国”
答案 0 :(得分:2)
该方法是异步的,因此请使用回调!
function FindLatLong(address, callback)
{
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
callback({ Status: "OK", Latitude: lat, Longitude: lng });
}
});
}
并调用函数:
FindLatLong(address, function(data) {
console.log(data);
});