Cesium PolygonGeometry 添加面完整知识点  TS 代码
PolygonGeometryPrimitivePerInstanceColorAppearance专门渲染MULTIPOLYGON Z 带逐点高程三维空间面当前项目当前使用 区分PolygonGeometry三维空间面支持perPositionHeight:true每个顶点独立 Z 高程 ✅GroundPolygonGeometry贴地面丢弃顶点高程强制贴地形不能用在 MultiPolygon‑Z 数据❌一、核心 API 说明PolygonGeometry 参数const fillGeo new Cesium.PolygonGeometry({ polygonHierarchy: hierarchy, // 多边形层级外环 内环(洞) perPositionHeight: true, // ✅开启逐点高程MULTIPOLYGON‑Z必须打开 vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT });polygonHierarchyPolygonHierarchy(外环Cartesian3[], 内环洞数组)支持挖洞perPositionHeight:true每个顶点使用自身 Cartesian3 的高度形成起伏三维面vertexFormat使用PerInstanceColorAppearance必须配套这个顶点格式GeometryInstance实现每个面不同颜色new Cesium.GeometryInstance({ geometry: fillGeo, id: item.id, //拾取ID attributes: { // 每个实例独立颜色 color: Cesium.ColorGeometryInstanceAttribute.fromColor(fillColor) } })Primitive PerInstanceColorAppearanceconst prim new Cesium.Primitive({ geometryInstances: instances, appearance: new Cesium.PerInstanceColorAppearance({ translucent: true, //支持透明度 closed: true //几何体闭合 }), asynchronous: true });⚠️重要限制PerInstanceColorAppearance不支持 depthFailAppearance面被地形埋住直接看不见不能切换地下材质如果需要被遮挡也可见prim.depthTestEnabled false;关闭深度测试会浮在最上层牺牲三维真实感依靠attributes.color实现同一个 Primitive 里面多个面各自不同颜色。属性说明geometryInstancesGeometryInstance 数组一个面 一个实例appearancePerInstanceColorAppearance支持实例独立颜色asynchronoustrue 异步构建几何体大数据不阻塞页面prim.depthTestEnabledtrue 开启深度测试false 关闭永远显示在顶层二、基础完整示例单一个三维面带洞// 1.外环顶点带高程Z const outerRing [ Cesium.Cartesian3.fromDegrees(102.48, 24.70, 1600), Cesium.Cartesian3.fromDegrees(102.49, 24.71, 1620), Cesium.Cartesian3.fromDegrees(102.50, 24.70, 1580), Cesium.Cartesian3.fromDegrees(102.48, 24.70, 1600), // 闭合首尾相同 ]; // 2.内环挖洞可选 const holeRing [ Cesium.Cartesian3.fromDegrees(102.485, 24.703, 1605), Cesium.Cartesian3.fromDegrees(102.488, 24.706, 1610), Cesium.Cartesian3.fromDegrees(102.486, 24.702, 1602), Cesium.Cartesian3.fromDegrees(102.485, 24.703, 1605), ]; // 3.构建层级外环 多个内环洞 const hierarchy new Cesium.PolygonHierarchy(outerRing, [ new Cesium.PolygonHierarchy(holeRing) ]); // 4.生成几何体开启逐点高程 const polygonGeo new Cesium.PolygonGeometry({ polygonHierarchy: hierarchy, perPositionHeight: true, vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT }); // 5.包装实例设置本面颜色 const instance new Cesium.GeometryInstance({ geometry: polygonGeo, id: poly_001, attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE.withAlpha(0.35)) } }); // 6.创建Primitive const prim new Cesium.Primitive({ geometryInstances: instance, appearance: new Cesium.PerInstanceColorAppearance({ translucent: true, closed: true }), asynchronous: true }); // 如果需要被地形遮挡也可见打开下面 // prim.depthTestEnabled false; this.viewer.scene.primitives.add(prim);三、批量渲染多面你项目 MULTIPOLYGON Z 逻辑const tempFillInstances: Cesium.GeometryInstance[] []; // wktGeo.coordinates MULTIPOLYGON‑Z结构 wktGeo.coordinates.forEach((polygonParts: number[][][]) { if (!Array.isArray(polygonParts) || polygonParts.length 0) return; // polygonParts[0] 外环polygonParts[1...] 内环洞 const outerRingCoord polygonParts[0]; if (!Array.isArray(outerRingCoord) || outerRingCoord.length 3) return; //外环转Cartesian3 const outerPositions outerRingCoord.map(([lon, lat, h]) Cesium.Cartesian3.fromDegrees(lon, lat, h ?? 0) ); //处理挖洞内环 const holes: Cesium.PolygonHierarchy[] []; for (let i 1; i polygonParts.length; i) { const innerCoord polygonParts[i]; if (!Array.isArray(innerCoord) || innerCoord.length 3) continue; const innerPositions innerCoord.map(([lon, lat, h]) Cesium.Cartesian3.fromDegrees(lon, lat, h ?? 0) ); holes.push(new Cesium.PolygonHierarchy(innerPositions)); } const hierarchy new Cesium.PolygonHierarchy(outerPositions, holes); const fillGeo new Cesium.PolygonGeometry({ polygonHierarchy: hierarchy, perPositionHeight: true, vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT }); const fillColor Cesium.Color.fromCssColorString(colorStr).withAlpha(0.35); tempFillInstances.push(new Cesium.GeometryInstance({ geometry: fillGeo, id: item.id, attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor(fillColor) } })); }); // 渲染Primitive if(tempFillInstances.length 0){ const prim new Cesium.Primitive({ geometryInstances: tempFillInstances, appearance: new Cesium.PerInstanceColorAppearance({ translucent: true, closed: true }), asynchronous: true }); // prim.depthTestEnabled false; //需要强制可见打开 this.viewer.scene.primitives.add(prim); this.polygonPrimitiveMap.set(fill_${Math.random()}, prim); }四、拾取点击const handler new Cesium.ScreenSpaceEventHandler(this.viewer.canvas); handler.setInputAction((click) { const pick this.viewer.scene.pick(click.position); if (Cesium.defined(pick)) { console.log(面要素ID, pick.id); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK);五、销毁清除内存泄漏private polygonPrimitiveMap new Mapstring, Cesium.Primitive(); public clearPolygonPrimitive(){ this.polygonPrimitiveMap.forEach(prim{ this.viewer.scene.primitives.remove(prim); }) this.polygonPrimitiveMap.clear(); }六、重要坑清单perPositionHeight:true只对 PolygonGeometry 生效GroundPolygonGeometry 不支持会丢失 Z 高程。PerInstanceColorAppearance没有 depthFailAppearance三维面埋进山体直接看不见没有地下半透明方案。兜底prim.depthTestEnabledfalse。多边形顶点最少 3 个WKT 解析要校验少于 3 个直接跳过否则渲染崩溃。外环 / 内环建议首尾闭合即使不闭合 Cesium 内部会自动闭合。Primitive 一旦创建不能修改顶点坐标、不能修改单一面颜色更新数据必须全部销毁重新构建。想要每个面不同颜色必须给每个GeometryInstance设置attributes.color不能改 appearance 材质。透明度依靠withAlpha()PerInstanceColorAppearance构造参数translucent:true必须打开否则透明度失效。七、对比总表线 / 点 / 面要素几何体Appearance地下遮挡变色支持独立高程 Z三维折线PolylineGeometryPolylineMaterialAppearance✅ depthFailAppearance✅节点点PointPrimitiveCollection-✅ depthFailColor✅三维空间面PolygonGeometryPerInstanceColorAppearance❌无 API只能关闭 depthTestEnabled✅贴地面GroundPolygonGeometryPerInstanceColorAppearance❌❌丢弃高程业务选型总结MultiLineString‑Z 三维线PolylineGeometry Primitive depthFailAppearance折线上节点PointPrimitiveCollection depthFailColorMultiPolygon‑Z 带高程面PolygonGeometry PerInstanceColorAppearance地下看不见只能depthTestEnabledfalse兜底

相关新闻

深蓝词库转换:30+输入法格式互转终极解决方案

深蓝词库转换:30+输入法格式互转终极解决方案

深蓝词库转换:30输入法格式互转终极解决方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 深蓝词库转换是一款功能强大且完全免费的开源输入法词库转换…

2026/8/6 9:16:28 阅读更多 →
毕设开局不翻车[特殊字符]专业AI论文软件PaperXie,一键生成合规高分开题报告

毕设开局不翻车[特殊字符]专业AI论文软件PaperXie,一键生成合规高分开题报告

很多同学毕设开局就踩坑!开题报告作为毕业论文的第一道核心关卡,看似简单,实则格式严、逻辑密、内容要求高,是无数学生的毕业第一道难题。 市面上多数AI论文工具侧重论文中后期的降重、查重工作,开题创作能力薄弱&…

2026/8/6 9:15:28 阅读更多 →
问卷如何设计?

问卷如何设计?

问卷设计,远非简单的问题罗列。一份糟糕的问卷,不仅会浪费你的时间和预算,更可能因错误的数据导向,让你的决策南辕北辙。根据《哈佛商业评论》的研究,高达90%的市场调研失败,根源在于糟糕的问卷设计。如何设…

2026/8/6 9:15:28 阅读更多 →

最新新闻

3分钟搞定学术写作:让Word自动生成APA第7版格式的终极指南

3分钟搞定学术写作:让Word自动生成APA第7版格式的终极指南

3分钟搞定学术写作:让Word自动生成APA第7版格式的终极指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 你是否曾在深夜修改论文时&#…

2026/8/6 12:47:08 阅读更多 →
从VGA到HDMI:显示器接口原理、时序与硬件调试实战指南

从VGA到HDMI:显示器接口原理、时序与硬件调试实战指南

1. 项目概述:从“盲盒”到“接口”,硬件学习的必经之路 最近“硬件盲盒”这个概念挺火的,无论是智能车还是其他嵌入式项目,开箱未知硬件的刺激感确实吸引人。但玩过几次你就会发现,真正的挑战不在于“开箱”&#xff0…

2026/8/6 12:47:07 阅读更多 →
拼多多商品详情API调用实战与优化技巧

拼多多商品详情API调用实战与优化技巧

1. 项目概述:拼多多开放平台API商品详情获取在电商系统开发中,商品数据对接是最基础也最关键的环节。拼多多作为国内主流电商平台,其开放平台提供的商品详情API(Application Programming Interface)是开发者获取平台商…

2026/8/6 12:47:07 阅读更多 →
AI写白皮书≠AI堆文字:20年标准起草人首次披露“可信度权重算法”——让每段结论自带溯源链、引用置信度与版本追溯码

AI写白皮书≠AI堆文字:20年标准起草人首次披露“可信度权重算法”——让每段结论自带溯源链、引用置信度与版本追溯码

更多请点击: https://kaifayun.com 第一章:AI写白皮书≠AI堆文字:范式跃迁的本质辨析 传统文档生成工具常将白皮书写作简化为“关键词填充段落拼接”,而真正具备范式跃迁能力的AI白皮书系统,其核心在于结构化认知建模…

2026/8/6 12:47:07 阅读更多 →
AI做会员服务:你还在用规则引擎?2024必须掌握的动态意图识别+实时策略编排双引擎架构

AI做会员服务:你还在用规则引擎?2024必须掌握的动态意图识别+实时策略编排双引擎架构

更多请点击: https://kaifayun.com 第一章:AI做会员服务 人工智能正深度重构会员服务的底层逻辑——从被动响应转向主动预判,从千人一面转向一人一策。在用户生命周期管理的关键触点上,AI不再仅是客服对话的补充工具,…

2026/8/6 12:47:07 阅读更多 →
强迫症删完快捷箭头全图标带黑斑?两种办法快速恢复干净桌面

强迫症删完快捷箭头全图标带黑斑?两种办法快速恢复干净桌面

很多 Windows 用户为了桌面整洁,会通过注册表、优化软件去除快捷方式左下角的小箭头,但操作完成后反倒遇上新麻烦:所有软件快捷图标原本箭头的位置出现醒目的黑色方块,中等图标尺寸下黑斑尤其明显,放大缩小看着十分杂乱…

2026/8/6 12:46:07 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →