Клуб API Карт

Разбить маршрут на сигменты

gunghost
20 июля 2012, 12:10

Еще раз всем привет.

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

Провожу путь так. 

 

ymaps.route(point, {
// Опции маршрутизатора
mapStateAutoApply: true // автоматически позиционировать карту
}).then(function (router) {

route = router;
myMap.geoObjects.add(route);
//Устанавливаем true, Маршрут построен
routeInit = true;
}, function (error) {
alert("Возникла ошибка: " + error.message);
});

  Заранее благодарен.

 

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

это интересная математическая задача. 

учебник по геометрии и вперед!)

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

затем режете на сЕгменты. повороты и развороты также можно просчитывать

:-) нет, вы уже глубще копнули, с этим вроди проблем нет)) пока мне нужно было только с карты координаты получить, взял их из маршутизатора.

Так вот, нашол пример 

 Пример 

По его образу и подобию сделал тоже самое для получения координат, но он делает это только для одного участка пути, тобиш от одного маркера до другого маркера(если не прав поправьте)

Как его для всех то заставить?

ymaps.route(point, {
// Опции маршрутизатора
mapStateAutoApply: true // автоматически позиционировать карту
}).then(function (router) {

route = router;
myMap.geoObjects.add(route);
//Устанавливаем true, Маршрут построен
routeInit = true;
var way = route.getPaths().get(0),
// Маршрут состоит из сегментов. Сегмент - участок маршрута, который нужно проехать
// до следующего изменения направления движения.
segments = way.getSegments(),
moveList = '';
for (var i = 0; i < segments.length; i++) {

moveList += (segments[i].getCoordinates());
}
// Выводим маршрутный лист
$('#list').append(moveList);
}, function (error) {
alert("Возникла ошибка: " + error.message);
}); 

 

 

 

segments[i] - Это очень похоже не геообъект типа Polyline.

так даже есть polylineEndIndex и polylineStartIndex. 

надо как-то вытянуть оттуда координаты

  1. segments[i]: f
    1. _Wb: Object
    2. properties: e
      1. _i: Object
        1. RouterSegmentMetaData: Object
        2. boundedBy: Array[2]
        3. index: 0
        4. polylineEndIndex: 1
        5. polylineStartIndex: 0
        6. __proto__: Object