新版Cesium加载地形terrainProvider报错
发表于:2023-12-25 |

前言

流氓,简直流氓!Cesium更新都不带兼容老版本Api的,我最近在玩Cesium的时候发现了这个bug,研究了一下如何修复这个

问题

在老版本中,我们加载地形数据就是这样的

1
2
3
4
terrainProvider: Cesium.createWorldTerrain({
requestVertexNormals: true, //请求陆地
requestWaterMask: true, //请求海洋
}),

又或者加载单个是这样的

1
2
3
terrainProvider: new Cesium.CesiumTerrainProvider({
url: "./terrains/gz",
}),

现如今这俩都用不了

解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 添加地形数据
const addWorldTerrainAsync = async (viewer: Cesium.Viewer) => {
try {
const terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(
"./terrains/gz",
{
requestWaterMask: true,
requestVertexNormals: true,
}
);

viewer.terrainProvider = terrainProvider;
} catch (error) {
console.log(`Failed to add world imagery: ${error}`);
}
};

或者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 添加地形数据
const addWorldTerrainAsync = async (viewer: Cesium.Viewer) => {
try {
const terrainProvider = await Cesium.createWorldTerrainAsync({
requestWaterMask: true,
requestVertexNormals: true,
});

viewer.terrainProvider = terrainProvider;
} catch (error) {
console.log(`Failed to add world imagery: ${error}`);
}
};

结语

这个bug真的是让人很无语,不过还好解决方案也很简单,就是把老版本的地形加载方式换成新版本的就行了。

上一篇:
回顾2023年展望2024年
下一篇:
实现一个颜色吸管