由api可知,通过sampleTerrain,可实现获取高程信息,如图
同时,通过异步加载形式,获取return的数据
function getHeigthByLngLat11(lng, lat ){
let positions = Cesium.Cartographic.fromDegrees(lng,lat);//经纬度转为世界坐标
//异步函数
return new Promise((resolve, reject)=>{
new Cesium.sampleTerrain(viewer.terrainProvider, 13, [positions]).then(function(updatedPositions){
if(updatedPositions){
resolve(updatedPositions);
}
})
})
}
控制台结果:
经纬度也可通过世界坐标进行转换,考虑到获取世界坐标时,地图可能为地形形式,因此使用getPickRay
let ray = viewer.camera.getPickRay(movement.position);
let worldPos = viewer.scene.globe.pick(ray, viewer.scene);
将世界坐标转为经纬度(WGS84)的方法如下
function Cartesian3ToWGS84(worldPos){
let cartographic = Cesium.Cartographic.fromCartesian(worldPos);
let lng=Cesium.Math.toDegrees(cartographic.longitude);
let lat=Cesium.Math.toDegrees(cartographic.latitude);
let height=cartographic.height;
return {lng: lng, lat: lat, height: height};
}