---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/llms.txt

# map.action.Manager

Расширяет [IEventEmitter](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IEventEmitter.md).

Менеджер действий карты. Позволяет выполнять сложные движения на карте и гарантирует, что сложные движения не наложатся друг на друга. У каждой карты уже есть собственный менеджер действий, доступный как [Map.action](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Map.md#action). Не создавайте экземпляры этого класса без необходимости.

**См.:** [Map.action](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Map.md#action)

## Конструктор {#constructor}

```javascript
map.action.Manager(map)
```

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `map`[*](*parametr) | — | Тип: [Map](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Map.md)

Карта. ||
|#

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

**Пример:**

```javascript
// Создадим сложное движение: каждые 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 () {
    window.clearInterval(interval);
});
```

## Поля {#fields}

#|
|| **Имя** | **Тип** | **Описание** ||
|| [events](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IEventEmitter.md#events) | entManager](IEventManager.md) | Менеджер событий.

Унаследовано от [IEventEmitter](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IEventEmitter.md#events). ||
|#

## События {#events}

#|
|| **Имя** | **Описание** ||
|| [begin](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#begin) | Событие, возникающее, когда действие началось. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - запущенное действие. ||
|| [break](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#break) | Событие, возникающее при досрочном прекращении шага действия (например, из-за выполнения другого действия или нового шага того же действия). Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - действие. ||
|| [end](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#end) | Событие, возникающее при остановке действия. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - остановленное действие. ||
|| [tick](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#tick) | Событие, возникающее, когда очередной шаг действия начинает исполняться. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - выполняемое в данный момент действие;

• tick - описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction. ||
|| [tickcomplete](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#tickcomplete) | Событие, возникающее при окончании выполнения шага действия. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - выполняемое в данный момент действие;

• tick - описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction. ||
|#

## Методы {#method}

#|
|| **Имя** | **Возвращает** | **Описание** ||
|| [breakTick](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#breakTick)() |  | Прерывает очередной шаг действия. ||
|| [execute](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#execute)([action](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#execute-param-action)) |  | Запускает выполнение действия на карте. Если в этот момент на карте выполняется какое-то другое движение, то оно останавливается (вызывается метод end). Новое движение запускается посредством вызова метода begin. ||
|| [getCurrentState](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#getCurrentState)() | Object | Определяет состояние карты в момент ее плавного движения. ||
|| [getMap](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#getMap)() | [Map](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Map.md) | Returns ссылку на карту. ||
|| [setCorrection](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#setCorrection)([userFunction](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#setCorrection-param-userFunction)) |  | Позволяет устанавливать пользовательские коррекции для сложных движений на карте. По окончанию коррекции необходимо вернуть скорректированные значения. ||
|| [stop](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.action.Manager.md#stop)() |  | Останавливает выполнение действия на карте. ||
|#

## Описание событий {#description-events}

### begin

Событие, возникающее, когда действие началось. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - запущенное действие.

### break

Событие, возникающее при досрочном прекращении шага действия (например, из-за выполнения другого действия или нового шага того же действия). Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - действие.

### end

Событие, возникающее при остановке действия. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - остановленное действие.

### tick

Событие, возникающее, когда очередной шаг действия начинает исполняться. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - выполняемое в данный момент действие;

• tick - описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction.

**Пример:**

```javascript
// Отслеживает все перемещения карты, даже перетаскивание пользователем
// и плавное масштабирование.
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](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• action - выполняемое в данный момент действие;

• tick - описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction.

## Описание методов {#description-methods}

### breakTick

```javascript
{} breakTick()
```

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

### execute

```javascript
{} execute(action)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `action`[*](*parametr) | — | Тип: [IMapAction](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IMapAction.md)

Действие. ||
|#


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

### getCurrentState

```javascript
{Object} getCurrentState()
```

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

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

**Пример:**

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

```javascript
{Map} getMap()
```

**Returns** ссылку на карту.

### setCorrection

```javascript
{} setCorrection(userFunction)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `userFunction`[*](*parametr) | — | Тип: Function

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


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

**Пример:**

```javascript
// Сделаем так, чтобы пользователь не мог перетащить центр карты
// за пределы МКАД.
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

```javascript
{} stop()
```

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

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

