/*
|
* @Descripttion:
|
* @version: 0.01
|
* @Author: Morpheus
|
* @Date: 2020-10-22 11:05:09
|
* @LastEditors: Morpheus
|
* @LastEditTime: 2020-10-22 13:48:22
|
*/
|
|
import store from '@/store/index'
|
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 () {
|
var position = global.DC.Transform.transformCartesianToWGS84(self._position[0])
|
var positionChange = null
|
if (store.state.viewer.twoOrThree == '三 维') {
|
positionChange = global.DC.Transform.transformWGS84ToCartesian(
|
new global.DC.Position(
|
Number(position.lng),
|
Number(position.lat),
|
Number(0)
|
)
|
)
|
} else {
|
positionChange = global.DC.Transform.transformWGS84ToCartesian(
|
new global.DC.Position(
|
Number(position.lng),
|
Number(position.lat),
|
Number(150)
|
)
|
)
|
}
|
|
const windowCoord = global.DC.Namespace.Cesium.SceneTransforms.wgs84ToWindowCoordinates(
|
self._viewer.scene,
|
positionChange
|
)
|
|
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
|