Как поместить асинхронную задачу возвращаемых значений в переменные (глобальные?)

Я должен использовать Google (или аналогичные) 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);

}

0 ответов

Другие вопросы по тегам