Клуб API Карт

Выбор короткого маршрута из нескольких

Пост в архиве.
Яковлев Александр
7 декабря 2011, 15:15

Добрый день.
Подскажите как выбрать более короткий маршрут?
Есть массив "съездов с МКАД"

 
rajons[0] = [
        "Балашихинский район",
        [
            [55.81386,37.83981,"по Щелковскому шоссе"],
            [55.77696,37.84325,"по Горьковскому шоссе"],
            [55.74401,37.84233,"по Носовихинскому шоссе"]
        ]
    ];

 

 

пользователь вводит адрес (в $(".adress").val()) и должен получить короткий маршрут от МКАДА

 
 
 
var min=10000000; var r=0; var s=0;
for(var i = 0; i < rajons.length; i++){
    for(var j = 0; j < rajons[i][1].length; j++){
        var router = new YMaps.Router([new YMaps.GeoPoint(rajons[i][1][j][1],rajons[i][1][j][0]), "Московская область "+$(".adress").val()], {avoidTrafficJams: true});
        //alert('!!!');
        YMaps.Events.observe(router, router.Events.Success, function () {
            map.addOverlay(router);
            if (router.getDistance() != undefined){
                console.log(router.getDistance());
                if (router.getDistance() < min){ min = router.getDistance(); r = i; s = j; };
            }
        });
    };
};
 


проблема в том что циклы быстро обходят массив и видимо ответ не получает от Yandex, соответственно дистанция не меняется.
По одному маршруту все работает.
Возможно ли как то приостановить выполнение скрипта до получения ответа от Yandex?
Или как кто по другому?

2 комментария
Яковлев Александр
7 декабря 2011, 17:22

Спасибо, уже решил данную проблему.
  -написал у себя Адрес внутри/за МКАД, расстояние от МКАД

его способ находить кратчайший путь к overlay на самой карте, а не отправлять запросы к Yandex.

Каким образом вы решили проблему скажите пожалуиста