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

CesiumJS 笔记 - CesiumJS 相机瞬间跳转、lookAt 方法、Point 高度无效、椭圆与图片图层、椭圆调整

CesiumJS

  • CesiumJS 是一个开源的 JavaScript 库,它用于在网页中创建和控制 3D 地球仪(地图)
  1. CesiumJS 官网:https://www.cesium.com/

  2. CesiumJS 下载地址:https://www.cesium.com/platform/cesiumjs/

  3. CesiumJS API 文档:https://cesium.com/learn/cesiumjs/ref-doc/index.html


一、CesiumJS 相机瞬间跳转

  1. 使用 setView 方法
viewer.camera.setView({destination:Cesium.Cartesian3.fromDegrees(0,0,1000000.0),});
  1. 使用 flyTo 方法,设置 duration 为 0.0
viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(0,0,1000000.0),duration:0.0,});
  • 注:使用 flyTo 方法,如果不设置 duration,会有默认 duration
// 这样写还是有飞行动画viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(0,0,1000000.0)});

二、lookAt 方法

1、基本介绍
viewer.camera.lookAt(target,offset)
  • lookAt 方法是让相机看向某个目标点,用户无法通过鼠标自由移动视角,只能缩放或围绕目标旋转
参数说明
target要观察的目标点(世界坐标)
offset相机相对于目标点的偏移量(笛卡尔坐标)
  • 使用 lookAtTransform 方法,传入单位矩阵可以解除视角锁定
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
2、演示
<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>Camera - 看向某个目标点(lookAt)</title><linkrel="stylesheet"href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css"/><style>*{margin:0;padding:0;box-sizing:border-box;}html, body{width:100%;height:100%;}.container{width:100%;height:100%;}.btn-release{position:fixed;left:0px;top:0px;}</style></head><body><divid="container"></div><buttonclass="btn-release">解除视角锁定</button></body><scriptsrc="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script><script>constviewer=newCesium.Viewer("container");// // 从正上方俯看天安门// viewer.camera.lookAt(Cesium.Cartesian3.fromDegrees(116.3974, 39.9086, 0), new Cesium.Cartesian3(0, 0, 5000));// 从天安门的东南上方看天安门viewer.camera.lookAt(Cesium.Cartesian3.fromDegrees(116.3974,39.9086,0),newCesium.Cartesian3(500,-500,500));constbtnRelease=document.querySelector(".btn-release");btnRelease.addEventListener("click",()=>{viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);});</script></html>

三、Point 高度无效

  • 这里后渲染的能盖住先渲染的
// 先渲染的constentity=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(116.39,39.91,400),point:{pixelSize:100,color:Cesium.Color.GREEN,},});// 后渲染的constentity2=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(116.39,39.91005,200),point:{pixelSize:100,color:Cesium.Color.BLUE,},});viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(116.39,39.91,1000),duration:2.0,});
  1. Point 使用 pixelSize 定义大小,它始终以固定像素显示在屏幕上

  2. 它不参与深度测试,即使一个点在地理上位于另一个点后面,也不会被遮挡

  3. 渲染顺序由添加到场景的先后顺序决定


四、椭圆与图片图层

  • 椭圆始终会位于图片图层之上
