Клуб API Карт

Ожидание результата ymaps.route

Яковлев Александр
21 мая 2014, 09:17

Добрый день, всем.

Как можно отследить момент когда route отработала и вернула результат?

 

ymaps.ready(init);// Дождёмся загрузки API и готовности DOM.
var myMap, myPlacemark;

function init () {
var min_path = [], path=0;
//Километры МКАД
var mkad_km = [
[1,37.842762,55.774558], [2,37.842789,55.76522], [3,37.842627,55.755723], [4,37.841828,55.747399], [5,37.841217,55.739103]
];
myMap = new ymaps.Map('map', { center: [55.76, 37.64], zoom: 10 });
//ЦИКЛ ОБХОДА ВСЕХ КМ МКАДА
for (var i = 0; i < mkad_km.length; i++) {
ymaps.route(
[ 'Московский район, г.Истра',[mkad_km[i][2],mkad_km[i][1]] ],
{ mapStateAutoApply: true,multiRoute: true }
).then(function (route) {
min_path[i] = route.getLength(); // Длина маршрута
console.log(min_path);
}, function (error) {
console.log('Возникла ошибка: ' + error.message);
throw error;
}, this);
}
//ВОТ ТУТ нужен результирующий массив расстояний
console.log(min_path);//но он выводит [] пусто
}

 

получается вывод [] а потом уже мссив вырастает значениями

Есть ли у ymaps.route( возможность узнать вернула ли она все результаты?

в дальнейшем этот массив отсортировать и получить самый короткий маршрут

5 комментариев
Подписаться на комментарии к посту
Всеволод Шмыров
21 мая 2014, 09:26
Не нужно кидать весь код в сообщение. Его все равно невозможно прочитать. Массив конечно пустой, так как route - это асинхронная операция. min_path заполняется в функции, которая передается в then. Там же и нужно производить все необходимые операции.
Яковлев Александр
21 мая 2014, 11:07

Спасибо за ответ. С кодом не разобрался как его прятать.

Получается если у меня очень много запросов (построения маршрута и определения расстояния), то это не проблема для сервера Яндекс.

 

 

Это больше проблема для ваших пользователей

зачем нужно делать много запросов?

Яковлев Александр
21 мая 2014, 11:54

потому что нельзя определить маршрут

Московская область, г.Истра - Москва, МКАД

приходится обходить каждый километр(съезд МКАДа) и находить самый короткий

Такой маршрут построить можно, только он будет строится до некого центра МКАДА.

Если вам нужно строить маршрут до ближайшего съезда,

то нужно обрисовать МКАД ломаной, с вершинами на перекрестках МКАДА и при выборе начальной точки, выбирать ближайшую к ней вершину ломаной и строить маршрут между ними, см. метод ломаной getClosest.

Маршрут при этом будет один (один http-запрос)