События

Введение

Картографическое API карт предоставляет собственный механизм для обработки событий. С помощью данного механизма можно добавить собственные обработчики событий, которые будут срабатывать при смене масштаба карты, клике по определённому объекту на карте, перемещении карты и многих других событиях.

Класс DG.Map

Рассмотрим описание метода карты addEventListener, с которым мы уже могли познакомиться в разделе Карта.

Для наглядности допустим, что myMap — объект карты.

Добавить обработчик события

myMap.addEventListener(objectId, eventType, callback)

Параметры:

Имя Тип Обязательный Описание
objectId String Да DOMElement объекта, к которому прикрепляем обработчик, или его идентификатор.
eventType String Да Тип события. Возможные типы событий перечислены вместе с условием возникновения каждого события в таблице «Тип события — Класс — Условие».
callback Function Да Функция-обработчик, вызываемая при возникновении события определенного типа. Функция вызывается с одним параметром callback(myEvent). Параметр myEvent может быть объектом различных классов. Соответствия между типом события и классом события myEvent перечислены в таблице «Тип события — Класс — Условие». Если на события одного типа назначено несколько функций-обработчиков путем нескольких вызовов myMap.addEventListener, то они вызываются в порядке добавления. При этом если одна из функций-обработчиков вернет true, то остальные функции-обработчики дальше выполняться не будут.

Возвращает:

Тип Описание
DG.Observer Объект, с помощью которого можно управлять обработчиком.

Таблица «Тип события — Класс — Условие»:

Тип события Класс события Условие возникновения
DgDrag DG.Events.Drag Перетаскивание объекта на карте с помощью зажатия левой кнопки мышки.
DgRightDrag DG.Events.Drag Перетаскивание объекта на карте с помощью зажатия правой кнопки мышки.
DgDragStart DG.Events.Mouse Начало перетаскивания объекта на карте с помощью зажатия правой или левой кнопки мышки.
DgDragStop DG.Events.Mouse Остановка перетаскивания объекта на карте с помощью зажатия правой или левой кнопки мышки.
DgMouseMove DG.Events.Mouse Перемещение курсора мышки.
DgMouseOver DG.Events.Mouse Возникает при попадании курсора мыши в область элемента.
DgMouseOut DG.Events.Mouse Возникает при выходе курсора мыши за область элемента.
DgMouseDown DG.Events.Mouse Нажатие левой кнопки мыши.
DgMouseUp DG.Events.Mouse Отпускание левой кнопки мыши.
DgMouseRightDown DG.Events.Mouse Нажатие правой кнопки мыши.
DgMouseRightUp DG.Events.Mouse Отпускание правой кнопки мыши.
DgClick DG.Events.Mouse Клик левой кнопкой мышки.
DgRightClick DG.Events.Mouse Клик правой кнопкой мышки.
DgDoubleClick DG.Events.Mouse Двойной клик левой кнопкой мышки.
DgDoubleRightClick DG.Events.Mouse Двойной клик правой кнопкой мышки.
DgMouseWheel DG.Events.Mouse Прокручивание колёсика мышки.
DgMapMove DG.Events.Map Перетаскивание карты на экране.
DgSettingsChange DG.Events.Map Изменение настроек карты (например, ограничений масштаба карты и установка допустимых границ карты).
DgZoomChange DG.Events.Map Изменение масштаба карты.
DgViewResize DG.Events.Map Изменение размеров контейнера карты (во время изменения размера окна браузера).
DgLayerVisibilityChange DG.Events.Layers Скрытие или отображение слоя на карте.
DgLanguageChange DG.Events.Locale Изменение языка карты.
DgBalloonShow DG.Events.Overlay Отображение балуна.
DgBalloonHide DG.Events.Overlay Скрытие балуна.

Класс DG.Observer мы изучим чуть позже, а пока рассмотрим пример регистрации обработчиков событий.

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

// Инициализация карты:
var myMap = new DG.Map('map1');
myMap.setCenter(new DG.GeoPoint(82.927810142519, 55.028936234826));
myMap.setZoom(10);

// Добавление линейки масштабирования:
myMap.controls.add(new DG.Controls.Zoom());

// Хранилище observer-ов, с помощью которых можно управлять зарегистрированными обработчиками:
var observers = [];

// Регистрация первого обработчика:
var firstCallback = function(evt){
alert('Масштаб: ' + evt.getZoom());
}
observers[0] = myMap.addEventListener(myMap.getContainerId(), 'DgZoomChange', firstCallback);

// Регистрация второго обработчика:
var secondCallback = function(evt){
var centerGeoPoint = evt.getCenter();
alert('Широта: ' + centerGeoPoint.lat + ', Долгота: ' + centerGeoPoint.lon);
}
observers[1] = myMap.addEventListener(myMap.getContainerId(), 'DgZoomChange', secondCallback);

Класс DG.Observer

Позволяет управлять обработчиком. После регистрации обработчика события метод myMap.addEventListener возвращает объект класса DG.Observer. Для наглядности допустим, что myObserver — объект класса DG.Observer.

Методы

Удалить обработчик
myObserver.cleanup()

Удаляет зарегистрированный обработчик.

Деактивировать обработчик
myObserver.disable()

