CesiumJS 中的一个方法,可用于从最详细的高程数据源中获取地形高度信息。
Cesium.sampleTerrainMostDetailed(terrainProvider, positions)
terrainProvider
:地形提供程序。positions
:一个 Cesium.Cartesian3 对象数组,每个对象表示一个位置。一个 promise 对象,当处理结束后返回一个包含高度信息的数组。该数组的长度等于传入 positions
数组的长度。如果处理过程中发生了错误,promise 将会以拒绝状态结束,并传递错误信息。
高度信息是一个包含以下三个属性的对象:
longitude
:经度。latitude
:纬度。height
:高度,单位为米。var viewer = new Cesium.Viewer('cesiumContainer');
// 创建一个加载器并添加到场景中
var terrainLoader = new Cesium.CesiumTerrainLoader({
url: '//assets.agi.com/stk-terrain/world'
});
viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
url: '//assets.agi.com/stk-terrain/world',
requestWaterMask: true,
requestVertexNormals: true,
requestTileGeometry: true,
requestMetadata: true,
terrainDataStructure: ['heightmap'],
heightmapTerrainQuality: 1.0
});
var positions = [
Cesium.Cartesian3.fromDegrees(101.0, 29.0),
Cesium.Cartesian3.fromDegrees(-77.0, 43.0)
];
Cesium.sampleTerrainMostDetailed(viewer.terrainProvider, positions).then(function(heights) {
console.log(heights);
});
当 terrainProvider
不是 Cesium.TerrainProvider 的实例时,将会抛出 DeveloperError
异常。
如果传入的 positions
数组为空,方法将不会执行处理,并返回一个空的 promise 对象。
如果处理过程中出现了错误,promise 将会以拒绝状态结束,并传递一个包含错误信息的异常对象。