Показать сообщение отдельно
  #2 (permalink)  
Старый 09.03.2013, 19:45
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

С асинхронностью схема работы другая. Допустим у нас все работает синхронно. Мы делаем так:

var strAddr=GetAddress([lat,lon]);
alert(strAddr);// используем полученные данные


Однако у нас функция асинхронная, так что получается так:

function processAddress(strAddr) {
    alert(strAddr); // используем полученные данные
}
//Функция получения адреса по заданным координатам
function getAddress(coords, callback){
    ymaps.ready(function () { //Если API готов
        // Отправим запрос на геокодирование
        ymaps.geocode(coords).then(function (res) {
        var names = [];
            // Переберём все найденные результаты и
            // запишем имена найденный объектов в массив names
            res.geoObjects.each(function (obj) {
            names.push(obj.properties.get('name'));
            });
            /*
            Тут я могу получить адрес после успешного геокодирования
            */
            callback(names);
        });
    });
}

getAddress([lat,lon], processAddress);
Ответить с цитированием