<template>
<div
:id="domID"
style="position:absolute;"
>
<slot>
</slot>
</div>
</template>
<script>
export default {
props: {
domID: {
type: String,
required: false,
default() {
return this.$utils.getUUID()
}
},
position: {
type: Object,
required: true,
default() {
if (!Cesium) {
return {}
}
return new Cesium.Cartesian3()
}
}
},
watch: {
position(val, old) {
this.listenFun()
}
},
data() {
return {}
},
mounted() {
this.updatePosition()
},
beforeDestroy() {
viewer.scene.postRender.removeEventListener(this.listenFun)
},
methods: {
/**
* 用jQuery更新HTML元素位置
*/
jqueryUpdateHtml(c, domID) {
if (c !== undefined) {
let x, y
//窗口改变 位置会有偏移
if (!viewer.container.popOnTop) {
x = c.x - $('#' + domID).width() / 2 + 'px'
y = c.y - $('#' + domID).height() - viewer.scene.canvas.height + 'px'
}
$('#' + domID).css('transform', 'translate(' + x + ', ' + y + ')')
}
},
listenFun() {
let curWindowP = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, this.position)
if (curWindowP) {
this.jqueryUpdateHtml(curWindowP, this.domID)
}
},
updatePosition() {
if (!viewer) {
return
}
//三维场景渲染 更新弹窗位置
viewer.scene.postRender.addEventListener(this.listenFun)
}
}
}
</script>
<style lang="scss" scoped >
</style>
CesiumHTML (用到jQuery)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1. 禁止右键点击 $(document).ready(function(){ $(document).bind...
- 原回答:浏览器自身为什么不集成js,jQuery文件?反正每个网站基本都会用到?[https://www.zhih...
- jQuery加载: 将获取元素的语句写到页面头部,会因为元素还没有加载而出错,jquery有ready方法解决 J...