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

JSAPIThree 加载 Cesium 数据学习笔记:使用 Cesium 地形和影像服务

作为一个刚开始学习 mapvthree 的小白,今天要学习加载 Cesium 数据了!听说这个功能可以加载真实的地形数据,还能使用 Cesium 的影像服务!想想就期待!

第一次听说 Cesium 数据加载

今天在文档里看到了"Cesium"这个词。文档说 Cesium 数据加载可以:

  • 加载真实的地形数据
  • 使用 Cesium 的影像服务
  • 支持 Cesium Ion 服务
  • 需要配置 AccessToken

我的理解:简单说就是"用 Cesium 的地形和影像服务",让场景有真实的地形起伏!

第一步:配置 Cesium Ion AccessToken

作为一个初学者,我习惯先看看需要什么配置。文档说使用 Cesium 服务需要配置 Cesium Ion AccessToken!

我的发现:Cesium 需要 AccessToken 才能使用,这是必须的配置!

获取 Cesium Ion AccessToken

  1. 访问 Cesium ion 获取 accessToken
  2. 在项目中配置

全局配置 AccessToken

获取 AccessToken 后,在项目的入口处进行配置,全局执行一次即可:

import * as mapvthree from '@baidumap/mapv-three';// 配置 Cesium accessToken
mapvthree.CesiumConfig.accessToken = '您的accessToken';

我的理解:全局配置后,使用 Cesium 的所有服务都不需要再配置了!

临时配置 AccessToken

如果没有全局配置,可以在构造函数参数中临时配置:

