news 2026/10/28 21:40:48

CesiumJS 案例 P37:图片图层视角恢复、指定长宽的图片图层视角恢复(原点为图片图层的中心点)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CesiumJS 案例 P37:图片图层视角恢复、指定长宽的图片图层视角恢复(原点为图片图层的中心点)

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


图片图层视角恢复

<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>ImageryProvider - 图片图层视角恢复</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-reset-view{position:fixed;left:0px;top:0px;}</style></head><body><divid="container"></div><buttonclass="btn-reset-view">恢复默认视角</button></body><scriptsrc="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script><script>constviewer=newCesium.Viewer("container");constwest=0;// 西经(西经为负)constsouth=0;// 南纬(南纬为负)consteast=10;// 东经(东经为正)constnorth=10;// 北纬(北纬为正)// 创建图片图层constimageryProvider=newCesium.SingleTileImageryProvider({url:"../img/test.jpg",rectangle:Cesium.Rectangle.fromDegrees(west,south,east,north),});constimageryLayer=viewer.imageryLayers.addImageryProvider(imageryProvider);constresetView=()=>{viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees((west+east)/2,(south+north)/2,1000000),duration:2.0,});};constbtnResetView=document.querySelector(".btn-reset-view");btnResetView.addEventListener("click",resetView);resetView();</script></html>

指定长宽的图片图层视角恢复(原点为图片图层的中心点)

<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>ImageryProvider - 指定长宽的图片图层视角恢复(原点为图片图层的中心点)</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-reset-view{position:fixed;left:0px;top:0px;}</style></head><body><divid="container"></div><buttonclass="btn-reset-view">恢复默认视角</button></body><scriptsrc="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script><script>constviewer=newCesium.Viewer("container");// offset:偏移量(米)// offset.x:X 轴偏移,东方向偏移// offset.y:Y 轴偏移,北方向偏移functiontransformCoordinate(origin,offset){offset.x=-offset.x;// 将原点经纬度转换为弧度constoriginLongitudeRadians=Cesium.Math.toRadians(origin.longitude);constoriginLatitudeRadians=Cesium.Math.toRadians(origin.latitude);// 创建原点的 Cartographic 对象constoriginCartographic=newCesium.Cartographic(originLongitudeRadians,originLatitudeRadians);// 将原点的 Cartographic 对象转换为笛卡尔坐标constoriginCartesian=Cesium.Ellipsoid.WGS84.cartographicToCartesian(originCartographic);// 创建偏移量的 Cartesian3 对象,偏移量在东和北方向consteast=newCesium.Cartesian3(offset.x,0,0);constnorth=newCesium.Cartesian3(0,offset.y,0);// 将偏移量投影到地球表面上constsurfaceNormal=Cesium.Cartesian3.normalize(originCartesian,newCesium.Cartesian3());consteastSurface=Cesium.Cartesian3.cross(surfaceNormal,Cesium.Cartesian3.UNIT_Z,newCesium.Cartesian3());constnorthSurface=Cesium.Cartesian3.cross(eastSurface,surfaceNormal,newCesium.Cartesian3());Cesium.Cartesian3.normalize(eastSurface,eastSurface);Cesium.Cartesian3.normalize(northSurface,northSurface);constoffsetEast=Cesium.Cartesian3.multiplyByScalar(eastSurface,offset.x,newCesium.Cartesian3());constoffsetNorth=Cesium.Cartesian3.multiplyByScalar(northSurface,offset.y,newCesium.Cartesian3());// 将投影的偏移量加到原点的笛卡尔坐标上constnewCartesian=Cesium.Cartesian3.add(originCartesian,Cesium.Cartesian3.add(offsetEast,offsetNorth,newCesium.Cartesian3()),newCesium.Cartesian3());// 将新的笛卡尔坐标转换回经纬度坐标constnewCartographic=Cesium.Ellipsoid.WGS84.cartesianToCartographic(newCartesian);// 将弧度转换回角度constnewLongitude=Cesium.Math.toDegrees(newCartographic.longitude);constnewLatitude=Cesium.Math.toDegrees(newCartographic.latitude);return{longitude:newLongitude,latitude:newLatitude,};}// 图片图层的长宽constimageWidth=200;// 单位为米constimageHeight=100;// 单位为米// 图片图层的原点constoriginLongitude=0;// 原点经度constoriginLatitude=0;// 原点纬度constresult=transformCoordinate({longitude:originLongitude,latitude:originLatitude,},{x:imageWidth/2,y:imageHeight/2,},);constwest=originLongitude-result.longitude;// 西经(西经为负)constsouth=originLatitude-result.latitude;// 南纬(南纬为负)consteast=originLongitude+result.longitude;// 东经(东经为正)constnorth=originLatitude+result.latitude;// 北纬(北纬为正)// 创建图片图层constimageryProvider=newCesium.SingleTileImageryProvider({url:"../img/test.jpg",rectangle:Cesium.Rectangle.fromDegrees(west,south,east,north),});viewer.imageryLayers.addImageryProvider(imageryProvider);// 添加一个点表示原点constentity=viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(originLongitude,originLatitude),point:{pixelSize:5,color:newCesium.Color(0,1,0,1),},});// ----------------------------------------------------------------------------------------------------constreset=()=>{viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(originLongitude,originLatitude,imageWidth<imageHeight?imageWidth:imageHeight),duration:2.0,});};constbtnResetView=document.querySelector(".btn-reset-view");btnResetView.addEventListener("click",reset);reset();</script></html>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 18:27:15

直接上结论:10个AI论文工具测评!本科生毕业论文写作必备推荐

在当前学术研究日益数字化的背景下&#xff0c;越来越多的本科生开始依赖AI工具辅助论文写作。然而&#xff0c;面对市场上种类繁多的AI论文工具&#xff0c;如何选择真正适合自己需求的产品成为一大难题。为了帮助广大本科生更高效地完成毕业论文&#xff0c;笔者基于2026年的…

作者头像 李华
网站建设 2026/10/24 8:24:06

收藏必备!知识图谱如何解决RAG局限性?大模型开发者必读指南

知识图谱解决传统RAG系统忽视内容内在联系的问题&#xff0c;通过抽取实体关系构建更全面的知识库。GraphRAG适合企业级场景但成本高&#xff0c;LightRAG更适合轻量级应用&#xff0c;支持多种检索模式&#xff0c;在理解复杂关系和增量更新方面有明显优势&#xff0c;是大模型…

作者头像 李华
网站建设 2026/10/28 2:14:59

一种自动旋螺钉平台结构设计

一种自动旋螺钉平台结构设计 第一章 绪论 在电子、家电、汽车零部件等装配行业中&#xff0c;螺钉紧固是关键工序。传统人工旋螺钉存在效率低、扭矩控制精度差、劳动强度大、一致性难以保证等问题&#xff0c;难以满足自动化生产线的高效、高精度装配需求。自动旋螺钉平台通过集…

作者头像 李华