tchen-vuelayers
Version:
Web map Vue components with the power of OpenLayers
110 lines (86 loc) • 3 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 GroupLayer from 'ol/layer/Group';
import { layer, layersContainer } from '../mixin';
import { IndexedCollectionAdapter } from '../ol-ext';
import { hasLayer } from '../util/assert';
import mergeDescriptors from '../util/multi-merge-descriptors';
import _Object$assign from '@babel/runtime-corejs2/core-js/object/assign';
import { pick } from '../util/minilo';
var methods = {
createLayer: function createLayer() {
return new GroupLayer({
id: this.id,
minResolution: this.minResolution,
maxResolution: this.maxResolution,
opacity: this.opacity,
visible: this.visible,
extent: this.extent,
zIndex: this.zIndex
});
},
getLayersTarget: function getLayersTarget() {
hasLayer(this);
if (this._layersTarget == null) {
this._layersTarget = new IndexedCollectionAdapter(this.$layer.getLayers(), function (layer$$1) {
return layer$$1.get('id');
});
}
return this._layersTarget;
},
getServices: function getServices() {
return mergeDescriptors(layer.methods.getServices.call(this), layersContainer.methods.getServices.call(this));
}
};
var script = {
name: 'vl-layer-group',
mixins: [layer, layersContainer],
methods: methods
};
/* script */
var __vue_script__ = script;
/* template */
/* style */
var __vue_inject_styles__ = undefined;
/* scoped */
var __vue_scope_id__ = undefined;
/* module identifier */
var __vue_module_identifier__ = undefined;
/* functional template */
var __vue_is_functional_template__ = undefined;
/* component normalizer */
function __vue_normalize__(template, style, script$$1, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {
var component = (typeof script$$1 === 'function' ? script$$1.options : script$$1) || {}; // For security concerns, we use only base name in production mode.
component.__file = "layer.vue";
if (!component.render) {
component.render = template.render;
component.staticRenderFns = template.staticRenderFns;
component._compiled = true;
if (functional) component.functional = true;
}
component._scopeId = scope;
return component;
}
/* style inject */
/* style inject SSR */
var Layer = __vue_normalize__({}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);
function plugin(Vue) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (plugin.installed) {
return;
}
plugin.installed = true;
options = pick(options, 'dataProjection');
_Object$assign(Layer, options);
Vue.component(Layer.name, Layer);
}
export default plugin;
export { Layer, plugin as install };