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

【GIS】Cesium:快速加载地图

本教程将帮助初学者从零搭建 Cesium 开发环境,并构建一个最基础的 Cesium 项目,逐步学习如何加载影像数据(包括 天地图OpenStreetMap),实现一个可用的三维数字地球场景。

一、准备工作

Cesium 是一个基于 JavaScript 的 3D 地理信息可视化框架,支持浏览器直接运行。我们需要准备一个简单的 HTML 文件,并通过在线或本地引入 Cesium 资源。


二、注册 Cesium Ion(可选)

如果你希望使用 Cesium 官方的高精度地形和影像数据,需要注册 Cesium Ion 获取 Token。
如果你只使用 天地图OpenStreetMap 等免认证地图,可以跳过本节。

1. 访问官网

前往 Cesium 官网。

2. 注册账户

点击右上角 Sign Up 注册免费账户,并登录。

3. 获取 API Token

  1. 进入 Cesium Ion 控制台。
  2. 在左侧菜单中选择 Access Tokens
  3. 创建一个新的 Token,例如命名为 My Cesium Token
  4. 保存生成的 Token,后续在代码中使用。

三、创建 HTML 项目

1. 新建 HTML 文件

使用 VSCode、Sublime Text 或 Notepad++ 新建文件,命名为 index.html

2. 基础 HTML 结构

以下是一个完整的 Cesium 最小示例,使用 Cesium Ion Token 加载默认地球场景。

YOUR_ACCESS_TOKEN 替换为你实际的 Cesium Token。

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>My First Cesium App</title><script>// 设置 Cesium 资源加载的基础路径window.CESIUM_BASE_URL = 'https://cdn.bootcdn.net/ajax/libs/cesium/1.130.1';</script><!-- 引入 Cesium JS 核心库 --><script src="https://cdn.bootcdn.net/ajax/libs/cesium/1.130.1/Cesium.min.js"></script><!-- 引入 Cesium 基础样式 --><link href="https://cdn.bootcdn.net/ajax/libs/cesium/1.130.1/Widgets/widgets.min.css" rel="stylesheet"><style>/* 页面及 Cesium 容器全屏显示 */html,body,#cesiumContainer {width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden;}</style>
</head><body><!-- Cesium 地图容器 --><div id="cesiumContainer"></div><!-- Cesium JavaScript 文件 --><script src="https://cesium.com/downloads/cesiumjs/releases/1.111/Build/Cesium/Cesium.js"></script><script>// 设置 Cesium Ion TokenCesium.Ion.defaultAccessToken = 'YOUR_ACCESS_TOKEN';// 初始化 Cesium Viewerconst viewer = new Cesium.Viewer('cesiumContainer');</script>
</body></html>
  • Cesium.Ion.defaultAccessToken
    用于访问 Cesium 官方地形和影像。
  • Cesium.Viewer
    Cesium 的核心类,用于初始化三维地球。
  • CSS 设置
    通过 width:100%height:100% 让 Cesium 全屏显示。

四、无 Token 初始化

如果你不想使用 Cesium Ion,可以使用 无 Token 模式,并完全自定义底图。

Cesium.Ion.defaultAccessToken = null;const viewer = new Cesium.Viewer('cesiumContainer', {imageryProvider: false,                // 不加载默认影像terrainProvider: new Cesium.EllipsoidTerrainProvider(), // 使用默认椭球体地形/* 关闭 Cesium 默认 UI 控件 */animation: false,           // 动画控件timeline: false,            // 时间轴baseLayerPicker: false,     // 图层选择器homeButton: false,          // 首页按钮geocoder: false,            // 地名搜索sceneModePicker: false,     // 2D/3D 切换navigationHelpButton: false,// 帮助按钮fullscreenButton: false,    // 全屏按钮vrButton: false,            // VR 模式按钮infoBox: false,             // 信息框selectionIndicator: false,  // 选择指示器// 隐藏 Cesium 默认 logocreditContainer: document.createElement('div')
});

此时,你将获得一个 纯净的 Cesium 空白地球,没有任何默认图层或 UI。


五、加载天地图影像

天地图(Tianditu)提供中国官方的矢量、影像和注记地图服务,支持 WMTS 协议。

1. 申请天地图 Key

  1. 访问 天地图官网。
  2. 进入 开发资源。
  3. 注册并申请 Key,作为后续接口调用凭证。

2. 加载矢量底图

const MAP_KEY = '你的天地图Key';viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({url: `http://t0.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=vec&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=${MAP_KEY}`,layer: 'tdtVecBasicLayer',style: 'default',format: 'image/jpeg',tileMatrixSetID: 'GoogleMapsCompatible'
}));

3. 加载矢量注记

viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({url: `http://t0.tianditu.gov.cn/cva_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cva&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=${MAP_KEY}`,layer: 'tdtAnnoLayer',style: 'default',format: 'image/jpeg',tileMatrixSetID: 'GoogleMapsCompatible'
}));

4. 加载影像底图

viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({url: `http://t0.tianditu.gov.cn/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=${MAP_KEY}`,layer: 'tdtBasicLayer',style: 'default',format: 'image/jpeg',tileMatrixSetID: 'GoogleMapsCompatible'
}));

