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

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>
http://www.jsqmd.com/news/341605/

相关文章:

  • 别再只做能耗统计了:零碳园区需要的是“碳排闭环”
  • 2026年可持续发展与城市规划国际学术会议(SDUP 2026)
  • 计算机毕业设计springboot基于+Vue的招投标系统的设计与实现 基于 SpringBoot+Vue 的电子招投标管理系统的设计与实现 基于 SpringBoot 和 Vue 框架的招投标全流
  • 2026年沈阳伴手礼推荐榜单:老字号/非遗/网红爆款伴手礼深度解析,甄选正宗百年风味与创意之选 - 品牌企业推荐师(官方)
  • 如何将闲置的沃尔玛购物卡高价回收变现?答案在这里 - 团团收购物卡回收
  • 2026国内最新欧松板厂家TOP5推荐:环保家装柜体材料品牌权威榜单,适配多空间健康家居需求 - 品牌推荐2026
  • 漏洞全揭秘之:SSRF漏洞深度解析
  • 学霸同款9个降AI率工具 千笔AI帮你高效降AIGC
  • QCustomPlot利用QCPItemStraightLine实现鼠标跟踪线
  • 在Cursor中使用Skills功能
  • 成为高级电源工程师的必备工具-MathCAD
  • 2026年性价比高的信用贷款公司有哪些?说说信用贷款公司选择要点 - mypinpai
  • 沃尔玛购物卡快速回收:教你变现的最佳攻略 - 团团收购物卡回收
  • invalid byte sequence for encoding
  • 2026年 NFC卡定制厂家推荐排行榜:NFC电子标签/NFC芯片贴/NFC门禁卡/NFC防伪标签,创新智能与耐用品质的源头之选 - 品牌企业推荐师(官方)
  • 2026年环境工程服务商选购指南,盈尚环境工程有限公司服务商技术水平怎样 - 工业设备
  • 必收藏|人工智能体入门详解(小白/程序员必看):不是聊天机器人,是未来超级助手
  • 兴义市英语雅思培训机构推荐?2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 福泉市英语雅思培训机构推荐|2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 红队避坑封神!4 个致命操作差点行业拉黑,合法攻击边界 + 信息收集实战全解析
  • 机械手上下料的PLC 控制设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 必读:山东菏泽测试团队的全球化远程协作宪章
  • 成都恒利泰:国产LTCC滤波器的逆袭之路
  • 聊聊卡西欧手表批发,靠谱的品牌企业有哪些值得选 - 工业品网
  • 区块链存证技术原理与软件测试的契合性
  • 2026年国有资产管理系统私有化部署 不动产管理公司推荐 - 品牌2025
  • 2026年贵州地区环形轻质瓦斯抽放管生产商排名,哪家性价比高? - 工业推荐榜
  • 2026国内最新木纹板材生产厂家TOP5推荐:环保家装/全屋定制柜体板材品牌权威榜单发布,多场景适配助力品质家居打造 - 品牌推荐2026
  • 聊聊2026年资质齐全的氯化镁品牌产品,哪家性价比高 - mypinpai
  • 计算机毕业设计之jsp惠友电子产品网上商城的设计与实现