我必须使用谷歌(或类似的)地理编码 API 来按纬度和经度获取信息(州、国家、地址)。
我用谷歌搜索了很多,我发现了一些有用的代码,但是这段代码将信息放在一个警告框中。
我找到了有关回调函数的提示...
我需要在异步任务之外使用“状态”或“国家”(例如,当我按下按钮时在 HTML 页面中)。
我试图创建一个全局变量(actArea),但是在 navigator.geolocation.getCurrentPosition调用之后,它的值是“ EMPTY ”。我认为这是对的,因为 Async Task 是异步的,但是如何将 Async Task 结果保存到全局变量或类似变量中?
为什么回调不起作用?错误在哪里?
我也尝试过使用setTimeout,但结果相同。
谢谢。
这是我的代码(geodec.js)的一部分:
var x = document.getElementById("destination_div");
var actLatPos = 45.076947;
var actLonPos = 7.614174;
var actArea = 'EMPTY';
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition,showError);
//actArea returns "EMPTY"
alert(actArea);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function retrieveGPSdata(data)
{
actArea=data.results[0].address_components[5].long_name;
//actArea returns "Piemonte"
alert(actArea);
$('#destination_div').text( "Latitude: " + actLatPos + " Longitude: " + actLonPos + " Area: " + actArea);
}
function showPosition(position) {
var richiesta='http://maps.googleapis.com/maps/api/geocode/json?latlng=' + actLatPos + ',' + actLonPos + '&sensor=true';
//setTimeout(function()
//{
$.ajax({ url:richiesta, success:retrieveGPSdata});
//},8000);
}