前言
流氓,简直流氓!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真的是让人很无语,不过还好解决方案也很简单,就是把老版本的地形加载方式换成新版本的就行了。