<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>Entity ellipse - 椭圆与图片图层</title><linkrel="stylesheet"href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css"/><style>*{margin:0;padding:0;box-sizing:border-box;}html, body{width:100%;height:100%;}.container{width:100%;height:100%;}.show-ellipse{position:fixed;top:50px;left:50px;z-index:1000;}</style></head><body><divid="container"><buttonclass="show-ellipse">显示椭圆</button></div></body><scriptsrc="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script><script>constviewer=newCesium.Viewer("container");letshowEllipseFlag=false;constentity=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(2,2),ellipse:{semiMajorAxis:50000,// 长轴(米)semiMinorAxis:25000,// 短轴(米)material:Cesium.Color.BLUE.withAlpha(0.5),// 颜色show:showEllipseFlag,},});constwest=0;// 西经(西经为负)constsouth=0;// 南纬(南纬为负)consteast=4;// 东经(东经为正)constnorth=4;// 北纬(北纬为正)// 创建图片图层constimageryProvider=newCesium.SingleTileImageryProvider({url:"../img/test.jpg",rectangle:Cesium.Rectangle.fromDegrees(west,south,east,north),});constimageryLayer=viewer.imageryLayers.addImageryProvider(imageryProvider);viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(0,0,10000.0),duration:2.0,});document.querySelector(".show-ellipse").addEventListener("click",()=>{showEllipseFlag=!showEllipseFlag;entity.ellipse.show=showEllipseFlag;});</script></html>

五、椭圆调整

<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>Entity ellipse - 椭圆调整</title><linkrel="stylesheet"href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css"/><style>*{margin:0;padding:0;box-sizing:border-box;}html, body{width:100%;height:100%;}.container{width:100%;height:100%;}.ellipse-change{position:fixed;top:50px;left:50px;z-index:1000;}</style></head><body><divid="container"><buttonclass="ellipse-change">椭圆调整</button></div></body><scriptsrc="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script><script>constviewer=newCesium.Viewer("container");constentities=[];constentity1=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(0,0),ellipse:{semiMajorAxis:50000,// 长轴(米)semiMinorAxis:25000,// 短轴(米)material:Cesium.Color.BLUE.withAlpha(0.25),// 颜色},});constentity2=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(1,1),ellipse:{semiMajorAxis:50000,// 长轴(米)semiMinorAxis:25000,// 短轴(米)material:Cesium.Color.BLUE.withAlpha(0.25),// 颜色},});constentity3=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(2,2),ellipse:{semiMajorAxis:50000,// 长轴(米)semiMinorAxis:25000,// 短轴(米)material:Cesium.Color.BLUE.withAlpha(0.25),// 颜色},});constentity4=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(3,3),ellipse:{semiMajorAxis:50000,// 长轴(米)semiMinorAxis:25000,// 短轴(米)material:Cesium.Color.BLUE.withAlpha(0.25),// 颜色},});constentity5=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(4,4),ellipse:{semiMajorAxis:50000,// 长轴(米)semiMinorAxis:25000,// 短轴(米)material:Cesium.Color.BLUE.withAlpha(0.25),// 颜色},});entities.push(entity1,entity2,entity3,entity4,entity5);viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(0,0,10000.0),duration:2.0,});document.querySelector(".ellipse-change").addEventListener("click",()=>{entities.forEach((entity)=>{entity.ellipse.semiMajorAxis=50000*2;entity.ellipse.semiMinorAxis=25000*2;});});</script></html>
http://www.cnnetsun.cn/news/3987467.html

相关文章:

  • 动态规划解三角形牧场:从信奥题看DP状态设计与优化
  • ​轮胎三维轮廓检测怎么选?从测量范围到黑色橡胶成像
  • 上海网站建设公司大全:从选型避坑到落地执行,揭秘上海优质建站服务商的全景指南
  • 东莞网站建设优化技术全面解析:如何通过专业策略提升企业排名与流量增长
  • IEC 61960-3:2011 完整权威解读
  • (论文速读)Multinex:基于多优先Retinex的轻量级微光图像增强
  • 企业做 Data for AI,应该如何选择云上数据底座?亚马逊云科技五层架构与选型路径
  • 基金申请书框架:把研究构想搭成基金申请书框架:立项依据、研究目标内容、方案、特色创新、基础与可行性。
  • 揭秘上海网站建设渠道的隐藏陷阱与避坑指南:从零基础到上线的全流程解析
  • 构建健壮业务循环:从设计模式到生产级实践
  • 上海红酒网站建设:打破同质化困境,打造有灵魂的品牌数字化名片
  • 中小团队低成本做好GEO优化!2026高性价比GEO查询工具选型攻略
  • 我用4个AI搭了一个“虚拟开发团队“,真实完成了项目迭代
  • Unity动态数据可视化实战:基于XCharts实现实时折线图
  • Utilizing Large Language Models for Zero-Shot Medical Ontology Extension from Clinical Notes
  • Learning to Compress: Unlocking the Potential of Large Language Models for Text Representation
  • 深度解析青岛建设厅网站:一站式查询政策解读与办事指南的最佳入口指南
  • 网站建设销售人员培训教程:如何从入门到精通打造高薪成交铁军
  • 半导体器件5——IGBT
  • MATLAB多峰高斯拟合实战:从原理到三峰分离的完整指南
  • 买了网站主机后如何建设网站:从零基础到上线的实战避坑指南
  • 商城网站建设清单:新手必看的避坑指南与实战细节
  • 基于KVM的VDI桌面云架构解析
  • 小i约球诞生记05:约球小程序,个人主体还是企业主体
  • 2026海关数据获客工具选型指南:跨境魔方等主流外贸平台对比评估
  • 北京网站建设学校揭秘:普通人如何低成本逆袭互联网高薪赛道
  • OpenClaw AI Agent框架本地部署与工程化实战指南
  • {“msg“:“请求访问:/xxx-api/xxx/xxx/list,认证失败,无法访问系统资源“,“code“:401}
  • Verilog仿真与调试实战:从语法陷阱到跨时钟域处理
  • 从整蛊脚本到实用工具:VBS、BAT、HTML/JS脚本的自动化原理与改造