You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cesium自定义地形无法从CDN加载,请求排查原因

解决Cesium加载CDN托管自定义地形不显示的问题

1. 检查CORS跨域配置

Cesium从CDN加载地形时,即使文件能直接访问,若CDN/云存储桶未配置正确的CORS规则,浏览器会限制Cesium解析地形数据。

  • 确保CDN或存储桶的CORS规则允许你的Cesium应用域名发起请求,至少包含:
    • 允许的Origin:你的应用域名(测试阶段可临时用*)
    • 允许的Method:GET、HEAD
    • 允许的Header:Content-Type、Accept等常用请求头

2. 验证layer.json中的URL路径

Cesium Terrain Builder生成的layer.json可能包含本地路径,上传CDN后需修正路径匹配:

  • 打开https://mycdn.com/terrains/terrain1/layer.json,检查tiles字段的URL模板,需为相对路径或完整CDN路径:
    正确示例(相对路径):
    "tiles": [
      "{z}/{x}/{y}.terrain"
    ]
    
    或完整CDN路径模板:
    "tiles": [
      "https://mycdn.com/terrains/terrain1/{z}/{x}/{y}.terrain"
    ]
    
    若模板是本地服务器路径,需修改为上述两种格式之一。

3. 确认地形瓦片的Content-Type

部分CDN会错误识别.terrain文件类型,导致Cesium无法解析:

  • 确保所有.terrain文件的Content-Type设置为application/octet-stream或application/vnd.quantized-mesh
  • 可在上传时手动指定,或在存储桶的文件元数据中修改该属性

4. 检查Cesium地形加载代码

确保地形提供者的配置指向正确的目录,而非直接指向layer.json:

const viewer = new Cesium.Viewer('cesiumContainer');
viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
  url: 'https://mycdn.com/terrains/terrain1',
  requestVertexNormals: false, // 根据地形成品是否包含法线调整
  requestWaterMask: false // 无水分层数据时设为false
});

5. 排查缓存问题

浏览器缓存可能导致旧配置或数据残留:

  • 打开Chrome开发者工具,勾选「Disable cache」后刷新页面测试
  • 用隐私模式加载应用,或清除浏览器缓存后重试

内容的提问来源于stack exchange,提问作者Sagi Mann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:05:51