Клуб API Карт

Как вернуть результаты геокодирования из функции?

Пост в архиве.

Привет.

Задача: есть функция, которая вызывается если нужно вернуть результаты геокодирования для точки:

 

function geoCodingResults(query) {

var geocoder = new YMaps.Geocoder(query);

YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {

    var geocodeResult = geocoder.get(0);

    var result = geocodeResult.getGeoPoint();

});

}

 


Подскажите, как из этой функции вернуть результат? - var point = geoCodingResults("Москва")

return result; - не дает нужного результата.

Спасибо.

1 комментарий
Александр Новиков
28 января 2016, 07:41
Начнем с того что у вас функция ничего не возвращает... Но в этом примере это не главное... Геокодер работает асинхроно. Т.е. выполнение функции geoCodingResults завершается, а геокодер продолжает работу и только через некоторое время срабатывает обработчик события. Решений проблемы несколько... 1. Использовать глобальную переменую и как-то проверять что в нее записали значение. 2. Все что нужно сделать с получеными координатами делать внутри обработчика. 3. Возможно что-то еще...