Cesium加载wms服务不进行切片加载
Cesium加载wms服务不进行切片加载常见情况下我们会通过WebMapServiceImageryProvider这个类加载geoserver发布出来的wms服务图层。/** * WMS服务图层 * param {string} url 底图对应的类型 * param {string} layers 图层名 */exportdefaultclassWMSLayerextendsCesium.WebMapServiceImageryProvider{constructor(url:string,layers:string,parameters{}){super({url,layers,parameters:{transparent:true,format:image/png,...parameters,},tilingScheme:newCesium.WebMercatorTilingScheme(),enablePickFeatures:false,});};};但是当图层具有文字标识的时候就会出现同一个几何被裁切出现多个标识的情况这个问题出现的原因是Cesium将wms服务切分成了256*256大小的瓦片进行叠加满足三维展示的需要。解决思路将wms图层按照Cesium当前视角下的最大经纬度范围和当前视图像素值加载出一整张图片在Cesium地球上进行叠加。获取视角下经纬度范围getScreenScope(){constrectanglethis.viewer.camera.computeViewRectangle();if(!rectangle){return;}this.rectanglerectangle;const{north,east,south,west,}rectangle;constsouthwestthis.getMetricCoordinates(Cesium.Math.toDegrees(west),Cesium.Math.toDegrees(south));constnortheastthis.getMetricCoordinates(Cesium.Math.toDegrees(east),Cesium.Math.toDegrees(north));return[...southwest,...northeast].join(,);};同时转换为EPSG:3857坐标系getMetricCoordinates(lngitude:number,latitude:number){constsourceProjectionEPSG:4326;consttargetProjectionEPSG:3857;constdegreesproj4(sourceProjection,targetProjection,[lngitude,latitude]);returndegrees;};获取当前视窗像素值const{width,height,}this.viewer.canvas.getBoundingClientRect();this.widthMath.ceil(width);this.heightMath.ceil(height);并且在每次视角变化结束时加载新的图片替换当前图层叠加新的图层。这里我们使用SingleTileImageryProvider这个类来实现图层的叠加。其中去需要注意的是每次移除和叠加图层的时候要保障前后图层处在同一个层级(index)并保持前后一些属性不变。完成代码importproj4fromproj4;import*asCesiumfromcesium;exportdefaultclassNoTileWMSLayer{viewer:Cesium.Viewer;width:number;height:number;baseUrl:string;layerName:string;index:number;rectangle?:Cesium.Rectangle;layer?:Cesium.ImageryLayer;constructor(viewer:Cesium.Viewer,options:{baseUrl:string,layerName:string,}){this.viewerviewer;this.baseUrloptions.baseUrl;this.layerNameoptions.layerName;this.indexthis.viewer.imageryLayers.length;const{width,height,}this.viewer.canvas.getBoundingClientRect();this.widthMath.ceil(width);this.heightMath.ceil(height);this.addLayer();(this.viewerasany).cameraChanged.push((){this.addLayer();});};private_show:booleantrue;getshow():boolean{returnthis._show;};setshow(isShow:boolean){constoldthis._show;if(isShow!old){this._showisShow;this.onShowChange();}};privateonShowChange(){if(this.layer){this.layer.showthis.show;}};private_splitDirection:Cesium.SplitDirectionCesium.SplitDirection.NONE;getsplitDirection():Cesium.SplitDirection{returnthis._splitDirection;};setsplitDirection(splitDirection:Cesium.SplitDirection){constoldthis._splitDirection;if(splitDirection!old){this._splitDirectionsplitDirection;this.onSplitDirectionChange();}};privateonSplitDirectionChange(){if(this.layer){this.layer.splitDirectionthis.splitDirection;}};getMetricCoordinates(lngitude:number,latitude:number){constsourceProjectionEPSG:4326;consttargetProjectionEPSG:3857;constdegreesproj4(sourceProjection,targetProjection,[lngitude,latitude]);returndegrees;};getScreenScope(){constrectanglethis.viewer.camera.computeViewRectangle();if(!rectangle){return;}this.rectanglerectangle;const{north,east,south,west,}rectangle;constsouthwestthis.getMetricCoordinates(Cesium.Math.toDegrees(west),Cesium.Math.toDegrees(south));constnortheastthis.getMetricCoordinates(Cesium.Math.toDegrees(east),Cesium.Math.toDegrees(north));return[...southwest,...northeast].join(,);};addLayer(){constbboxthis.getScreenScope();constoldLayerthis.layer;constparams{transparent:true,format:image/png,service:WMS,version:1.1.1,request:GetMap,layers:this.layerName,bbox,width:this.width,height:this.height,srs:EPSG:3857,};consturlParamsnewURLSearchParams();Object.entries(params).forEach(([key,value]){urlParams.append(key,String(value));});consturl${this.baseUrl}?${urlParams.toString()};this.indexthis.layer?this.viewer.imageryLayers.indexOf(this.layer):this.index;this.layerthis.viewer.imageryLayers.addImageryProvider(newCesium.SingleTileImageryProvider({url,rectangle:this.rectangle,tileWidth:this.width,tileHeight:this.height,}),Math.min(this.index,this.viewer.imageryLayers.length));if(this.layer){this.layer.showthis.show;this.layer.splitDirectionthis.splitDirection;}if(oldLayer){this.viewer.imageryLayers.remove(oldLayer);}};};通过这个方式加载就可以得到一个完整的wms服务constleftLayernewNoTileWMSLayer(window.mapViewer,{baseUrl:你的geoserver地址,layerName:你的图层名,});leftLayer.splitDirectionCesium.SplitDirection.LEFT;

