Клуб API Карт

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

lexis.ua
6 марта 2015, 09:58

Здравствуйте. Подскажите, пожалуйста, как быть в данной ситуации?

 Как правильно передать дескриптор пути мультимаршрута в функцию setActiveRoute?

multiRoute.model.events.add("requestsuccess", function (event) {
        var routes = event.get("target").getRoutes();
        for (var i = 0, l = routes.length; i < l; i++) {
       multiRoute.setActiveRoute(routes[0].multiRoute);
        }
    }

 

4 комментария
Подписаться на комментарии к посту
Не понятен смысл задания в цикле маршуртов в кач-ве активных, т.к. активным может быть только один маршрут.Но примерно так: 
multiRoute.model.events.add("requestsuccess", function (event) {
        var routes = multiRoute.getRoutes();
        for (var i = 0, l = routes.getLength(); i < l; i++) {
       multiRoute.setActiveRoute(routes.get(i));
        }
    }
Т.е. в setActiveRoute мультимаршрута нужно задавать маршрут, а не его модель. А событие вы слушаете на модели и target у этого события - корневая модель.

Смысла в этом нет. Участок рабочего кода, в котором выполняются различные вещи, но конкретно этот метод(в вашем примере тоже) вылетает с ошибкой. Да, слушаю у модели т.к. не знаю как получить дескриптор именно данного маршрута модели? Это возможно?

Не понял вопрос. Данного, это какого?

Активные маршруты существуют только на уровне отображений, коими являются классы мультимаршрута, маршурта, пути и т.д. У них есть соотв. модели. Для одной модели в принципе может быть несколько отображений. И у каждого отображения может быть свой активный маршрут в определенный момент времени.
Интерфес работы с активными маршрутами это методы setActiveRoute, getActiveRoute и событие activeroutechange у класса multiRouter.MultiRoute. Также в этом классе есть метод getRoutes(), возвращающий коллекцию всех маршрутов мультимаршрута. Любой из них можно получить из коллеции с помощью метода .get(index) и задать в метод setActiveRoute, тем самым сделав этот маршрут активным.

Спасибо.