news 2026/8/12 20:38:32

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 20:36:35

动态规划解三角形牧场:从信奥题看DP状态设计与优化

1. 项目概述&#xff1a;从一道信奥题看动态规划与几何的融合最近在刷信奥&#xff08;信息学奥林匹克&#xff09;的题目&#xff0c;遇到了P1284“三角形牧场”这道题。题目乍一看是个几何问题&#xff0c;但仔细琢磨&#xff0c;核心其实是一个经典的动态规划&#xff08;DP…

作者头像 李华
网站建设 2026/8/12 20:35:32

​轮胎三维轮廓检测怎么选?从测量范围到黑色橡胶成像

文章来源&#xff1a;深圳市深视智能科技股份有限公司轮胎表面既有规则花纹&#xff0c;也可能出现局部起伏、尺寸偏差和字符不清等情况。由于轮胎主体为黑色橡胶&#xff0c;表面曲率和纹理变化明显&#xff0c;人工观察和普通二维图像不容易稳定量化高度、深度与截面轮廓。激…

作者头像 李华
网站建设 2026/8/12 20:34:45

上海网站建设公司大全:从选型避坑到落地执行,揭秘上海优质建站服务商的全景指南

在这个数字化浪潮席卷全球的时代,网站早已不再仅仅是一个企业的线上名片,更是品牌战略的核心阵地,是客户信任的第一入口,甚至是直接产生营收的转化引擎。对于身处中国商业前沿的上海企业而言,拥有一流的技术实力和审美眼光,似乎成了某种“标配”。然而,现实往往比理想骨…

作者头像 李华
网站建设 2026/8/12 20:34:17

东莞网站建设优化技术全面解析:如何通过专业策略提升企业排名与流量增长

在这个数字化浪潮席卷全球的时代,企业想要在这片红海中找到属于自己的那片蓝海,光靠传统的线下推广已经远远不够了。特别是对于我们东莞的广大中小企业来说,网站不再仅仅是一个展示企业的电子名片,它更是你24小时不间断工作的销售员,是你品牌在网络上最直接的发声筒。但是…

作者头像 李华
网站建设 2026/8/12 20:33:48

IEC 61960-3:2011 完整权威解读

全称&#xff1a;含碱性或非酸性电解液的二次蓄电池 — 便携式锂二次电池 — 第 3 部分&#xff1a;圆柱、方形锂电单体及由其组成电池组&#xff08;Prismatic & Cylindrical Li-ion Cell & Pack&#xff09; 定位&#xff1a;全球便携锂电【性能测试专用标准】&#…

作者头像 李华
网站建设 2026/8/12 20:32:42

(论文速读)Multinex:基于多优先Retinex的轻量级微光图像增强

论文题目&#xff1a;Multinex: Lightweight Low-light Image Enhancement via Multi-prior Retinex&#xff08;基于多优先Retinex的轻量级微光图像增强&#xff09;会议&#xff1a;CVPR2026摘要&#xff1a;微光图像增强(LLie)的目的是在严重光照退化的情况下恢复自然可见度…

作者头像 李华