Клуб API Карт

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

boniole
4 ноября 2013, 18:26

Здравствуйте. 

Входящие данные: массив точок.

Требование: получить "временную таблицу расстояний" (или массив) между набором точек. Как я придумал это сделать: 

 

var options = [
    [39, 40],
    [41, 30],
    [41, 40],
    [39, 30]
];
for(var j = 0, L = options.length; j < L; j++) {
    Reset();
    ymaps.route(options[j], {
        mapStateAutoApply: true,
        avoidTrafficJams: true
    }).then(
        function (router) {
            route = router;
            myMap.geoObjects.add(route);
            //вот тут получаю время допустим можно пихать в массив и тд.
            time = route.getHumanJamsTime();
        },
        function (error) {
            alert('Возникла ошибка: ' + error.message);
        });
};

 

Внимание! Вопрос: есть более гуманный способ узнать время движения между точками или набором точек?

6 комментариев
Подписаться на комментарии к посту

Вы плохо придумали.

Никто не гарантирует, что для каждой пары координат время ответа маршрутизатора будет одним и тем же (например, результат по маршруту  [39, 40] может вернуться позже чем [41, 30]), соответственно в вашем массиве, в который Вы хотите "пихать" время проезда, всё будет перепутано

Да, я это заметил, но смысл не в том. Даже между двумя точками. Только через маршрутизатор возможно получить время?

Да, если точки — сегменты одного маршрута, лучше строить маршрут сразу между всеми (одним запросом) и по каждому сегменту смотреть время отдельно

В том то и дело чтобы правильно построить маршрут мне нужна матрица расстояний, ума не приложу как собрать данные кроме как тупым перебором. Очевидно что сегментами не выйдет.

Опишите вашу задачу подробнее, пока не очень понятно что и зачем

Данные нужны были для :

Маршрутизации с ограничением по времени (VRP with Time Windows, VRPTW)

Вопрос закрыт, данные получил. Безсонная ночь не прошла зря :) Всем спасибо.