Клуб API Карт

Вопрос о пересечение маршрута с полигоном

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

Есть пример в песочнице "Пересечение маршрута с многоугольником на примере МКАД" . Пытаюсь сделать тоже самое для мульти маршрута. 

Пытаюсь следующим образом:

мультимаршрут  -  

     var myMultiRoute = new ymaps.multiRouter.MultiRoute([cor - x, cor - y])

Пытаюсь передать текущий маршрут

var activeRoute = myMultiRoute.getActiveRoute();

Обрабатываю

   activeRoute .then(
            function (res) { и далее как в песочнице...

Ошибка

activeRoute.then is not a function

 

Если строить таким же образом не мульти, а обычный маршрут, то ошибки не возникает. 

4 комментария
Активный маршрут не имеет метода then. Там в MultiRoute надо на события подписываться и обращаться за активным маршрутом когда произошёл requestsuccess 
 Пробую так. Но активный маршрут не получаю, хотя при этом Paths() перебирается... Сегменты далее тоже не могу получить. 


myMultiRoute.model.events.add("requestsuccess", function () {
console.log(myMultiRoute.getActiveRoute());
В логе - n {model: s, geometry: null, properties: h, state: h, options: Object…}
myMultiRoute.getActiveRoute().getPaths().each(function (path) {
console.log('path data:', path.properties.getAll());
В логе - Object {index: 0, type: "driving", distance: Object, duration: Object, durationInTraffic: Object…}
});});




 Вообще задача - построить калькулятор в котором 3 зоны доставки + все что далее исходя из расчета километража.  Был подобный калькулятор на 2.0 , но по проще, делал его давно и все уже забыл( Расчет нужен именно по мультимаршруту т.к. нужна обстановка дорожная и расчет по городу для курьера на автомобиле и пешего. За пределами легковой авто \ грузовой. 


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





Григорий,
собери пример на jsfiddle
Разобрался, у меня итак выбирался активный маршрут т.е. вызывать его не надо было.  А с сегментами я затупил с перебором из 2.0, поправил, сегменты замечательно перебираются. (пока повесил прослушивание так)


myMultiRoute.events.add(['activeroutechange', 'update'],function () {



myMultiRoute.getActiveRoute().getPaths().each(function (path) {
console.log('path data:', path.properties.getAll());
path.getSegments().each(function (segment) {
console.log('segment data:', segment.properties.getAll());
});

});


....
Обновлено 30 ноября 2016, 20:59