Документация
Справочник JavaScript API
2.1.64 (текущая версия)
collection
interactivityModel
Интерфейсы

traffic.provider.Archive

Расширяет ITrafficProvider.

Провайдер архива пробок. Позволяет показывать состояние пробок, типичное для данного региона в конкретный день недели и конкретное время суток.

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

Конструктор

traffic.provider.Archive([options[, state]])

Создает экземпляр провайдера архива пробок.

Параметры:

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

Тип: Object

Опции провайдера. Опции для слоев провайдера задаются через опции глобальной коллекции слоев Map.layers.

  • Опции для картиночного слоя Layer задаются с префиксом 'trafficImage';
  • Опции для картиночного слоя hotspot.Layer задаются с префиксом 'trafficJam';

options.showCurrentTimeFirst true

Тип: Boolean

При первом показе архивных данных выставить время, близкое к текущему.

state

Тип: Object

Состояние провайдера.

state.timestamp

Тип: Number

Время, для которого показываются пробки "обычно". Это время, прошедшее с 00:00 понедельника до требуемого времени в секундах. Должно быть кратно 60 * 15 = 900, так как данные на сервере доступны для моментов времени с разницей в 15 минут. Время задается для нулевого часового пояса (UTC+0).

Пример:

// Создадим провайдер пробок "обычно" и зададим ему timestamp для 17:47 среды
// в нулевом часовом поясе. Обратите внимание, что местное время будет зависеть
// от расположения центра карты.
// К примеру, 17:47 в нулевом часовом поясе будет соответствовать 21:47 в Москве.

// Вычислим значение параметра timestamp для требуемого времени.
var timestamp = 2 * 24 * 60 * 60 + // дважды по 24 часа — это время за понедельник и вторник.
        17 * 60 * 60 + // 17 часов прошло с 00:00 среды.
        45 * 60, // поскольку время должно быть кратно 15 минутам, берем не 47 минут, а 45.
    archiveProvider = new ymaps.traffic.provider.Archive({
        // Запретим при первом открытии выставлять время, близкое к текущему.
        showCurrentTimeFirst: false
    }, {
        // Зададим начальное время самостоятельно.
        timestamp: timestamp
    });
archiveProvider.setMap(map);

// Запретим показ всплывающих подсказок для слоя пробок.
myMap.layers.options.set({
    // Название опции сформировано из опции хотспотного слоя
    // 'openHintOnHover' путем добавления префикса 'trafficJam'.
    trafficJamOpenHintOnHover: false
});

// ...
// Удаление провайдера с карты.
archiveProvider.setMap(null);

Поля

ИмяТипОписание
events IEventManager

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

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

options IOptionManager

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

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

state data.Manager

Состояние провайдера. Имена полей, доступных через метод data.Manager.get:

  • isInited - признак, готов ли провайдер предоставлять данные;
  • timeZone - смещение по времени для текущего временного пояса относительно UTC+0. Измеряется в секундах.;
  • dst - признак перехода на зимнее/летнее время. При dst='dst' время летнее;
  • timestamp - текущее время во временной зоне UTC+0 в секундах;
  • localtime - локальное время, которое возвращает в ответе сервер;
  • level - уровень загруженности дорог в баллах - от 0 до 10.

События

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

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

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

Методы

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

Map|null

Возвращает ссылку на карту.

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

getTime()

Object|null

Возвращает день недели, часы и минуты состояния провайдера с учетом часового пояса и перехода на зимнее/летнее время. То есть то время, которое пользователь видит в элементе управления пробками.

setMap(Reference)
setTime(time[, callback])

Позволяет задавать время для архивного провайдера в минутах, часах и днях недели. Выставляет локальное время только после того, как провайдер инициализирует поля timeZone и dst.

  • timeZone - поле, которое показывает, в каком часовом поясе на данный момент находится центр карты. При перемещении центра карты из одного часового пояса в другой локальное время может изменяться.
  • dst - признак перехода на летнее/зимнее время. При dst='dst' время летнее.
Постоянной составляющей времени для провайдера пробок "обычно" служит поле timestamp, которое отражает текущее время в нулевом часовом поясе (UTC+0). При переходе из одного часового пояса в другой timestamp не изменяется. Значения полей "timestamp", "dst" и "timeZone" можно получить через поле traffic.provider.Archive.state.

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

state

{data.Manager} state

Состояние провайдера. Имена полей, доступных через метод data.Manager.get:

  • isInited - признак, готов ли провайдер предоставлять данные;
  • timeZone - смещение по времени для текущего временного пояса относительно UTC+0. Измеряется в секундах.;
  • dst - признак перехода на зимнее/летнее время. При dst='dst' время летнее;
  • timestamp - текущее время во временной зоне UTC+0 в секундах;
  • localtime - локальное время, которое возвращает в ответе сервер;
  • level - уровень загруженности дорог в баллах - от 0 до 10.

Пример:

var archiveProvider = new ymaps.traffic.provider.Archive();
archiveProvider.setMap(myMap);
archiveProvider.state.events.add('change', function () {
    if (archiveProvider.state.get('isInited')) {
        alert('Провайдер готов предоставлять данные.');
    }
});

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

getTime

{Object|null} getTime()

Возвращает день недели, часы и минуты состояния провайдера с учетом часового пояса и перехода на зимнее/летнее время. То есть то время, которое пользователь видит в элементе управления пробками.

Возвращает объект с полями:

  • dayOfWeek — сокращенное название дня недели ('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun');
  • hours — часы;
  • minutes - минуты.
Если центр карты находится в точке, для которой не удается опеределить часовой пояс, функция возвращает null - если мы не знаем, в каком часовом поясе находимся, мы не можем узнать местное время.

setTime

{} setTime(time[, callback])

Позволяет задавать время для архивного провайдера в минутах, часах и днях недели. Выставляет локальное время только после того, как провайдер инициализирует поля timeZone и dst.

  • timeZone - поле, которое показывает, в каком часовом поясе на данный момент находится центр карты. При перемещении центра карты из одного часового пояса в другой локальное время может изменяться.
  • dst - признак перехода на летнее/зимнее время. При dst='dst' время летнее.
Постоянной составляющей времени для провайдера пробок "обычно" служит поле timestamp, которое отражает текущее время в нулевом часовом поясе (UTC+0). При переходе из одного часового пояса в другой timestamp не изменяется. Значения полей "timestamp", "dst" и "timeZone" можно получить через поле traffic.provider.Archive.state.

Параметры:

ПараметрЗначение по умолчаниюОписание
time *
[no-highlight[

* Обязательный параметр/опция.

]no-highlight]

Тип: Object

Объект с задаваемыми параметрами.

time.dayOfWeek

Тип: String

Сокращенное название дня недели: 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'.

time.hours

Тип: Number

Часы.

time.minutes

Тип: Number

Минуты.

callback

Тип: Function

Функция, которая вызывается после того, как было выставлено время. Принимает на вход хэш с выставленными данными.

* Обязательный параметр/опция.

Пример:

// Создадим элемент управления, который сразу показывает на карте
// провайдер пробок "обычно".
var trafficControl = new ymaps.control.TrafficControl({
        shown: true,
        providerKey: 'traffic#archive'
    });
map.controls.add(trafficControl);
// Как только провайдер получит данные о текущей временной зоне,
// будет выставлено локальное время.
trafficControl.getProvider('traffic#archive').setTime({
    dayOfWeek: 'fri',
    hours: 9,
    minutes: 15
}, function (time) {
    alert('Локальное время ' + time.hours + ':' + time.minutes + ' выставлено!');
});