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); // 输出高度信息
});