UNPKG

tchen-vuelayers

Version:

Web map Vue components with the power of OpenLayers

91 lines (79 loc) 1.91 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 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;