tchen-vuelayers
Version:
Web map Vue components with the power of OpenLayers
91 lines (79 loc) • 1.91 kB
JavaScript
/**
* VueLayers
* Web map Vue components with the power of OpenLayers
*
* @package vuelayers
* @author Vladimir Vershinin <ghettovoice@gmail.com>
* @version 0.11.1
* @license MIT
* @copyright (c) 2017-2019, Vladimir Vershinin <ghettovoice@gmail.com>
*/
import Overlay from 'ol/Overlay';
import Vue from 'vue';
import { instanceOf } from '../util/assert';
var methods = {
/**
* @return {IndexedCollectionAdapter}
* @protected
*/
getOverlaysTarget: function getOverlaysTarget() {
throw new Error('Not implemented method');
},
/**
* @param {Overlay|Vue} overlay
* @return {void}
*/
addOverlay: function addOverlay(overlay) {
overlay = overlay instanceof Vue ? overlay.$overlay : overlay;
instanceOf(overlay, Overlay);
if (this.getOverlaysTarget().has(overlay) === false) {
this.getOverlaysTarget().add(overlay);
}
},
/**
* @param {Overlay|Vue} overlay
* @return {void}
*/
removeOverlay: function removeOverlay(overlay) {
overlay = overlay instanceof Vue ? overlay.$overlay : overlay;
if (!overlay) return;
if (this.getOverlaysTarget().has(overlay)) {
this.getOverlaysTarget().remove(overlay);
}
},
/**
* @return {Overlay[]}
*/
getOverlays: function getOverlays() {
return this.getOverlaysTarget().elements;
},
/**
* @param {string|number} id
* @return {Overlay|undefined}
*/
getOverlayById: function getOverlayById(id) {
return this.getOverlaysTarget().findByKey(id);
},
/**
* @return {void}
*/
clearOverlays: function clearOverlays() {
this.getOverlaysTarget().clear();
},
/**
* @returns {Object}
* @protected
*/
getServices: function getServices() {
var vm = this;
return {
get overlaysContainer() {
return vm;
}
};
}
};
var overlaysContainer = {
methods: methods
};
export default overlaysContainer;