Клуб API Карт

Заголовок не указан

Fenham-Asylum
20 октября 2010, 12:25

Здравствуйте!

Как можно при построении маршрута поменять цвет меток транзитных точек?

4 комментария
Подписаться на комментарии к посту
Транзитные точки по умолчанию не добавляются на карту, соответственно,  изначально у них цвета не может быть. Поэтому я трактую ваш вопрос как  "Можно ли добавить на карту метки заданного цвета на места транзитных  точек?".

Это можно сделать. Примерно вот так:

var router = new YMaps.Router([
    'Москва, Арбатская',
    'Москва, метро Китай-Город',
    'Москва, метро Третьяковская'], [1], {viewAutoApply: 1});

router.setStyle("default#redPoint");                                                                                                                                               

YMaps.Events.observe(router, router.Events.Success, function() {
    // Перебираем маршруты
    for (var i = 0, l = router.getNumRoutes(), route; i < l; i++) {
        route = router.getRoute(i);        // Перебираем все транзитные точки
        for (var j = 0, vl = route.getNumViaPoints(), viaPoint; j < vl; j++) {
            viaPoint = route.getViaPoint(j);

            // На места транзитных точек добавляем метки
             map.addOverlay(new  YMaps.Placemark(route.getPoint(viaPoint.getPolylineIndex()), { style :  "default#greenSmallPoint" }));
        }
    }

    map.addOverlay(router);
});

Кратко объясную суть. Маршутизатор оперериует двумя видами точек: точки останова и транзитные.

Точки останова - это расширенные результаты геокодирования, соответственно, они ведут себя как метки.

Тразитные точки - это не метки. В этом можно убедиться, если посмотреть описание в справочнике:
http://api.yandex.ru/maps/jsapi/doc/ref/reference/viapoint.xml

Тразитные точки располагаются в маршруте. И ссылаются на индекс вершины  ломаной маршрута. Соответственно после нахождения нужной вершины, на  этом месте нужно создать метку.

Именно это я и делаю в описанном выше решении. Перебираю доступные  маршруты, которые вернул маршрутизатор (их количество зависит от  количества точек останова), затем в каждом маршруте перебираю транзитные  точки и создаю на их месте маленькие зеленые меточки :)
Постараюсь описать подробнее свою проблему. Код у меня формируется по результатам обработки некоторых данных в 1С, в частности для каждой транзитной точки индивидуально составляется строка для ее подписи. Вот кусочек полученного кода: 
router.getWayPoint(0).setIconContent('Красный Путь, 4');
 point = router.getWayPoint(1).setIconContent(' Бульвар Архитекторов, дом № 7'); 
 point = router.getWayPoint(2).setIconContent(' Ленина ул, дом № 11, кп. 2, кв. 1'); 

Может есть какойто способ "раскрасить" объект Ymaps.WayPoint? В js я новичок :(
Вы имеете ввиду точки останова несложно.
router.getWayPoint(1).setStyle("default#redPoint");

Список всех стандартных стилей можно посмотреть в справочнике:
http://api.yandex.ru/maps/jsapi/doc/ref/reference/styles.xml

Т. к. в ваших точках размещается контент, то метки будут выглядеть как в колонке "Вид значка с содержимым".
Большое спасибо, всё заработало :)