tchen-vuelayers
Version:
Web map Vue components with the power of OpenLayers
91 lines (79 loc) • 1.83 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 BaseLayer from 'ol/layer/Base';
import Vue from 'vue';
import { instanceOf } from '../util/assert';
var methods = {
/**
* @return {IndexedCollectionAdapter}
* @protected
*/
getLayersTarget: function getLayersTarget() {
throw new Error('Not implemented method');
},
/**
* @param {Layer|Vue} layer
* @return {void}
*/
addLayer: function addLayer(layer) {
layer = layer instanceof Vue ? layer.$layer : layer;
instanceOf(layer, BaseLayer);
if (this.getLayersTarget().has(layer) === false) {
this.getLayersTarget().add(layer);
}
},
/**
* @param {Layer|Vue} layer
* @return {void}
*/
removeLayer: function removeLayer(layer) {
layer = layer instanceof Vue ? layer.$layer : layer;
if (!layer) return;
if (this.getLayersTarget().has(layer)) {
this.getLayersTarget().remove(layer);
}
},
/**
* @return {Layer[]}
*/
getLayers: function getLayers() {
return this.getLayersTarget().elements;
},
/**
* @param {string|number} id
* @return {Layer|undefined}
*/
getLayerById: function getLayerById(id) {
return this.getLayersTarget().findByKey(id);
},
/**
* @return {void}
*/
clearLayers: function clearLayers() {
this.getLayersTarget().clear();
},
/**
* @returns {Object}
* @protected
*/
getServices: function getServices() {
var vm = this;
return {
get layersContainer() {
return vm;
}
};
}
};
var layersContainer = {
methods: methods
};
export default layersContainer;