UNPKG

openlayermap

Version:

openlayer Map Component for Vue 2.0

100 lines (91 loc) 2.72 kB
/** * Created by huhongxun on 2017/9/19. * @desc 全屏控制 */ import ol from 'openlayers' import '../asset/scss/fullScreen.css' import {BASE_CLASS_NAME} from '../constants' import screenfull from 'screenfull' import DomUtils from 'nature-dom-util' const htmlUtils = DomUtils.htmlUtils const Events = DomUtils.Events const EventType = DomUtils.EventType ol.control.FullScreenMenu = function (params = {}) { let options = params /** * 基础类名 * @type {string} */ let className = options.className !== undefined ? options.className : 'hmap-control-full-screen' /** * 快捷键 * @private * @type {boolean} */ this.keys_ = options.keys !== undefined ? options.keys : false /** * 图标大小 * @type {[*]} * @private */ this.size_ = options.size !== undefined ? options.size : [16, 16] /** * 要放大的容器 */ this.source_ = options.source /** * delta 初始化地图元素 */ this.element_ = this.initDomInternal_(className) ol.control.Control.call(this, { element: this.element_, target: options.target }) } ol.inherits(ol.control.FullScreenMenu, ol.control.Control) /** * 处理点击事件 * @param event * @private */ ol.control.FullScreenMenu.prototype.handleClick_ = function (event) { event.preventDefault() let map = this.getMap() if (map) { let element = null if (this.source_) { element = typeof this.source_ === 'string' ? document.getElementById(this.source_) : this.source_ } else { element = this.getMap().getTargetElement() } if (screenfull.enabled) { screenfull.toggle(element) screenfull.on('change', () => { if (screenfull.isFullscreen) { this.element_.firstElementChild.classList.remove('hmap-control-full-screen-inner') this.element_.firstElementChild.classList.add('hmap-control-full-screen-inner-deactive') } else { this.element_.firstElementChild.classList.remove('hmap-control-full-screen-inner-deactive') this.element_.firstElementChild.classList.add('hmap-control-full-screen-inner') } }) } } } /** * 初始化相关dom * @param className * @param delta * @returns {Element} * @private */ ol.control.FullScreenMenu.prototype.initDomInternal_ = function (className) { let element = htmlUtils.create('div', (className + ' ' + BASE_CLASS_NAME.CLASS_UNSELECTABLE)) let inner = htmlUtils.create('span', className + '-inner', element) inner.setAttribute('title', '全屏') Events.listen(element, EventType.CLICK, this.handleClick_, this) return element } let olControlFullScreenMenu = ol.control.FullScreenMenu export default olControlFullScreenMenu