/* * @Descripttion: * @version: 0.01 * @Author: Morpheus * @Date: 2020-10-22 11:05:09 * @LastEditors: Morpheus * @LastEditTime: 2020-10-22 13:48:22 */ import DC from '@dvgis/dc-sdk/dist/dc.base.min' // 基础包 import DcCore from '@dvgis/dc-sdk/dist/dc.core.min' // 核心包 DC.use(DcCore) // 安装DC核心库 class DivForms { /** * @popup 存放 dom 相关 * */ constructor (viewer, popup) { this._viewer = viewer this._popup = popup this._position = popup.position this.appendPopup() } get viewer () { return this._viewer } get popup () { return this._popup } get position () { return this._position } appendPopup () { /** * @domId 存放 dom 的id, 多个数组,单个字符串 */ this.createVideoWindowAll(this._popup.domId) } // 创建元素并追加 createVideoWindowAll (id) { this.clearMove(id) this._viewer.scene.postRender.addEventListener(this.movePopup(id)) } movePopup (id) { var self = this return function () { const windowCoord = DC.Namespace.Cesium.SceneTransforms.wgs84ToWindowCoordinates( self._viewer.scene, self._position[0] ) self.positionPopUp(windowCoord, id) } } clearMove (id) { this._viewer.scene.postRender.removeEventListener(this.movePopup(id)) } positionPopUp (windowCoord, id) { if (document.getElementById(id) == null || document.getElementById(id) == undefined) { this._viewer.scene.postRender.removeEventListener(this.movePopup(id)) return } if (windowCoord != undefined && windowCoord.x && windowCoord.x != undefined && !Number.isNaN(windowCoord.x) && windowCoord.y && windowCoord.y != undefined && !Number.isNaN(windowCoord.y)) { const x = windowCoord.x const y = windowCoord.y - document.getElementById(id).offsetHeight // x = windowCoord.x - document.getElementById(id).offsetWidth document.getElementById(id).style.cssText = ` visibility:visible; transform:translate3d(${Math.round(x)}px,${Math.round(y)}px, 0); ` } } } export default DivForms