События
Введение
Картографическое 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 . |