Cesium弹窗可随地图移动

目录

项目地址

https://github.com/zhengjie9510/webgis-demo

实现效果

实现方法

javascript 复制代码
handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
handler.setInputAction((click) => {
	if (listener) {
	  listener()
	  listener = undefined
	  this.visiable = false
	}
    // 球面
    if (viewer.terrainProvider instanceof Cesium.EllipsoidTerrainProvider) {
      earthPosition = viewer.scene.camera.pickEllipsoid(click.position);
    }
    // 地形
    else {
      const ray = viewer.camera.getPickRay(click.position);
      earthPosition = viewer.scene.globe.pick(ray, viewer.scene);
    }
    if (earthPosition) {
        const position = viewer.scene.globe.ellipsoid.cartesianToCartographic(earthPosition)
        const lon = Cesium.Math.toDegrees(position.longitude).toFixed(6)
        const lat = Cesium.Math.toDegrees(position.latitude).toFixed(6)
        const height = position.height.toFixed(2)
        this.info = { lon: lon, lat: lat, height: height }
        listener = viewer.scene.postRender.addEventListener(() => {
          const windowPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, earthPosition);
          if (windowPosition) {
            let position = { top: windowPosition.y - 115 + 'px', left: windowPosition.x - 200 / 2 + 'px' }
            this.style = Object.assign(this.style, position)
            this.visiable = true
          }
        })
    }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK)
相关推荐
言兴几秒前
从输入 URL 到页面显示:深入理解浏览器缓存机制
前端·javascript·面试
讨厌吃蛋黄酥几秒前
前端跨域难题终结者:从JSONP到CORS,一文搞定所有跨域问题!
前端·javascript·后端
阿星做前端1 分钟前
coze源码解读:项目启动
前端·javascript
言兴2 分钟前
面试题之解析“类组件”与“组件”的本质
前端·javascript·面试
aidingni8888 分钟前
告别 DDL 难题:使用 Skapi 的零设置关系数据库 API
前端·javascript
东北南西13 分钟前
设计模式-单例模式
前端·javascript·单例模式·设计模式
托比-马奎尔30 分钟前
ES6变量与解构:let、const与模板字符串全解析
javascript
水煮白菜王1 小时前
从零搭建 React 工程化项目
前端·javascript·react.js
mosen8682 小时前
易混淆的CommonJS和ESM(ES Module)及它们区别
javascript·node.js·express
weixin_516875654 小时前
力扣 30 天 JavaScript 挑战 第37天 第九题笔记 知识点: 剩余参数,拓展运算符
javascript·笔记·leetcode