Клуб API Карт

Суммарное расстояние в маршруте

DMX1988
27 июля 2012, 17:19

Что делаю не так?

 

        function calcFullKM() {

            var way = route.getPaths().get(0);

            var KM = 0;

            segments = way.getSegments();

            for (var i = 0; i < segments.length; i++) {

                KM += segments[i].getLength();

            }

            document.getElementById('fullKm').innerHTML = KM;

        }

 

выводит только сумму между 1 и 2 точкой, но не среди всех 

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

Я на эти грабли уже наступал :)

route.getPaths().get(0);

 

Убрать get(0);

И пройтись по массиву в цикле, в вашем случае берется первый фрагмент пути

        //Расчет общего растояния в маршруте

        function calcFullKM() {

            var way = route.getPaths();

            var KM = 0.0;

            segments = way.getSegments();

            for (var i = 0; i < segments.length; i++) {

                KM += segments[i].getLength();

            }

            document.getElementById('fullKm').innerHTML = Math.round(KM).toString() + " (м)";

            document.getElementById('fullM').innerHTML = Math.round((KM / 1000)).toString() + " (км)";

        }

 Ошибка: Microsoft JScript runtime error: Object doesn't support property or method 'getSegments'

тут: segments = way.getSegments();

Несрабатывает вообще:-(

var way = route.getPaths();

Это уже массив, а не одна линия

т.е.еще один цикл

 

for (var j = 0; j < way.length; j++) {

segments = way[j].getSegments();

 

можно пример, а то туплю уже под конец дня :-(

намудрил уже тут че-то

 

        //Расчет общего растояния в маршруте

        function calcFullKM() {

            var way = route.getPaths;

            var KM = 0.0;

            for (var j = 0; j < way.length; j++) {

                segments = way[j].getSegments();

 

                for (var i = 0; i < segments.length; i++) {

                    KM += segments[i].getLength();

                    //massKm.push(segments[i].getLength());

                }

            }

            document.getElementById('fullKm').innerHTML = Math.round(KM).toString() + " (м)";

            document.getElementById('fullM').innerHTML = Math.round((KM / 1000)).toString() + " (км)";

        }

            var way = route.getPaths; - так в way вернется callback

            var way = route.getPaths(); - нужно так

в остальном, вроде, все ок)

Посмотрите эту статью,

там есть код считающий длину маршрута

спасибо подошло  var distance = Math.round(router.getLength());