Клуб API Карт

Изменение цвета участков маршрута

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

Такая задачка.

Запросом получаю массив с координатами и запихиваю в маршрутизатор. Он мне конечно номерует все точки с первого по n-ю и соединяет.

Задача: могу ли я через раз менять цвет маршрута?  Другими словами сделать зебру?

 

ymaps.route(JSON.parse('[' + auxArr + ']'), {
    // Опции маршрутизатора
    mapStateAutoApply: true, // автоматически позиционировать карту
    avoidTrafficJams: true,
}).then(function (route) {
    myRoute && myMap.geoObjects.remove(myRoute);
    myMap.geoObjects.add(myRoute = route);
})

 

 

 

5 комментариев
Все это можно сделать "ручками"
В этом примере сегменты маршрута раскрашены в разные цвета
http://ymapsapi.ya.ru/replies.xml?&item_no=1165&ncrnd=5332
Александ Арбузов
28 января 2016, 02:06

Спасибо. Посмотрю. 

Александ Арбузов
28 января 2016, 02:06

Честно говоря, пример сложный. Может быть есть что-то более доступное и приближённое к моей задачи? Или только ручками =) ? 

http://api.yandex.ru/maps/jsbox/router

Вроде как-то так должно будет работать:

for (var i = 0; i < route.getPaths().getLength(); i++) {
  way = route.getPaths().get(i);
  if (i % 2 == 1) {
    way.options.set('strokeColor', '#000000');
  }
  …
}
Александ Арбузов
28 января 2016, 02:06

Супер. Всё работает. Спасибо большое. Сделал так

                ymaps.route(JSON.parse('['+auxArr+']'), {                    // Опции маршрутизатора                    mapStateAutoApply: true, // автоматически позиционировать карту                    avoidTrafficJams: true,                }).then(function (route) {                    myMap.geoObjects.add(myRoute = route);                    for (var i = 0; i < route.getPaths().getLength(); i++) {                      myRoute = route.getPaths().get(i);                      if (i % 2 == 1) {                        myRoute.options.set('strokeColor', '#1c5c97');                      } else {                        myRoute.options.set('strokeColor', '#65971c');                      }                    }                });myRoute && myMap.geoObjects.remove(myRoute);