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();
var 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()

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

Предыдущая
Следующая