control.TrafficControl

Расширяет IControl, ICustomizable.

Панель управления пробками на карте.

Конструктор | Поля | События | Методы

Конструктор

control.TrafficControl([state[, options]])

Параметры:

Параметр Значение по умолчанию Описание
state

Тип: Object

Состояние контрола.

state.providerKey 'traffic#actual'

Тип: String

Ключ провайдера пробок, показываемых на карте.
  • 'traffic#actual' - пробки "сейчас"
  • 'traffic#archive' - пробки "обычно"
state.shown false

Тип: Boolean

Показаны ли данные по пробкам на карте.

options

Тип: Object

Опции контрола.

options.layout

Тип: Function|String

Макет элемента управления. В конструктор макета передается объект, содержащий поля:
  • control - ссылка на элемент управления;
  • options - менеджер опций элемента управления control.TrafficControl.options;
  • data - менеджер данных элемента управления control.TrafficControl.data;
  • state - менеджер состояния элемента управления control.TrafficControl.state.
Макет меняет свой внешний вид на основе данных, состояния и опций элемента управления. Элемент управления, в свою очередь, реагирует на интерфейсные события макета и меняет значения полей control.TrafficControl.state в зависимости от полученных команд. (Тип: конструктор объекта с интерфейсом ITrafficControlLayout или ключ макета).
options.position {top: 5, right: 120}

Тип: Object

Положение элемента управления над картой. Задается в виде объекта со следующими полями:
  • top - отступ от верхнего края контейнера карты в пикселах;
  • right - отступ от правого края контейнера карты в пикселах;
  • bottom - отступ от нижнего края контейнера карты в пикселах;
  • left - отступ от левого края контейнера карты в пикселах.
Если при этом заданы одновременно и top, и bottom, то значение bottom игнорируется. Аналогично, если заданы одновременно и left, и right, то значение right игнорируется. Если элемент управления добавляется в группу элементов (например, в тулбар или раскрывающийся список), то значение position не применяется.
options.visible true

Тип: Boolean

Признак того, что элемент управления отображается.

Примеры:

1.

// Пример 1.
// Добавление на карту элемента управления пробками
// с включенными пробками "сейчас".
var trafficControl = new ymaps.control.TrafficControl({shown: true});
map.controls.add(trafficControl, {top: 10, left: 10});

2.

// Пример 2.
// В примере используется jQuery, загруженный с http://yandex.st/jquery/1.6.4/jquery.min.js
// Добавление на карту пользовательской панели управления пробками.
var MyTrafficControlLayout = ymaps.templateLayoutFactory.createClass("<div id='traffic'>" +
    "<div id='shown'>[if state.shown]hide[else]show[endif]</div>" +
    "[if state.shown]" +
        "<div id='now'>now</div>" +
        "<div id='usually'>usually</div>" +
    "[endif]" +
    "</div>", {
              
    build: function () {
        // Вызываем родительский метод.
        MyTrafficControlLayout.superclass.build.call(this);
        // Запоминаем функции-обработчики, для которых закреплен контекст,
        // чтобы потом от них отписаться.
        this.actualCallback = ymaps.util.bind(this.setActualProvider, this);
        this.archiveCallback = ymaps.util.bind(this.setArchiveProvider, this);
        this.shownCallback = ymaps.util.bind(this.checkShown, this);
        // Подписываемся на клики на элементах панели.
        $('#shown').bind('click', this.shownCallback);
        $('#now').bind('click', this.actualCallback);
        $('#usually').bind('click', this.archiveCallback);
     },
     clear: function () {
         // Отписываемся от событий на элементах панели.
         $('#shown').unbind('click', this.shownCallback);
         $('#now').unbind('click', this.actualCallback);
         $('#usually').unbind('click', this.archiveCallback);
         // Вызываем родительский метод.
         MyTrafficControlLayout.superclass.clear.call(this);
     },
                  
     setActualProvider: function () {
         // Для смены провайдера инициируем событие, описанное в ITrafficControlLayout.
         this.events.fire('providerkeychange', {newProviderKey: 'traffic#actual'});
     },
                  
     setArchiveProvider: function () {
         // Для смены провайдера инициируем событие, описанное в ITrafficControlLayout.
         this.events.fire('providerkeychange', {newProviderKey: 'traffic#archive'});
     },
                  
     checkShown: function () {
         // Проверяем состояние элемента управления,
         // и в зависимости от результата генерируем одно из событий
         // интерфейса ITrafficControlLayout.
         if (this.getData().state.get('shown')) {
             this.events.fire('hide');
         } else {
             this.events.fire('show');
         }
     }
});
var trafficControl = new ymaps.control.TrafficControl({}, {layout: MyTrafficControlLayout});

