UNPKG

tchen-vuelayers

Version:

Web map Vue components with the power of OpenLayers

91 lines (79 loc) 1.83 kB
/** * 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;