control.TrafficControl
Расширяет IControl, ICustomizable.
Панель управления пробками на карте.
Конструктор
control.TrafficControl([state[, options]])
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: Object Состояние контрола. |
|
'traffic#actual' |
Тип: String Ключ провайдера пробок, показываемых на карте. • 'traffic#archive' - пробки "обычно" |
|
false |
Тип: Boolean Показаны ли данные по пробкам на карте. |
|
— |
Тип: Object Опции контрола. |
|
— |
Тип: Function|String Макет элемента управления. В конструктор макета передается объект, содержащий поля: • options - менеджер опций элемента управления control.TrafficControl.options; • data - менеджер данных элемента управления control.TrafficControl.data; • state - менеджер состояния элемента управления control.TrafficControl.state. Макет меняет свой внешний вид на основе данных, состояния и опций элемента управления. Элемент управления, в свою очередь, реагирует на интерфейсные события макета и меняет значения полей control.TrafficControl.state в зависимости от полученных команд. (Тип: конструктор объекта с интерфейсом ITrafficControlLayout или ключ макета). |
|
{top: 5, right: 120} |
Тип: Object Положение элемента управления над картой. Задается в виде объекта со следующими полями: • right - отступ от правого края контейнера карты в пикселах; • bottom - отступ от нижнего края контейнера карты в пикселах; • left - отступ от левого края контейнера карты в пикселах. Если при этом заданы одновременно и top, и bottom, то значение bottom игнорируется. Аналогично, если заданы одновременно и left, и right, то значение right игнорируется. Если элемент управления добавляется в группу элементов (например, в тулбар или раскрывающийся список), то значение position не применяется. |
|
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});
Поля
Имя |
Тип |
Описание |
Данные панели. |
||
Менеджер событий. Унаследовано от IEventEmitter. |
||
Менеджер опций. Унаследовано от ICustomizable. |
||
Состояние панели. Имена полей, доступных через метод data.Manager.get: • providerKey - ключ провайдера, который показывает панель. Может принимать значения 'traffic#actual' или 'traffic#archive'; • expanded - признак, развернута ли панель. |
События
Имя |
Описание |
Панель пробок свернута. Экземпляр класса Event. |
|
Панель пробок развернута. Экземпляр класса Event. |
|
Пробки скрыты. Экземпляр класса Event. |
|
Сменилась карта. Поля данных: • oldMap - старая карта; • newMap - новая карта. Унаследовано от IChildOnMap. |
|
Изменение в опциях объекта. Унаследовано от ICustomizable. |
|
Сменился родительский объект. Поля данных: • oldParent - старый родитель; • newParent - новый родитель. Унаследовано от IChild. |
|
Сменился ключ провайдера. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • newProviderKey - новое значение ключа провайдера; • oldProviderKey - старое значение ключа. |
|
Показаны пробки. Экземпляр класса Event. |
Методы
Имя |
Возвращает |
Описание |
collapse() |
Свернуть панель пробок. |
|
expand() |
Развернуть панель пробок. |
|
Returns ссылку на родительский объект. Унаследован от IControl. |
||
getProvider([key]) |
Returns экземпляр провайдера пробок. |
|
hide() |
Скрыть провайдер пробок с карты. |
|
Boolean |
Returns признак, развернута ли панель. |
|
isShown() |
Boolean |
Returns признак, показан ли провайдер пробок на карте. |
Устанавливает родительский объект. Унаследован от IControl. |
||
show() |
Показать провайдер пробок на карте. |
Описание полей
data
{data.Manager} 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 экземпляр провайдера пробок.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: String Ключ провайдера информации о пробках. Список доступных ключей: • '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()
Показать провайдер пробок на карте.