map.action.Manager

Расширяет IEventEmitter.

Менеджер действий карты. Позволяет выполнять сложные движения на карте и гарантирует, что сложные движения не наложатся друг на друга. У каждой карты уже есть собственный менеджер действий, доступный как Map.action. Не создавайте экземпляры этого класса без необходимости.

См.: Map.action

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

Конструктор

map.action.Manager(map)

Параметры:

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

Тип: Map

Карта.

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

Пример:

// Создадим сложное движение: каждые 100 мс центр
// карты будет смещаться на случайную величину.

// Создадим экземпляр сложного движения.
var action = new ymaps.map.action.Continuous();
// Запустим его выполнение на карте.
myMap.action.execute(action);

// Запомним пиксельный центр карты и уровень масштабирования.
var center = myMap.getGlobalPixelCenter(),
    zoom = myMap.getZoom();
// Каждые 100 миллисекунд будем генерировать случайный сдвиг.
var interval = window.setInterval(function () {
    center[0] += Math.round(Math.random() * 100) - 50;
    center[1] += Math.round(Math.random() * 100) - 50;
   // Генерируем новый сдвиг карты.
  action.tick({
        globalPixelCenter: center,
       zoom: zoom
    });
}, 100);

// Как только пользователь сдвинет карту, наше движение
// прекратит выполняться и произойдёт событие end.
var listener = action.events.once('end', function () {
    listener.removeAll();
    window.clearInterval(interval);
});

Поля

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

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

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

События

Имя Описание
begin
Событие, возникающее, когда действие началось. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • action - запущенное действие.
break
Событие, возникающее при досрочном прекращении шага действия (например, из-за выполнения другого действия или нового шага того же действия). Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • action - действие.
end
Событие, возникающее при остановке действия. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • action - остановленное действие.
tick
Событие, возникающее, когда очередной шаг действия начинает исполняться. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • action - выполняемое в данный момент действие;
  • tick – описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction.
tickcomplete
Событие, возникающее при окончании выполнения шага действия. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • action - выполняемое в данный момент действие;
  • tick – описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction.

Методы

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

Прерывает очередной шаг действия.

execute(action)

Запускает выполнение действия на карте. Если в этот момент на карте выполняется какое-то другое движение, то оно останавливается (вызывается метод end). Новое движение запускается посредством вызова метода begin.

getCurrentState()

Object

Определяет состояние карты в момент ее плавного движения.

getMap()

Map

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

setCorrection(userFunction)

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

stop()

Останавливает выполнение действия на карте.

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

begin

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

break

Событие, возникающее при досрочном прекращении шага действия (например, из-за выполнения другого действия или нового шага того же действия). Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • action - действие.

end

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

tick

Событие, возникающее, когда очередной шаг действия начинает исполняться. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • action - выполняемое в данный момент действие;
  • tick – описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction.

Пример:

// Отслеживает все перемещения карты, даже перетаскивание пользователем
// и плавное масштабирование.
myMap.action.events.add('tick', function (e) {
    var tick = e.get('tick');
    console.log('Сейчас карта переместится в точку (' +
        myMap.options.get('projection').fromGlobalPixels(tick.globalPixelCenter, tick.zoom).join(',') +
        ') в течение ' + e.get('tick').duration + ' миллисекунд');
});

tickcomplete

Событие, возникающее при окончании выполнения шага действия. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • action - выполняемое в данный момент действие;
  • tick – описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction.

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

breakTick

{} breakTick()

Прерывает очередной шаг действия.

execute

{} execute(action)

Запускает выполнение действия на карте. Если в этот момент на карте выполняется какое-то другое движение, то оно останавливается (вызывается метод end). Новое движение запускается посредством вызова метода begin.

Параметры:

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

Тип: IMapAction

Действие.

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

getCurrentState

{Object} getCurrentState()

Определяет состояние карты в момент ее плавного движения.

Возвращает объект с полями: isTicking — выполняется ли сейчас шаг плавного движения; tickProgress — какая часть текущего шага выполнена; zoom — масштаб карты во время текущего шага; globalPixelCenter — центр карты в глобальных пикселях в момент текущего шага.

Пример:

// Регистрирует текущий центр карты.
// Работает даже во время плавного масштабирования или незавершенного
// перетаскивания карты пользователем.
window.setInterval(function () {
    console.log(myMap.action.getCurrentState().center.join(', '));
}, 100);

getMap

{Map} getMap()

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

setCorrection

{} setCorrection(userFunction)

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

Параметры:

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

Тип: Function

Пользовательская функция коррекции шагов.

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

Пример:

// Сделаем так, чтобы пользователь не мог перетащить центр карты
// за пределы МКАД.
var mkad = [
    [55.785017, 37.841576],
    [55.861979, 37.765992],
    [55.898533, 37.635961],
    [55.888897, 37.48861],
    [55.83251, 37.395275],
    [55.744789, 37.370248],
    [55.660424, 37.434424],
    [55.5922, 37.526366],
    [55.574019, 37.683167],
    [55.62913, 37.802473],
    [55.712203, 37.837121]
],
mkadPolygon = new ymaps.Polygon([mkad], {}, {
    fillColor: '#FFFF00',
    opacity: .4
});
myMap.geoObjects.add(mkadPolygon);
myMap.action.setCorrection(function (tick) {
    var projection = myMap.options.get('projection'),
        tickCenter = projection.fromGlobalPixels(tick.globalPixelCenter, tick.zoom);
    // Если центр карты не входит в нашу область.
    if (!mkadPolygon.geometry.contains(tickCenter)) {
        tick.globalPixelCenter = projection.toGlobalPixels(
            mkadPolygon.geometry.getClosest(tickCenter).position,
            tick.zoom
        );
        tick.duration = 0;
    }
    return tick;
});

stop

{} stop()

Останавливает выполнение действия на карте.