news 2026/6/6 17:23:49

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/6/2 23:26:16

柔性领导力的技术重构:从执行者到质量战略家

1. 重新定义测试价值坐标 突破执行层认知&#xff1a;将测试报告转化为质量决策沙盘&#xff0c;例如通过构建“缺陷预测热力图”预警核心模块风险&#xff0c;驱动架构优化优先级。 技术领导力构建&#xff1a;建立测试资产复用框架&#xff08;如自动化脚本元数据标签体系&a…

作者头像 李华
网站建设 2026/5/28 19:28:27

Python 驱动浏览器自动化:Playwright + AI 的 2026 最佳实践

摘要&#xff1a;在 Web 自动化领域&#xff0c;Selenium 曾经的霸主地位已成历史&#xff0c;Playwright 凭其“快、稳、强”的现代特性成为了新标准。而在 2026 年&#xff0c;随着 LLM&#xff08;大语言模型&#xff09;和视觉多模态模型的爆发&#xff0c;自动化测试与 RP…

作者头像 李华
网站建设 2026/5/28 16:50:48

jquery如何处理内网大文件的续传功能?

大文件传输功能技术方案调研与建议 作为广东XX软件公司的技术负责人&#xff0c;针对公司当前产品部门提出的大文件传输需求&#xff0c;我进行了深入的市场调研和技术分析。现将我的专业建议和技术方案汇报如下&#xff1a; 一、需求分析总结 核心功能需求&#xff1a; 支持…

作者头像 李华
网站建设 2026/6/6 2:26:27

新手也能上手AI论文平台,千笔 VS 灵感ai,专为本科生设计!

随着人工智能技术的迅猛发展&#xff0c;AI辅助写作工具已经逐渐成为高校学生完成毕业论文的重要助手。越来越多的学生开始借助这些工具提升写作效率、优化内容结构&#xff0c;甚至在开题报告和文献综述阶段也寻求智能支持。然而&#xff0c;面对市场上种类繁多的AI写作平台&a…

作者头像 李华
网站建设 2026/6/2 3:52:56

PLC控制梭式窑燃烧系统设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

PLC控制梭式窑燃烧系统设计 摘 要 近年来来随着电力电子技术的发展&#xff0c;梭式窑的控制上也越来越多的应用自动化的控制技术。梭式窑燃烧系统是由燃气燃烧器&#xff08;烧嘴&#xff09;、燃气阀组、助燃风机、流量计、压力变送器、点火装置、燃气/空气压力检测装置、火焰…

作者头像 李华