let ol = require('openlayers');
/**
* Класс, предназначенный для управления привязками к объектам
* @class Snap
*/
class Snap {
constructor(params) {
let interaction = new ol.interaction.Snap(params);
this.interaction = interaction;
this.type = "snap";
this.id = params.id || params.layerId;
this.events={};
this.initEvents(params);
}
initEvents(params) {
}
/**
* Подписка на события
* @param eventName
* @param listener
*/
on(eventName, listener) {
let self = this;
let eventStore = self.events;
eventStore[eventName] = listener;
}
/**
* Выключение подписки на событие
* @param eventName
*/
off(eventName) {
let self = this;
let eventStore = self.events;
if (eventStore[eventName]) delete eventStore[eventName];
}
/**
* Инициация события с контекстом
* @param eventName
* @param context
*/
emit(eventName, context) {
let self = this;
let eventStore = self.events;
let listener = eventStore[eventName];
if (listener && typeof listener === "function") {
listener(context);
}
}
}
module.exports = Snap;