当前位置: 首页 > article >正文

Cesium弹窗可随地图移动

目录

  • 项目地址
  • 实现效果
  • 实现方法

项目地址

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

实现效果

请添加图片描述

实现方法

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)

http://www.kler.cn/a/108766.html

相关文章:

  • 使用HTML、CSS和JavaScript创建动态圣诞树
  • 【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框
  • 【C++ 算法进阶】算法提升十三
  • docker compose 多个 Dockerfile
  • Java面试要点02 - 自动装箱与拆箱的原理与性能解析
  • 讲讲关于SNMP与智能PDU插座
  • 神经网络与深度学习第四章前馈神经网络习题解答
  • 搞定蓝牙-第六篇(HID
  • FL Studio21.2演示版下载
  • [Leetcode] 0108. 将有序数组转换为二叉搜索树
  • unity3d场景加载
  • Sprint Cloud Stream整合RocketMq和websocket实现消息发布订阅
  • 设置Ubuntu 20.04的静态IP地址(wifi模式下)
  • 全能数字音乐工作站(DAW)编曲FL Studio21.2.0官方中文版
  • python之拟合圆心及半径
  • Opencv-图像插值与LUT查找表
  • IntelliJ IDEA 把package包展开和压缩
  • Ubuntu 22.04自动登录进入桌面
  • Error: error:0308010C:digital envelope routines::unsupported
  • YOLOv7-QAT量化部署
  • 软考系统架构师知识点集锦二:软件工程
  • 51单片机实验:数码管动态显示00-99
  • Vert.x学习笔记-异步编程和响应式系统
  • 云安全-云原生技术架构(Docker逃逸技术-特权与危险挂载)
  • 外部中断0边沿触发
  • Docker中Failed to initialize NVML: Unknown Error