map.action.Manager
Расширяет IEventEmitter.
Менеджер действий карты. Позволяет выполнять сложные движения на карте и гарантирует, что сложные движения не наложатся друг на друга. У каждой карты уже есть собственный менеджер действий, доступный как Map.action. Не создавайте экземпляры этого класса без необходимости.
См.: Map.action
Конструктор
map.action.Manager(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 () {
window.clearInterval(interval);
});
Поля
Имя |
Тип |
Описание |
entManager](IEventManager.md) |
Менеджер событий. Унаследовано от IEventEmitter. |
События
Имя |
Описание |
Событие, возникающее, когда действие началось. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • action - запущенное действие. |
|
Событие, возникающее при досрочном прекращении шага действия (например, из-за выполнения другого действия или нового шага того же действия). Экземпляр класса Event. Имена полей, доступных через метод Event.get: • action - действие. |
|
Событие, возникающее при остановке действия. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • action - остановленное действие. |
|
Событие, возникающее, когда очередной шаг действия начинает исполняться. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • action - выполняемое в данный момент действие; • tick - описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction. |
|
Событие, возникающее при окончании выполнения шага действия. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • action - выполняемое в данный момент действие; • tick - описание шага действия в виде объекта с полями globalPixelCenter, zoom, duration и timingFunction. |
Методы
Имя |
Возвращает |
Описание |
Прерывает очередной шаг действия. |
||
Запускает выполнение действия на карте. Если в этот момент на карте выполняется какое-то другое движение, то оно останавливается (вызывается метод end). Новое движение запускается посредством вызова метода begin. |
||
Object |
Определяет состояние карты в момент ее плавного движения. |
|
getMap() |
Returns ссылку на карту. |
|
Позволяет устанавливать пользовательские коррекции для сложных движений на карте. По окончанию коррекции необходимо вернуть скорректированные значения. |
||
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.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: IMapAction Действие. |
* Обязательный параметр/опция.
getCurrentState
{Object} getCurrentState()
Определяет состояние карты в момент ее плавного движения.
Returns объект с полями: isTicking - выполняется ли сейчас шаг плавного движения; tickProgress - какая часть текущего шага выполнена; zoom - масштаб карты во время текущего шага; globalPixelCenter - центр карты в глобальных пикселях в момент текущего шага.
Пример:
// Логирует текущий центр карты.
// Работает даже во время плавного масштабирования или незавершенного
// перетаскивания карты пользователем.
window.setInterval(function () {
console.log(myMap.action.getCurrentState().center.join(', '));
}, 100);
getMap
{Map} getMap()
Returns ссылку на карту.
setCorrection
{} setCorrection(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()
Останавливает выполнение действия на карте.
Обязательный параметр/опция.