相关新闻

3个关键步骤掌握BG3ModManager:专业级《博德之门3》模组管理解决方案

3个关键步骤掌握BG3ModManager:专业级《博德之门3》模组管理解决方案

3个关键步骤掌握BG3ModManager:专业级《博德之门3》模组管理解决方案 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 在《博德之门3》的…

2026/7/30 6:58:59 阅读更多 →
软考高级认证深度对比:系统规划与管理师 vs 信息系统项目管理师

软考高级认证深度对比:系统规划与管理师 vs 信息系统项目管理师

1. 项目概述:一场关于高级认证的深度抉择在IT技术与管理领域深耕多年,我经常被同行或后辈问到同一个问题:“系统规划与管理师和信息系统项目管理师,这两个高级资格认证,到底哪个更好考?” 这绝不是一个可以…

2026/7/30 6:58:59 阅读更多 →
高强度塑钢打包带的优势是什么

高强度塑钢打包带的优势是什么

高强度塑钢打包带的优势是什么在工业包装领域,高强度塑钢打包带的出现给货物打包带来了极大的便利。青岛昌瑞工业品有限公司作为行业内表现突出的企业,其生产的高强度塑钢打包带具有诸多显著优势。卓越的物理性能高强度塑钢打包带最大的亮点在于它卓越的…

2026/7/30 6:57:59 阅读更多 →

最新新闻

思源宋体CN:7字重开源字体完整使用终极指南

思源宋体CN:7字重开源字体完整使用终极指南

思源宋体CN:7字重开源字体完整使用终极指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 思源宋体CN(Source Han Serif CN)是Adobe与Google联合推…

2026/7/30 7:04:01 阅读更多 →
GetQzonehistory:3步完成QQ空间历史数据备份的终极免费工具

GetQzonehistory:3步完成QQ空间历史数据备份的终极免费工具

GetQzonehistory:3步完成QQ空间历史数据备份的终极免费工具 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年在QQ空间留下的青春印记吗?那些深夜的感…

2026/7/30 7:04:01 阅读更多 →
FreeMove完整指南:5分钟学会智能迁移文件夹,彻底解决C盘空间不足问题

FreeMove完整指南:5分钟学会智能迁移文件夹,彻底解决C盘空间不足问题

FreeMove完整指南:5分钟学会智能迁移文件夹,彻底解决C盘空间不足问题 【免费下载链接】FreeMove Move directories without breaking shortcuts or installations 项目地址: https://gitcode.com/gh_mirrors/fr/FreeMove 还在为C盘空间不足而烦恼…

2026/7/30 7:04:01 阅读更多 →
保研联系导师邮件撰写指南:从核心架构到避坑细节

保研联系导师邮件撰写指南:从核心架构到避坑细节

1. 项目概述:为什么一封邮件能决定你的保研走向?又到了每年保研季最关键的“套磁”环节。很多同学手握不错的成绩和科研经历,却在联系导师这一步上栽了跟头。我见过太多案例:有的同学发出去的邮件石沉大海,有的同学明明…

2026/7/30 7:04:01 阅读更多 →
Unity网络游戏开发避坑指南:Mirror预制体注册、权限管理与同步机制详解

Unity网络游戏开发避坑指南:Mirror预制体注册、权限管理与同步机制详解

1. 项目概述:为什么你的Mirror网络同步总在“踩坑”?如果你正在用Mirror做Unity网络游戏开发,大概率经历过这样的场景:本地测试一切正常,信心满满地打包发布,结果一进多人联机,角色瞬移、道具不…

2026/7/30 7:04:01 阅读更多 →
Java树形结构构建与优化实践指南

Java树形结构构建与优化实践指南

1. 树形结构构建工具概述树形结构是计算机科学中最基础的数据结构之一,广泛应用于各种业务场景。从文件系统目录到组织架构图,从商品分类到权限管理系统,树形结构几乎无处不在。在Java开发中,我们经常需要处理这类层级数据的构建、…

2026/7/30 7:03:00 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