《Cesium 进阶知识点》- 监听相机变化事件:获取视高、级别和角度等场景信息

本文介绍如何使用Cesium监听相机的视高、方位角、俯仰角和翻滚角等参数变化,并展示如何根据视高的不同实现球体的渐变透明效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果  

关键代码

使用对象 Camera 监听鼠标 changed事件。 

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
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值