Клуб API Карт

Не работает кастомизация точек маршрута

zajtsev.lesha2015
19 июня, 20:49

Здравствуйте, пытаюсь построить маршрут как  здесь - https://tech.yandex.ru/maps/jsbox/2.1/router, но проблема в том что часть кода где меняются стили у точек маршрута , а также не работает ф-я route.getPaths() (ошибки не выдает. но и в консоль ничего не выводит) , по стилям не работают именно эти строки: 
         // Задаем стиль метки - иконки будут красного цвета, и
        // их изображения будут растягиваться под контент.
        points.options.set('preset', 'islands#redStretchyIcon');
        // Задаем контент меток в начальной и конечной точках.
        points.get(0).properties.set('iconContent', 'Точка отправления');
        points.get(lastPoint).properties.set('iconContent', 'Точка прибытия');

Точки отказывыются менять цвет, а их содержимое - это текст начального и конечного адресов. Для меня это критично, так как если я определяю начальную точку используя геолокацию, то в итоге получаю начальную точку вообще без какого-либо текста. 
Заранее спасибо

4 комментария
Подписаться на комментарии к посту
Соберите минимальный пример своего кода на jsfiddle
zajtsev.lesha2015
20 июня, 21:29
Стили не применяются к маркерам, вот ссылка на результат
http://savepic.ru/14501939.png
, а это минимальный код который я собрал

https://jsfiddle.net/exLezuL7/3/
zajtsev.lesha2015,
На jsfiddle надо чтобы пример работал и выводил карту.


Нужно подключить АПИ (указать урл АПИ слева в сайдбаре вкладка "External Resources")
Нужно подключить jQuery (Вкладка Javascript, нажать шестеренку, и выбрать нужную версию JQuery в селекте "Frameworks and Extensions")


Пока вангую, что с опцией multiRoute: true вызов ymaps.route возвращает инстанцию  ymaps.MultiRoute в которой нет метода getPaths, вернее он есть у активного маршрута, т.е. route.getActiveRoute().getPaths()

Обновлено 21 июня, 03:56
zajtsev.lesha2015
23 июня, 04:38
dimik,
Спасибо за совет, пришлось повозиться с сегментами, но я таки победил этот маршрут, вот рабочий код кстати:

// строим маршрут от пользователя до ближайшего объекта
ymaps.route([from, to], {
    multiRoute: true,
    mapStateAutoApply: true,
    avoidTrafficJams: trafficJams,
    routingMode: 'auto'

})
.then(route => {
     curRoute = route;
     map.geoObjects.add(route);
     return route;
})
.then(route => {
     for(let i = 0; i < route.getActiveRoute().getPaths().getLength(); i++) {
         let way = route.getActiveRoute().getPaths().get(i),
         segments = way.getSegments(),
         routeList = '<small>Начинаем движение,</br>';
         for(let j = 0; j < segments.getLength(); j++) {
             let currentSegment = segments.get(j),
             street = currentSegment.properties.get('street'),
             action = currentSegment.properties.get('action').text,
             distance = currentSegment.properties.get('distance').text;
             street !== '' ? street = `Двигайтесь по улице <b>${street}</b>, затем:` : '';
         routeList += `${street} ${action}, далее <b>${distance}</b><br>`;

         }
         routeList += 'Приехали.</small>';
         document.getElementById('routeInfo').innerHTML = routeList;
}

});