cesium实现绕点旋转

        查阅资料及网上文章,其实想实现绕点旋转就是通过修改heading的值来实现的。

实现思路:

        相机绕点旋转,即相机指向中心点不变,不断更改heading属性即可,使用Camera类的lookAt方法,API:传送门

具体代码:

       1、 核心代码

export default class AroundPoint {
    constructor(viewer, amount, position,height) {
        this._viewer = viewer;
        this._amount = amount;
        this._position = position;
        this._height = height;
    }

    _bindEvent() {
        this._viewer.clock.onTick.addEventListener(this._aroundPoint, this);
    }

    _unbindEvent() {
        this._viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
        this._viewer.clock.onTick.removeEventListener(this._aroundPoint, this);
    }

    start() {
        this._viewer.clock.shouldAnimate = true;
        this._unbindEvent();
        this._bindEvent();
        return this;
    }

    stop() {
        this._unbindEvent();
        return this;
    }

    // 相机绕点旋转函数
    _aroundPoint() {
        let heading = this._viewer.camera.heading;
        let pitch = this._viewer.camera.pitch;
        if (heading >= Math.PI * 2 || heading <= -Math.PI * 2) {
            heading = 0;
        } else {
            heading += Cesium.Math.toRadians(this._amount);
        }
        this._viewer.camera.lookAt(
            this._position,
            new Cesium.HeadingPitchRange(
                heading,
                pitch,
                this._height,
            )
        )
    }
}

 2、页面调用

 let aroundPoint = new AroundPoint(viewer, 0.2, new Cesium.Cartesian3.fromDegrees(103.62416890925606, 28.782654034074834, 1300),1000.0);

 aroundPoint.start();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值