Клуб API Карт

Как определить транзитную точку при разбиении маршрута на сегменты?

Пост в архиве.

Делаю маршрут:

...

ymaps.route([
            address_start,
            {
                point: viaPoint,
                type: 'viaPoint'
            },
            address_finish
        ],{

...

затем разбиваю на сегменты

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

...

Как получить доступ или индекс или еще как-нибудь к транзитной точки?

10 комментариев

Поясню, может не правильно выразился. Как получить индекс транзитной точки, чтобы потом обратиться к этой же транзитной точке по индексу уже в массиве сегментов? var segments = way.getSegments();

Это возможно?

Конкретней? Ну попробую потренеровать свой навык телепатии...

Если вы хотите получить виаточку из сегмента, то это сделать нельзя, т.к. сегмент этой информации не содержит. Кстати в новом мультироутере это возможно, там в сегменте прописаны индексы лежащих на нем виаточек.

А в старом роутере вам надо идти с другой стороны. Брать все виаточки, смотреть через методы их интерфейса к какому пути и сегменту они пренадлежат и в соотв. с этим строить логику своего приложения.

Хорошо, я понял, разобрался с этим, но что то данная реализация мне не подошла. А есть возможность вычислить длину маршрута от начальной точки до транзитной?

Просуммировать длины сегментов до сегмента, на котором лежит виаточка. Но максимальная погрешность при этом равна длине последнего сегмента.
Вообще сама задача немного некорректна. В том плане что виаточка не разрывает сегмент. Т.е. это точка мимо которой вам надо проехать без остановки. Кажется вам было бы правильнее использовать путевую точку. Тогда не будет никакой погрешности. И расстояние мехду путевыми точками, это расстояние соотв. пути.

А путевых точек может быть более двух?

Да, может.

А теперь как посчитать длину маршрута?

Ведь getLength() наверняка считает длину маршрута начальной и конечной точки?

Все, разобрался, огромное спасибо за помощь, успехов вам!

Пожалуйста )