Клуб API Карт

Как узнать длинну маршрута?

forsomeprojects
31 мая 2016, 11:40

Здравствуйте! Недавно начал разбираться с данным API :) Подскажите пожалуйста, как можно получить длинну маршрута из конструктора multiRouter.MultiRoute?

Прикладываю код:

ymaps.ready(init);

function init () {
    var myMap,
        from,
        where;

    $('#show_fmap').bind({
        click: function (e) {
            e.preventDefault();
            
            if (!myMap) {
                var from    = $('#dist-from').val(),
                    where   = $('#dist-where').val(),
                    multiRoute = new ymaps.multiRouter.MultiRoute({
                        referencePoints: [from, where],
                        params: { results: 1 }
                    }, { boundsAutoApply: true });

                myMap = new ymaps.Map('map', {
                    center: [55.75399400, 37.62209300],
                    zoom: 9,
                    controls: ["zoomControl", "trafficControl", "typeSelector", "rulerControl"]
                });
                
                myMap.geoObjects.add(multiRoute);
                console.log(from + ' | ' + where);
            }
            else {
                myMap.destroy();
                myMap = null;
            }
        }
    });
}

Заранее благодарю)

15 комментариев
Подписаться на комментарии к посту
https://tech.yandex.ru/maps/jsbox/2.1/multiroute_data_access
forsomeprojects
31 мая 2016, 14:18
dimik,
что-то ничего не понятно =(
Можно в кратце куда копать?
forsomeprojects,
Там длина маршрута выводится в примере
посмотрите вкладку custom_view.js


"Протяженность маршрута: " + route.properties.get("distance").text
forsomeprojects
1 июня 2016, 10:59
dimik,
 с этим разобрался, и адаптировал под свои нужды, спасибо!
А можно ли как-нибудь, без лишних запросов, получить "разбитый" адрес (отдельно город, отдельно улица и т.д.) и координаты обеих точек.
Прошу прощения за глупые вопросы >_<
forsomeprojects,
 Можно геокодировать обе точки до построения маршрута
forsomeprojects
1 июня 2016, 12:13
dimik,
 А нельзя одним запросом получить и название, и координаты?
forsomeprojects,
Маршрутизатор не возвращает "разбитый" адрес
forsomeprojects
1 июня 2016, 12:39
dimik,
 что-то я не понял как у него получить координаты..
forsomeprojects,
метод getWayPoints у маршрута
forsomeprojects
1 июня 2016, 15:48
dimik,
 не получается получить =( Не видит почему-то этих точек.


var coords = multiRoute.getWayPoints().getLength();
console.log('string: ' + coords);


выводит 0
forsomeprojects,
Очевидно, что оно асинхронное. Надо слушать requestsuccess на модели и тогда точки будут 
http://jsfiddle.net/0p73uacs/
forsomeprojects
1 июня 2016, 17:15
dimik,
 спасибо, оно! Только как получить координаты так и не понял ))
multiRoute.getWayPoints().get(0) - возвращает объект, а как обратиться к координатам - не понятно)
Сейчас посмотрел, там не надо геокодировать, все данные уже есть.
console.log(multiRoute.getWayPoints().get(0).properties.getAll());
forsomeprojects,
Координаты нужно получать через геометрию
multiRoute.getWayPoints().get(0).geometry.getCoordinates()
forsomeprojects
2 июня 2016, 09:31
dimik,
 спасибо огромное! Всё сделал, красота)