const mapView = engine.add(new mapvthree.MapView({terrainProvider: new mapvthree.CesiumTerrainTileProvider({accessToken: '您的accessToken', // 临时配置 Cesium accessToken}),
}));

我的发现:可以全局配置,也可以临时配置,根据需求选择!

第二步:加载 Cesium 地形

看到需要配置 AccessToken 后,我想:怎么加载地形?

文档说可以用 CesiumTerrainTileProvider 来加载 Cesium 地形!

import * as mapvthree from '@baidumap/mapv-three';const container = document.getElementById('container');const engine = new mapvthree.Engine(container, {map: {center: [94.09, 30.64],range: 50000,pitch: 50,provider: null, // 设置为 null,稍后手动添加},
});// 添加 Cesium 地形
const mapView = engine.add(new mapvthree.MapView({terrainProvider: new mapvthree.CesiumTerrainTileProvider({// accessToken: '您的accessToken', // 如果没有全局配置,可以在这里直接传入}),imageryProvider: new mapvthree.BingImageryTileProvider(),
}));

我的发现:地形数据会让场景有真实的起伏,看起来更真实!

我的理解

  • 优点:真实的地形数据,场景更立体
  • 缺点:需要网络请求,加载时间较长
  • 适用场景:需要真实地形展示的场景

自定义地形服务

如果不提供 url 自定义地形服务,默认使用 Cesium 官方服务。如果需要使用自定义地形服务:

const mapView = engine.add(new mapvthree.MapView({terrainProvider: new mapvthree.CesiumTerrainTileProvider({url: '您的自定义地形服务地址',accessToken: '您的accessToken',}),
}));

我的发现:可以使用自定义地形服务,也可以使用 Cesium 官方服务!

第三步:配合影像图层使用

看到可以加载地形后,我想:地形是灰色的,能不能加上影像?

文档说可以配合影像图层使用,比如 BingImageryTileProvider

const mapView = engine.add(new mapvthree.MapView({terrainProvider: new mapvthree.CesiumTerrainTileProvider({// 地形数据}),imageryProvider: new mapvthree.BingImageryTileProvider({// 影像数据}),
}));

我的发现:地形提供高度信息,影像提供颜色信息,两者配合才能看到完整的地图!

我的理解

  • terrainProvider:提供地形高度数据
  • imageryProvider:提供影像颜色数据
  • 两者配合使用,效果最好

第四步:理解 MapView 结构

看到可以加载地形和影像后,我想:它们是怎么组织的?

文档说 MapView 是引擎中底图的容器,包含 RasterSurfaceVectorSurface

我的理解

  • terrainProvider:地形数据,属于 RasterSurface
  • imageryProvider:影像数据,属于 RasterSurface
  • 多个 ImageryTileProvider 可以叠加渲染

我的发现

  • RasterSurface 能保证图层之间叠加顺序的正确性
  • 适合二维地图的渲染
  • 多个影像图层可以叠加,并分层设置透明度

第五步:完整示例

我想写一个完整的示例,把学到的都用上:

import * as mapvthree from '@baidumap/mapv-three';// 全局配置 Cesium accessToken
mapvthree.CesiumConfig.accessToken = '您的accessToken';const container = document.getElementById('container');const engine = new mapvthree.Engine(container, {map: {center: [94.09, 30.64],range: 50000,pitch: 50,provider: null, // 设置为 null,稍后手动添加},
});// 添加 Cesium 地形和影像
const mapView = engine.add(new mapvthree.MapView({terrainProvider: new mapvthree.CesiumTerrainTileProvider({// 使用默认的 Cesium 官方服务}),imageryProvider: new mapvthree.BingImageryTileProvider({// 使用 Bing 影像服务}),
}));

我的感受:写一个完整的示例,把学到的都用上,感觉很有成就感!

第六步:踩过的坑

作为一个初学者,我踩了不少坑,记录下来避免再犯:

坑 1:地形不显示

原因:没有配置 Cesium Ion AccessToken,或者 AccessToken 配置错误。

解决:确保正确配置了 Cesium Ion AccessToken,可以全局配置或临时配置。

坑 2:地形显示为灰色

原因:只加载了地形,没有加载影像图层。

解决:同时配置 terrainProviderimageryProvider

坑 3:地形加载很慢

原因:地形数据量大,网络请求需要时间。

解决:这是正常现象,地形数据需要从服务器加载,请耐心等待。

坑 4:AccessToken 过期

原因:Cesium Ion AccessToken 可能过期。

解决:重新获取 AccessToken 并更新配置。

坑 5:自定义地形服务不工作

原因:地形服务地址错误,或者格式不对。

解决:确保地形服务地址正确,格式符合 Cesium Terrain 规范。

我的学习总结

经过这一天的学习,我掌握了:

  1. 配置 Cesium Ion AccessToken:全局配置或临时配置
  2. 加载 Cesium 地形:使用 CesiumTerrainTileProvider
  3. 配合影像图层:使用 imageryProvider 提供影像数据
  4. 自定义地形服务:可以使用自定义地形服务地址
  5. MapView 结构:理解地形和影像在 MapView 中的组织方式

我的感受:Cesium 数据加载功能真的很强大!虽然配置有点复杂,但是用起来其实不难。关键是要理解地形和影像的关系,然后正确配置 AccessToken!

下一步计划

  1. 学习更多地形和影像的配置选项
  2. 尝试使用自定义地形服务
  3. 做一个完整的地形展示项目

学习笔记就到这里啦!作为一个初学者,我觉得 Cesium 数据加载虽然配置有点复杂,但是用起来其实不难。关键是要理解地形和影像的关系,然后正确配置 AccessToken!希望我的笔记能帮到其他初学者!大家一起加油!

http://www.jsqmd.com/news/60466/

相关文章:

  • 从不足到精进:H5即开并行加载方案的演进之路
  • 2025国内最好的出国留学中介公司
  • 基于 STM32 的老人摔倒报警装置项目【源码分享】
  • 2025出国留学中介哪个最好
  • 2025年12月东莞律师服务排名:基于真实数据与用户反馈的详细解析
  • 2025北京留学中介机构哪个好
  • 2025年越野高尔夫球车供货厂家权威推荐榜单:4座高尔夫球车‌/定制高尔夫球车‌/电动高尔夫球车‌源头厂家精选
  • 2025澳大利亚留学中介前十名
  • 2025年领先品牌认证机构推荐:哪家性价比最优?深度实测与案例验证分析
  • 详细介绍:相平面控制:深入解析一种经典的非线性控制系统设计方法
  • 2025年销量领先认证机构推荐:哪家性价比更高?权威数据与案例比对
  • 2025年,国内外最火的10款降AI率工具亲测!(持续更新)
  • BindingSource绑定
  • 2025年晃香油机器直销厂家权威推荐榜单:水代法晃油机‌/香油墩油机‌/香油晃油机‌源头厂家精选
  • 完整教程:SpringAI1.0.1实战教程:避坑指南25年8月最新版
  • 2025年导热油加热器厂家实力推荐,看看哪家品牌的质量好
  • jenkins上执行某个python代码,日志没有打印,如何处理
  • 沉浸式雨天海岸:用A-Frame打造WebXR互动场景 - 实践
  • 游记:NOIP2025 游记
  • pdf转png的4个实用方法!看看涨知识
  • 齿轮与光阴的叙事:不二越 NACHI 官方认证十大优秀代理商全名单
  • 成都地区有实力的石栏杆生产厂家怎么选?求口碑推荐
  • 成都石栏杆厂家十大排名:2025 年权威推荐榜发布
  • 2025成都出国留学中介公司
  • Python的终端彩色输出:termcolor库
  • 2025比较好的留学机构深圳
  • 效果好的眼霜有没有推荐的?25年公认好用抗皱紧致眼霜推荐:淡化黑眼圈眼袋
  • 2025年宁波同城奢侈品收购公司五大推荐:看哪家信誉好
  • 2025年工厂用通风机定制哪家好、厨房用通风机供应商、商场用
  • 2025年品牌认证机构推荐:哪家服务更优?行业数据与口碑分析