5. 加载影像注记

viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({url: `http://t0.tianditu.gov.cn/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=${MAP_KEY}`,layer: 'tdtAnnoLayer',style: 'default',format: 'image/jpeg',tileMatrixSetID: 'GoogleMapsCompatible'
}));

六、暗色系效果

通过修改 imagery.hueimagery.contrast,可以让地图更偏向暗色视觉风格:

let imagery = viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({url: `http://t0.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=vec&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=${MAP_KEY}`,layer: 'tdtVecBasicLayer',style: 'default',format: 'image/jpeg',tileMatrixSetID: 'GoogleMapsCompatible'
}));imagery.hue = 3;       // 调整色调
imagery.contrast = -1.2;// 降低对比度

七、加载 OpenStreetMap

OpenStreetMap 是一个全球开源地图数据源,无需注册或认证,但国内访问速度较慢,仅适合学习测试。

viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({url: 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png'
}));

注意

  • OpenStreetMap 数据仅用于学习研究,不可用于正式业务或涉及国家测绘标准的项目。
  • 在中国境内使用时,请严格遵守相关法律法规。

八、总结

通过本教程,你已经学会了:

  1. 基础环境搭建:引入 Cesium 并创建最小示例。
  2. 无 Token 模式:纯净初始化 Cesium。
  3. 加载天地图:包含矢量、影像及注记。
  4. 相机控制:定位到指定位置。
  5. 地图视觉优化:暗色风格调整。
  6. 加载 OpenStreetMap:快速免认证测试。

下一步可以尝试加载 3D Tiles 模型、地形数据,以及更多 Cesium 的交互功能。


文章转载自:

http://Rvbqyfeq.wptrm.cn
http://9DGTRI65.wptrm.cn
http://qvz0qlfp.wptrm.cn
http://4oeMi2gJ.wptrm.cn
http://mCLpqrUX.wptrm.cn
http://YjSdU71y.wptrm.cn
http://kjVMgGeN.wptrm.cn
http://zOOK9ELp.wptrm.cn
http://fthcodVS.wptrm.cn
http://jMVRnuof.wptrm.cn
http://O6lw0oLW.wptrm.cn
http://EjacylDv.wptrm.cn
http://h89WIgA5.wptrm.cn
http://UjEGDFWm.wptrm.cn
http://VfW588Ti.wptrm.cn
http://ann2Hegc.wptrm.cn
http://DrVJXpcV.wptrm.cn
http://uXX6jBi0.wptrm.cn
http://KnvfB66v.wptrm.cn
http://77hazZOB.wptrm.cn
http://wLYAv4ex.wptrm.cn
http://GOoheShu.wptrm.cn
http://bZzvjxUC.wptrm.cn
http://lJWHMStd.wptrm.cn
http://Laz9HHbS.wptrm.cn
http://GJ5nGSHJ.wptrm.cn
http://t9BOHoFd.wptrm.cn
http://hL4YBX23.wptrm.cn
http://Hh9TR1Tc.wptrm.cn
http://LyX9YFeW.wptrm.cn
http://www.dtcms.com/a/380847.html

相关文章:

  • 【硬件-笔试面试题-92】硬件/电子工程师,笔试面试题(知识点:米勒效应,米勒平台)
  • 定点巡检、实时巡检详解和两者的区别对比
  • AI 编程工具选型速览(2025-09 版)
  • 2025年渗透测试面试题总结-66(题目+回答)
  • DOTA-Cys-Tyr-Leu-Ala-Ser-Arg-Val-His-Cys(一对二硫键)
  • ARPO: End-to-End Policy Optimization for GUI Agents with Experience Replay
  • 数模电2,9.12
  • 51c大模型~合集181
  • 【硬件-笔试面试题-89】硬件/电子工程师,笔试面试题(知识点:线性稳压电源LDO的效率计算)
  • Docker基础篇03:Docker常用命令
  • 【数据结构与算法Trip第3站】双指针
  • html实现右上角有个图标,鼠标移动到该位置出现手型,点击会弹出登录窗口。
  • mqtt学习笔记
  • C# DataGridView表头自定义设置全攻略
  • 《深入理解Java虚拟机》第三章读书笔记:垃圾回收机制与内存管理
  • 二叉树的最大深度
  • MySQL数据库-02(SQL语言基础)
  • Java POI实现对docx文件搜索指定文本进行批注/评论
  • Hugging Face NLP课程学习记录 - 3. 微调一个预训练模型
  • Java IO流(字节流和字符流)
  • Python 操作Office的PPT、Word、Excel,同时兼容WPS
  • SW - 剖面视图不显示剖面的显示选项
  • 基于STM32设计的智能蜂箱监测系统设计
  • 将Ansible与这些监控工具集成,实现自动化运维
  • USB3.0 Type C IO介绍
  • cuda编程笔记(19)-- Transformer注意力机制的实现
  • Pot Translator,跨平台划词翻译与OCR工具
  • Java面试指南——当对象开启“变形记”:序列化反序列化
  • Vue3组件数据双向绑定
  • 死锁检测算法的实现方式-Java