let ol = require('openlayers');
let AbstractOverlay = require('./abstractOverlay');
let Guid = require('./../math/guid');
/**
* Класс Overlay реализует добавление произвольных элементов DOM в заданные координаты
*/
class Overlay extends AbstractOverlay {
constructor(params) {
super(params);
this.create(params);
}
create() {
let self = this;
let params = self.params;
let options = {};
options.id = params.id || Guid.createGUID();
let element = document.getElementById(params.element);
if (!element) element = getDomElement(options.id);
options.element = element;
options.offset = params.offset || [0, 0];
let position = params.position;
if (params.transform) position = ol.proj.transform(position, params.transform.source, params.transform.destination);
options.position = position;
options.positioning = params.positioning || "top-left";
options.stopEvent = params.stopEvent || false;
options.insertFirst = params.insertFirst || true;
options.autoPan = params.autoPan || false;
options.autoPanAnimation = params.autoPanAnimation;
options.autoPanMargin = params.autoPanMargin || 20;
let overlay = new ol.Overlay(options);
self.overlay = overlay;
self.id = options.id;
}
/**
* Установить html содержимое оверлея
* @param html
*/
setHtml(html) {
let self = this;
let overlay = self.getOverlay();
let element = overlay.getElement();
element.innerHTML = html;
}
getOverlay() {
return this.overlay;
}
getId() {
return this.id;
}
}
function getDomElement(guid) {
let element = document.createElement('div');
element.setAttribute("id", guid);
document.body.appendChild(element);
return element;
}
module.exports = Overlay;