Поля

Имя Тип Описание
data data.Manager

Данные панели.

events IEventManager

Менеджер событий.

Унаследовано от IEventEmitter.

options IOptionManager

Менеджер опций.

Унаследовано от ICustomizable.

state data.Manager
Состояние панели. Имена полей, доступных через метод data.Manager.get:
  • shown - признак, показан ли на карте провайдер пробок;
  • providerKey - ключ провайдера, который показывает панель. Может принимать значения 'traffic#actual' или 'traffic#archive';
  • expanded - признак, развернута ли панель.

События

Имя Описание
collapse

Панель пробок свернута. Экземпляр класса Event.

expand

Панель пробок развернута. Экземпляр класса Event.

hide

Пробки скрыты. Экземпляр класса Event.

mapchange
Сменилась карта. Поля данных:
  • oldMap - старая карта;
  • newMap - новая карта.

Унаследовано от IChildOnMap.

optionschange

Изменение в опциях объекта.

Унаследовано от ICustomizable.

parentchange

Сменился родительский объект.

Поля данных:

  • oldParent - старый родитель;
  • newParent - новый родитель.

Унаследовано от IChild.

providerkeychange
Сменился ключ провайдера. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • newProviderKey - новое значение ключа провайдера;
  • oldProviderKey - старое значение ключа.
show

Показаны пробки. Экземпляр класса Event.

Методы

Имя Возвращает Описание
collapse()

Свернуть панель пробок.

expand()

Развернуть панель пробок.

getParent()

IControlParent

Returns ссылку на родительский объект.

Унаследован от IControl.

getProvider([key])

ITrafficProvider

Returns экземпляр провайдера пробок.

hide()

Скрыть провайдер пробок с карты.

isExpanded()

Boolean

Returns признак, развернута ли панель.

isShown()

Boolean

Returns признак, показан ли провайдер пробок на карте.

setParent(parent)

IChildOnMap

Устанавливает родительский объект.

Унаследован от IControl.

show()

Показать провайдер пробок на карте.

Описание полей

data

Данные панели.

state

{data.Manager} state
Состояние панели. Имена полей, доступных через метод data.Manager.get:
  • shown - признак, показан ли на карте провайдер пробок;
  • providerKey - ключ провайдера, который показывает панель. Может принимать значения 'traffic#actual' или 'traffic#archive';
  • expanded - признак, развернута ли панель.

Описание событий

collapse

Панель пробок свернута. Экземпляр класса Event.

expand

Панель пробок развернута. Экземпляр класса Event.

hide

Пробки скрыты. Экземпляр класса Event.

providerkeychange

Сменился ключ провайдера. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • newProviderKey - новое значение ключа провайдера;
  • oldProviderKey - старое значение ключа.

show

Показаны пробки. Экземпляр класса Event.

Описание методов

collapse

{} collapse()

Свернуть панель пробок.

expand

{} expand()

Развернуть панель пробок.

getProvider

{ITrafficProvider} getProvider([key])

Returns экземпляр провайдера пробок.

Параметры:

Параметр Значение по умолчанию Описание
key

Тип: String

Ключ провайдера информации о пробках. Список доступных ключей:
  • 'traffic#actual' - провайдер пробок "сейчас";
  • 'traffic#archive' - провайдер пробок "обычно".
Если параметр не передан, возвращается текущий провайдер.

Пример:

// Добавим на карту контрол пробок.
map.controls.add('trafficControl');
// Провайдер пробок "сейчас" при открытии будет показывать слой дорожных событий.
map.controls.get('trafficControl').getProvider('traffic#actual').state.set('infoLayerShown', true);

hide

{} hide()

Скрыть провайдер пробок с карты.

isExpanded

{Boolean} isExpanded()

Returns признак, развернута ли панель.

isShown

{Boolean} isShown()

Returns признак, показан ли провайдер пробок на карте.

show

{} show()

Показать провайдер пробок на карте.