Клуб API Карт

Как задать цвет отдельно каждому маршруту

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

Всем доброго дня!

Есть объект с различными координатами маршрутов, например Санкт-Петербург - Москва, Москва - Нижний-Новгород и тд. (все в координатах).

Есть их номера цветов в объекте, выглядит один item объекта:

{
            "NameGrp":"Москва - Н. Новгород",
            "ColorRgb":"733073",
            "Name":"Москва - Н. Новгород",
            "FromX":37.609218,
            "FromY":55.753559,
            "ToX":44.002672,
            "ToY":56.324117
}

 

Как сделать чтобы при переборе объектов для каждого маршрута выставлялся свой цвет маршрута?

Вариант ниже не позволяет этого сделать, т.к. есть отложенное действие then, которое уже после рисует все маршруты сразу.

 

for (var i = 0,len = items.length; i < len; i++){

maps.route([

                [items[i].FromY,items[i].FromX],

                [items[i].ToY,items[i].ToX]

       ] , {

 

            mapStateAutoApply: true
        }
        ).then(function (router) {
            router.options.set({ strokeColor: items[i].ColoRgb, opacity: 0.7, strokeStyle: 'solid' });
            myMap.geoObjects.add(router);
        }, function (error) {
            alert("Возникла ошибка: " + error.message);
        });

}

 

Чем можно заменить then, чтобы не было отложенным событием, а выполнялось сразу?

 

3 комментария

Заменять ничем не надо.

Надо немного изучить язык на котором Вы пытаетесь писать.

Нетрудно догадаться что "i" в этом выражении

items[i].ColoRgb

всегда будет указывать на последний элемент массива items

Вопрос был не в этом.

Как возможно сопоставить маршрут к цвету.

Спасибо.

 

Также и сопоставляйте, только оберните весь код в замыкание.

Только цвет вроде бы должен быть с решеткой

и выставлять его надо не маршруту а коллекции полилиний:

route.getPaths().options.set({ strokeColor: '#000000', ... });