实现思路

  • 通过加载 czml 文件,生成卫星
  • 获取卫星实体的位置,建立连线
  • 监听卫星位置,若发生变化,则刷新连线

问题解决

连线动态变化

  • setInterval() 可以监听每一帧画面
  • 或者说当启动场景后,setInterval() 每一帧都会被调用

连线闪烁

  • 直接设置连线位置,或者删除连线后重新添加都会造成闪烁
  • 通过使用 CallbackProperty() 可以避免闪烁

完整实现代码

<body><div id="cesiumContainer"></div><script>var viewer = new Cesium.Viewer("cesiumContainer");viewer.scene.debugShowFramesPerSecond = true;let czmlDataSourcePromise = Cesium.CzmlDataSource.load('./TestData/test.czml')viewer.zoomTo(czmlDataSourcePromise);let czml;let llh_old;czmlDataSourcePromise.then(function (dd) {czml = dd;viewer.dataSources.add(czml);// 设置倍速viewer.clock.multiplier = 1000;var entity_2 = czml.entities.getById("Satellite/BEIDOU 2");var entity_3 = czml.entities.getById("Satellite/BEIDOU 3");var position_2 = entity_2.position.getValue(viewer.clock.currentTime);var position_3 = entity_3.position.getValue(viewer.clock.currentTime);let cartographic_2 = Cesium.Cartographic.fromCartesian(position_2);let cartographic_3 = Cesium.Cartographic.fromCartesian(position_3);let llh = [parseFloat(Cesium.Math.toDegrees(cartographic_2.longitude).toFixed(4)),parseFloat(Cesium.Math.toDegrees(cartographic_2.latitude).toFixed(4)),parseFloat(cartographic_2.height),parseFloat(Cesium.Math.toDegrees(cartographic_3.longitude).toFixed(4)),parseFloat(Cesium.Math.toDegrees(cartographic_3.latitude).toFixed(4)),parseFloat(cartographic_3.height)]llh_old = llh;console.log(llh_old.toString())var purpleArrow = viewer.entities.add({id: 'purpleArrow',name: "Purple straight arrow at height",polyline: {positions: Cesium.Cartesian3.fromDegreesArrayHeights(llh),width: 10,arcType: Cesium.ArcType.NONE,material: new Cesium.PolylineArrowMaterialProperty(Cesium.Color.CYAN),},});})setInterval(function () {if (czml != null) {var entity_2 = czml.entities.getById("Satellite/BEIDOU 2");var entity_3 = czml.entities.getById("Satellite/BEIDOU 3");var position_2 = entity_2.position.getValue(viewer.clock.currentTime);var position_3 = entity_3.position.getValue(viewer.clock.currentTime);let cartographic_2 = Cesium.Cartographic.fromCartesian(position_2);let cartographic_3 = Cesium.Cartographic.fromCartesian(position_3);let llh = [parseFloat(Cesium.Math.toDegrees(cartographic_2.longitude).toFixed(4)),parseFloat(Cesium.Math.toDegrees(cartographic_2.latitude).toFixed(4)),parseFloat(cartographic_2.height),parseFloat(Cesium.Math.toDegrees(cartographic_3.longitude).toFixed(4)),parseFloat(Cesium.Math.toDegrees(cartographic_3.latitude).toFixed(4)),parseFloat(cartographic_3.height)]if (llh.toString() != llh_old.toString()) {console.log('执行操作')// 直接设置位置// viewer.entities.getById('purpleArrow').polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(llh)viewer.entities.getById('purpleArrow').polyline.positions =new Cesium.CallbackProperty(function () {return Cesium.Cartesian3.fromDegreesArrayHeights(llh)}, false)// 删除后,重新添加// viewer.entities.removeAll()// var purpleArrow = viewer.entities.add({//   id: 'purpleArrow',//   name: "Purple straight arrow at height",//   polyline: {//     positions: Cesium.Cartesian3.fromDegreesArrayHeights(llh),//     width: 10,//     arcType: Cesium.ArcType.NONE,//     material: new Cesium.PolylineArrowMaterialProperty(//       Cesium.Color.PURPLE//     ),//   },// });llh_old = llh;}}})</script>
</body>

[ Cesium ] 根据卫星位置,建立实时动态连线相关推荐

  1. cesium绘制卫星

    首先需要注意new Cesium.Viewer的时候需要将 timeline: true,shouldAnimate: true, // 初始时刻运动 两个属性置为true否则不生效 export c ...

  2. Cesium实现卫星在轨绕行

    Cesium实现卫星在轨绕行 这个效果其实网上很多案例了,本来不打算写了,但是做都做了,稍微来说一下吧,代码实测可用! 最后的效果就是这个样子的啦! 就是很简单的一个卫星,放射信号,然后围着轨道转圈圈 ...

  3. 基于Cesium的卫星及空间碎片的轨迹展示

    核心:cesium.czml.satellite.js.tle 下面简单介绍一下操作步骤,并展示部分代码(附上结果截图) 步骤一:初始化cesium const viewer = new Viewer ...

  4. RTKLIB学习总结(六)导航电文、卫星位置计算

    文章目录 一.导航电文 1.GNSS卫星信号的组成 2.导航电文的编排 3.遥测字(TLW) 4.交接字(HOW) 5.第一数据块 6.第二数据块 7.第三数据块 二.卫星钟差钟漂改正 1.时钟校正参 ...

  5. R语言使用rnorm函数生成正太分布数据、使用boxplot函数可视化箱图、中间黑线为中位数位置、上下框线为上下四分位数位置、上下触须为1.5倍四分位数间距、如果有孤立点表示异常值

    R语言使用rnorm函数生成正太分布数据.使用boxplot函数可视化箱图.中间黑线为中位数位置.上下框线为上下四分位数位置.上下触须为1.5倍四分位数间距.如果有孤立点表示异常值 目录 R语言使用r ...

  6. Cesium|xt3d卫星正摄动画

    Cesium|xt3d卫星正摄动画 效果 代码 预览地址 效果 代码 <!DOCTYPE html> <html lang="zh-CN"><head ...

  7. Cesium 实现卫星效果

    技术合作交流qq:260148606 更多尽在 webgis.fun 通过两种方式实现了卫星沿着轨道运行,一种是轨道数据根据一定的偏差,动态生成,另外一个种是,根据生成的CZML文件加载. 其实中实现 ...

  8. 卫星位置计算小程序(C#版)

    一.最终画面 二.程序代码 using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  9. c语言编程gps卫星坐标计算公式,C语言计算GPS卫星位置演示教学.doc

    C语言计算GPS卫星位置演示教学.doc C语言计算GPS卫星位置1 概述在用GPS信号进行导航定位以及制订观测计划时,都必须已知GPS卫星在空间的瞬间位置.卫星位置的计算是根据卫星电文所提供的轨道参 ...

最新文章

  1. POJ1067_取石子游戏_威佐夫博弈
  2. MySQL优化篇:show profile进行SQL分析
  3. java rotatetransition_transition过渡,transform变换
  4. 不受微软待见的Python,如何在八年内逆袭成功?
  5. 20155216 Exp5 MSF基础应用
  6. why always SAP WebContent is added as prefix of url when repository request ser
  7. epoch、 iteration和batchsize的区别
  8. uniapp之安卓文件操作插件
  9. 宋宝华:为什么numactl内存绑定对代码段不起作用
  10. Unsupported Personality :UNKNOWN
  11. 想快速发表自然语言处理论文?推荐一个出论文的好方向!
  12. 无题 于2007年5月16日
  13. Qt:解析xml文件
  14. java毕业设计的影视资讯管理系统mybatis+源码+调试部署+系统+数据库+lw
  15. 独家!了不起的UP系列产品,不一样的开发板—UP Board(一)
  16. VLOOKUP之深入解析查询过程中#N/A出现的N种原因(二)
  17. 鲁班-h5带你把项目跑起来
  18. 【N皇后问题】拉斯维加斯N皇后问题
  19. NIPS2023交流群已建立,投稿者可加入
  20. linux 数据库归档日志满了,归档日志满后的处理方法

热门文章

  1. 量化交易平台Quantopian学习的笔记(一)
  2. 华为已注册商标鸿蒙,华为已注册华为鸿蒙商标:整本山海经都被华为注册了
  3. 华为吐糟竞争对手外挂5G基带,然而它却用这种方式忽悠消费者
  4. 动态网站基本上都是有后台的,静态的网站就是纯HTML的网站的,这样的网站是没有后台的
  5. 中国大学MOOC-陈越、何钦铭-数据结构-2020春期中考试
  6. 计算机视觉论文速递(七)FAN:提升ViT和CNN的鲁棒性和准确性
  7. 现在流行的台式计算机搭配,现在台式电脑的主流配置有哪些?
  8. C语言中函数的重点知识总结
  9. 台式计算机连不上网,台式机插上网线连不上网怎么办?
  10. spring boot新闻管理系统 毕业设计源码211113