首页 / 浏览问题 / 三维GIS / 问题详情
加载地形方法进不去
72EXP 2022年06月10日

代码执行后进入不到Cesium.when( )  里面,我主要想要知道updatedPositions 这个值都有什么是干什么的???

// Query the terrain height of two Cartographic positions
var terrainProvider = new Cesium.CesiumTerrainProvider({
    url : 'https://assets.agi.com/stk-terrain/v1/tilesets/world/tiles'
});
var positions = [
    Cesium.Cartographic.fromDegrees(86.925145, 27.988257),
    Cesium.Cartographic.fromDegrees(87.0, 28.0)
];
var promise = Cesium.sampleTerrainMostDetailed(terrainProvider, positions);
Cesium.when(promise, (updatedPositions)=> {   //进不去该方法
     console.log(updatedPositions,'updatedPositions');   //打印不出来
    // positions[0].height and positions[1].height have been updated.
    // updatedPositions is just a reference to positions.
});

执行步骤图:     

    走到Cesium.when( )就进不去了;

1个回答

sampleTerrainMostDetailed(terrainProvider, positions) → Promise.<Array.<Cartographic>>

terrainProvider的类型是TerrainProvider,positions是一个位置的数组,返回的是一个promise,是一个位置数组,位置具有高程值,即updatedPositions。

您里面这么写:

Cesium.when(promise, function(updatedPositions)

加上一个function试试

4,151EXP 2022年06月10日
我加过function也没有用,你可以把你写的那部分代码发给我看一下吗?

可以给您发一段类似的代码:

        // 根据地形计算某经纬度点的高度
        var promise = Cesium.sampleTerrainMostDetailed(terrainProvider, cartesians);
        Cesium.when(promise, function (updatedPositions) {
 
            let positions = updatedPositions.filter(d => {
                const cartographic = d
                if (cartographic) {
                    const h_d = extrudedHeight - cartographic.height
                    return h_d > 0
                }
            })
            positions = positions.map(d => {
                const cartographic = d
                let h = extrudedHeight - cartographic.height
                return {
                    x: Cesium.Math.toDegrees(cartographic.longitude),
                    y: Cesium.Math.toDegrees(cartographic.latitude),
                    value: h
                }
 
            })
 
            if (callback) {
 
                callback(positions)
            }
        });
    }
...