Cesium快速入门27:GeoJson自定义样式

上一节我们把 GeoJSON 成功"搬"进了地球,但默认白膜+黑边看起来总归有点"素"。

今天给它来点颜色------随机染色、挤出高度、取消边框,再顺手把属性数据掏出来,让地图既好看又有"统计味儿"。


一、拿到每个实体,再"穿衣戴帽"

GeoJsonDataSource.load 返回的是 Promise,解包后就能遍历里面所有实体:

复制代码
scGeoJson.then((dataSource) => {
  viewer.dataSources.add(dataSource);

  /* 遍历每个省份/区域 */
  dataSource.entities.values.forEach((entity) => {
    /* 1. 随机颜色 + 半透明 */
    entity.polygon.material = Cesium.Color.fromRandom({ alpha: 0.5 });

    /* 2. 取消边框,干净利落 */
    entity.polygon.outline = false;

    /* 3. 挤出 3 万米,立刻"立"起来 */
    entity.polygon.extrudedHeight = 30000.0;

    /* 4. 顺便打印名字,看看谁是谁 */
    console.log(entity.properties.name._value);
  });
});

刷新地球------瞬间五颜六色,像积木一样全站了起来。


二、颜色、高度、边框,想怎么玩就怎么玩

目标 字段 示例
换颜色 polygon.material 纯色、图片、甚至自定义 MaterialProperty
去边框 polygon.outline false 秒变"无框"
挤出高度 polygon.extrudedHeight 30000.0(单位:米)
抬到空中 polygon.height 先整体抬,再挤出,可做"悬浮"效果

三、高度别乱随机------用"有意义"的数据更香

GeoJSON 里自带属性,例如人口、GDP、确诊人数,全藏在 entity.properties 里:

复制代码
// 拿"北京市"的属性示例
const name = entity.properties.name._value;        // "北京市"
const level = entity.properties.level._value;      // "province"
// 你可以把"人口"当成挤出高度,疫情人数映射成颜色......

思路:

  • 人口越多 → extrudedHeight 越高;

  • 确诊越多 → 颜色越红;

  • GDP 越高 → 透明度越低,金光闪闪。

    这样"好看"瞬间升级为"可视化叙事"。

相关推荐
CodeSheep9 分钟前
OpenJDK 全面禁止 AI 生成代码!
前端·后端·程序员
IT_陈寒36 分钟前
为什么我的Vue组件总是莫名其妙重渲染?
前端·人工智能·后端
乘风gg1 小时前
企业级 AI Coding 的 Harness 工程实战:8 个 Skill 串起全链路
前端·ai编程·claude
染指11103 小时前
103.RAG-LLamaIndex后端rag问答-聊天接口
前端·javascript·vue.js·人工智能
东风破_10 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_10 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
蒲公英eric10 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_0111 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余11 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei11 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程