Деактивирует зарегистрированный обработчик.

Активировать обработчик
myObserver.enable()

Активирует зарегистрированный обработчик. По умолчанию обработчик активен и срабатывает при возникновении событий.

Узнать состояние обработчика
myObserver.isEnabled()

Позволяет узнать активен ли обработчик события.

Возвращает:

Тип Описание
Boolean Включен ли обработчик события.

Класс события DG.Events.Drag

Класс объекта, который передается обработчику события. При каких событиях создается объект класса DG.Events.Drag, можно узнать в таблице «Тип события — Класс — Условие».

Для наглядности допустим, что myEvent — объект класса DG.Events.Drag.

Методы

Получить начальную позицию перетаскиваемого объекта
myEvent.getInitialPosition()

Возвращает:

Тип Описание
DG.Point Начальная позиция перетаскиваемого объекта, в координатах x и y.
Получить текущую позицию перетаскиваемого объекта
myEvent.getPoint()

Возвращает:

Тип Описание
DG.Point Позиция перетаскиваемого объекта, в координатах x и y.
Получить смещение перетаскиваемого объекта относительно начальной позиции
myEvent.getDelta()

Возвращает:

Тип Описание
DG.Point Смещение перетаскиваемого объекта относительно начальной позиции в координатах x и y.

Класс события DG.Events.Map

Класс объекта, который передается обработчику события. При каких событиях создается объект класса DG.Events.Map, можно узнать в таблице «Тип события — Класс — Условие».

Для наглядности допустим, что myEvent — объект класса DG.Events.Map.

Методы

Получить координаты центра карты
myEvent.getCenter()

Возвращает:

Тип Описание
DG.Point Текущее географическое положение центра карты.
Получить масштаб карты
myEvent.getZoom()

Возвращает:

Тип Описание
Number Текущий коэффициент масштабирования (zoom) карты.
Получить минимальное значение масштаба
myEvent.getMinZoom()

Возвращает:

Тип Описание
Number Минимальное значение масштаба.
Получить максимальное значение масштаба
myEvent.getMaxZoom()

Возвращает:

Тип Описание
Number Максимальное значение масштаба.
Получить размер контейнера карты
myEvent.getViewportSize()

Возвращает:

Тип Описание
DG.Size Размер контейнера карты.

Класс события DG.Events.Mouse

Класс объекта, который передается обработчику события. При каких событиях создается объект класса DG.Events.Mouse, можно узнать в таблице «Тип события — Класс — Условие».

Для наглядности допустим, что myEvent — объект класса DG.Events.Mouse.

Методы

Получить географическое положение позиции курсора мышки
myEvent.getGeoPoint()

Возвращает:

Тип Описание
DG.GeoPoint Текущее географическое положение позиции курсора мышки.
Получить координаты текущей позиции курсора мышки
myEvent.getPoint()

Возвращает:

Тип Описание
DG.Point Текущая позиция курсора мышки в координатах x и y.
Получить код нажатой кнопки мышки
myEvent.getButton()

Возвращает:

Тип Описание
Number Код кнопки мыши:
0 — событие вызвано не кнопкой;
1 — событие вызвано левой кнопкой;
2 — событие вызвано средней кнопкой;
3 — событие вызвано правой кнопкой.
Проверить нажатие левой кнопки мышки
myEvent.isLeftButton()

Возвращает:

Тип Описание
Boolean true — если пользователь кликнул по левой кнопке мышки, false — в других случаях.
Проверить нажатие правой кнопки мышки
myEvent.isRightButton()

Возвращает:

Тип Описание
Boolean true — если пользователь кликнул по правой кнопке мышки, false — в других случаях.
Проверить нажатие средней кнопки мышки
myEvent.isMiddleButton()

Возвращает:

Тип Описание
Boolean true — если пользователь кликнул по средней кнопке мышки, false — в других случаях.
Получить уровень прокрутки колёсика мышки
myEvent.getDelta()

Возвращает:

Тип Описание
Number Количество пунктов, на которое было прокручено колёсико мышки.

Класс события DG.Events.Layers

Класс объекта, который передается обработчику события. При каких событиях создается объект класса DG.Events.Layers, можно узнать в таблице «Тип события — Класс — Условие».

Для наглядности допустим, что myEvent — объект класса DG.Events.Layers.

Методы

Получить слой, который инициировал событие
myEvent.getLayer()

Возвращает:

Тип Описание
DG.Layers.Common Объект слоя, который инициировал данное событие.

Класс события DG.Events.Locale

Класс объекта, который передается обработчику события.

При каких событиях создается объект класса DG.Events.Locale можно узнать в таблице "Тип события - Класс - Условие".

Для наглядности, допустим myEvent - объект класса DG.Events.Locale.

Методы

Получить объект карты, язык которой был изменён
myEvent.getDgMap()

Возвращает:

Тип Описание
DG.Map Объект карты, язык которой был изменён.
Получить список поддерживаемых языков
myEvent.getLangs()

Возвращает:

Тип Описание
Array Массив с кодами допустимых языков, например: it, ru.
Получить текущий язык карты
myEvent.getLang()

Возвращает:

Тип Описание
String Код текущего языка карты, например: it.