UNPKG

wangbd-myui

Version:

MY前端基础框架核心组件库

76 lines (73 loc) 1.8 kB
/** * 缩放控件 * @module $ui/map/my-map-zoom */ import {Zoom, ZoomSlider} from 'ol/control' import Placement from '../my-map-placement' export default { name: 'MyMapZoom', inject: ['myMap'], components: { Placement }, render() { return null }, /** * 参数属性 * @member props * @property {string} [placement] 停泊位置,可选值'left-top', 'right-top', 'left-bottom', 'right-bottom' * @property {string} [theme] 主题 可选值 'light'(默认), 'dark' * @property {string | boolean} [slider] 是否显示拖动条 */ props: { placement: { type: String, default: 'left-top', validator(val) { return ['left-top', 'right-top', 'left-bottom', 'right-bottom'].includes(val) } }, slider: Boolean, theme: { type: String, default: 'light', validator(val) { return ['light', 'dark'].includes(val) } } }, computed: { classes() { return Object.keys({ 'my-map-zoom': true, [`is-${this.theme}`]: !!this.theme, [`is-${this.placement}`]: !!this.placement }).join(' ') } }, methods: { init(map) { this.zoom = new Zoom({ className: this.classes + ' ol-zoom' }) map.addControl(this.zoom) if (this.slider) { this.zoomSlider = new ZoomSlider({ className: this.classes + ' ol-zoomslider' }) map.addControl(this.zoomSlider) } } }, created() { this.myMap.mapReady(this.init) }, beforeDestroy() { const map = this.myMap?.map if (map) { this.zoom && map.removeControl(this.zoom) this.zoomSlider && map.removeControl(this.zoomSlider) } } }