注意:
版本 107 中出现了一些重大更改,
解决办法
createWorldImagery被替换为createWorldImageryAsync
createWorldTerrain被替换为createWorldTerrainAsync
并且必须使用await等待这些函数的结果,如下:
适用于1.107.0 版本前:
<template>
<div style="100vh">
<div id="cesiumContainer" />
</div>
</template>
<script>
export default {
data() {
return {};
},
mounted() {
let viewer = new Cesium.Viewer("cesiumContainer", {
terrainProvider: Cesium.createWorldTerrain(),
});
},
};
</script>
或者
terrainProvider: new Cesium.CesiumTerrainProvider({
url: "http://data.marsgis.cn/terrain",
}),
1.107.0 之后:
const viewer = new Cesium.Viewer("cesiumContainer", {
infoBox: false,
selectionIndicator: false,
shadows: true,
shouldAnimate: true,
terrainProvider: await Cesium.createWorldTerrainAsync()
})
或者:
// 添加地形数据
const addWorldTerrainAsync = async (viewer: Cesium.Viewer) => {
try {
const terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(
"//data.mars3d.cn/terrain",
{
requestWaterMask: true,
requestVertexNormals: true,
}
);
viewer.terrainProvider = terrainProvider;
} catch (error) {
console.log(`Failed to add world imagery: ${error}`);
}
};
或者
// 添加地形数据
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}`);
}
};