sampleTerrain
方法用于获取给定位置的地形高度。该方法会请求 Cesium Terrain Server 获取高度值,因此需要连接到互联网。当未获得完整的地形数据时,方法会返回 null。
该方法的语法如下:
Cesium.sampleTerrain(terrainProvider, level, positions)
.then(function(heights) {
// 处理高度数据
}).otherwise(function(error) {
// 异常处理
});
上述语法中,terrainProvider
、level
和 positions
参数分别代表地形数据源、地形数据分辨率等级和位置数组。该方法使用 Promise 设计,其中 heights
参数包含了查询位置的高度信息。
terrainProvider
:被查询的地形数据源。示例:new Cesium.CesiumTerrainProvider({url : '//assets.agi.com/stk-terrain/world'});
level
:可选参数,地形数据的分辨率等级(精度级别),默认值为 undefined
。类型为 Number
。positions
:一个定义为 [longitude, latitude]
的位置数组,或一个 Cartographic
范围对象的数组,或者一个包含了 Cartesian3
或 Cartographic
类型位置对象的数组。一个 Promise 对象。如果查询成功,该 Promise 对象返回高度信息;如果查询失败,该 Promise 对象返回错误信息。
高度信息,其中每个元素(heights[x]
)代表了查询位置数组(positions
)中第 x
个位置的高度。
// 查询单个位置信息
var terrainProvider = new Cesium.CesiumTerrainProvider({
url : '//assets.agi.com/stk-terrain/world',
});
var position = Cesium.Cartographic.fromDegrees(-122.090740, 37.434245, 0.0);
Cesium.sampleTerrain(terrainProvider, 14, [position]).then(function(heights) {
console.log('heights:', heights[0]);
});
// 查询多个位置信息
var positions = [
Cesium.Cartographic.fromDegrees(-122.090740, 37.434245, 0.0),
Cesium.Cartographic.fromDegrees(-122.090098, 37.434178, 0.0),
Cesium.Cartographic.fromDegrees(-122.090063, 37.434439, 0.0)
];
Cesium.sampleTerrain(terrainProvider, 14, positions).then(function(heights) {
console.log('heights:', heights); // 输出高度信息
});