效果
关键代码
viewer.camera.changed.addEventListener(()=>{
// 视高 km
let alt = (viewer.camera.positionCartographic.height / 1000).toFixed(2);
// 方位角
let heading = Cesium.Math.toDegrees(viewer.camera.heading).toFixed(2);
// 俯仰角
let pitch = Cesium.Math.toDegrees(viewer.camera.pitch).toFixed(2);
// 翻滚角
let roll = Cesium.Math.toDegrees(viewer.camera.roll).toFixed(2);
// 级别
let level = 0;
let tileRender = viewer.scene._globe._surface._tilesToRender;
if (tileRender && tileRender.length > 0) {
level = viewer.scene._globe._surface._tilesToRender[0]._level;
}
let str = `级数:${level} 视高:${alt}km 方位角:${heading}° 俯仰角:${pitch}° 翻滚角:${roll}°`;
console.log(str);
});
延伸知识
通过视高对球做渐变透明效果,使用接口 Cesium.NearFarScalar
// 视高在 400 - 200 km之间,球有一个渐变的透明效果
viewer.scene.globe.translucency.frontFaceAlphaByDistance = new Cesium.NearFarScalar(
400 * 1000,// 最小距离,单位是 m
0.0, // 透明度 为 0
200 * 1000,// 最大距离
1.0, // 透明度 为 1
);