news 2026/5/30 18:10:19

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/5/20 14:48:51

CraftCMS CVE-2025-32432 远程代码执行漏洞利用工具

&#x1f9e8; CraftCMS CVE-2025-32432 远程代码执行漏洞利用工具 &#x1f4cb; 项目概述 本项目是一个针对CraftCMS 4.x和5.x版本中存在的CVE-2025-32432预认证远程代码执行&#xff08;RCE&#xff09;漏洞的专业自动化利用工具。该漏洞存在于资产转换生成端点&#xff0…

作者头像 李华
网站建设 2026/5/28 1:24:29

收藏!35岁程序员转行大模型领域,8步落地规划(小白也能看懂)

对于35岁的程序员而言&#xff0c;转行从来不是“从零开始”&#xff0c;而是“技能重塑”——大模型作为当下最热门的技术赛道&#xff0c;凭借你多年的编程功底&#xff0c;只要找对方法、稳步推进&#xff0c;完全可以顺利切入。下面这份可直接落地的转行准备规划&#xff0…

作者头像 李华
网站建设 2026/5/28 2:21:05

2026年技术面试心理抗压测试:软件测试从业者的专业应对指南

一、引言&#xff1a;技术面试变革的背景与意义 2026年起&#xff0c;全球科技企业正逐步将心理抗压测试纳入技术面试标准流程&#xff0c;这一变革源于行业对人才综合素质的更高要求。软件测试作为软件开发的关键环节&#xff0c;从业者需在高压环境下确保产品质量&#xff0…

作者头像 李华
网站建设 2026/5/30 7:20:44

成为高级电源工程师的必备工具-MathCAD

软件介绍 Mathcad 是美国 PTC 公司旗下的一款工程计算软件,在工程、科学、金融等领域应用广泛。以下是其相关介绍: 软件下载地址: Mathcad15下载--快快点我 功能特点 强大的计算能力 :支持代数运算、线性代数、微积分、符号计算等多种数学运算,能处理复杂的数学公式…

作者头像 李华
网站建设 2026/5/29 18:17:40

计算机毕业设计之jsp惠友电子产品网上商城的设计与实现

近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;惠友电子产品网上商城利用计算机网络实现信息化管理&#xff0c;使整个惠友电子产品网上商城的发展和服务水平有显著提升。本文拟采用…

作者头像 李华