cesium巡逻获取对象实时信息并实现切换第一人称视角

记录Cesium中完成巡逻飞行第一人称的视角调整:

 完成思路:飞行巡逻时,监听此对象的实时坐标经纬度等数据,由此数据进行视角的优化调整。

效果图:

关键代码:

var ori = orientationProperty.getValue(that.viewer.clock.currentTime); //获取偏向角
var center = positionProperty.getValue(that.viewer.clock.currentTime); //获取位置
var test = Cesium.Cartesian3.fromDegrees(QueryResultl, QueryResultlat, cartographic.height)
var transform = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromQuaternion(ori), test); //将偏向角转为3*3矩阵,利用实时点位转为4*4矩阵
viewer.camera.lookAtTransform(transform, new Cesium.Cartesian3(-50, 0, 10)) //将相机向后面放一点

viewer.clock.onTick.addEventListener对clock增加监听事件;

viewer.clock.shouldAnimate =true  启动时钟开始转动

//监听时间变化
var that = this
that.viewer.clock.onTick.addEventListener(function(e){
    if(that.viewer.clock.shouldAnimate === true){
        // 此处为我代码中判断是什么视角,以下为第一人称视角
       if(viewSelect == 'flyWithFirstPerson' || viewSelect==undefined) {
          m_TrackManager.activeRount.setModelVisible(false); // 封装为模型隐藏
          var centerCamera  = positionProperty.getValue(that.viewer.clock.currentTime);//获取位置
          var cartographic = Cesium.Cartographic.fromCartesian(centerCamera)
          var QueryResultl = Cesium.Math.toDegrees(cartographic.longitude); //四舍五入 小数点后保留五位
          var QueryResultlat = Cesium.Math.toDegrees(cartographic.latitude)
          // 以下为可实时调整高度    
          cartographic.height = heightSplider
          if(heightSplider){
              cartographic.height = heightSplider
          }else{
              cartographic.height = 10
          }

          var ori = orientationProperty.getValue(that.viewer.clock.currentTime); //获取偏向角
          var center = positionProperty.getValue(that.viewer.clock.currentTime); //获取位置
          var test = Cesium.Cartesian3.fromDegrees(QueryResultl, QueryResultlat, cartographic.height)
          var transform = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromQuaternion(ori), test); //将偏向角转为3*3矩阵,利用实时点位转为4*4矩阵
          that.viewer.camera.lookAtTransform(transform, new Cesium.Cartesian3(-50, 0, 10)) //将相机向后面放一点
       } else {
          // 切换为其他视角
       }
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值