Cesium的2D模式下动目标跟踪问题

一、动目标跟踪代码

viewer.trackedEntity = window.viewer.entities.add({
	id: id,
	position: new Cesium.CallbackProperty(function () {
	   return position // 动目标位置
	}, false),
	point: {
	  color: new Cesium.Color(1.0, 0.0, 0.0, 0.8),
	  pixelSize: 10
	},
	viewFrom: new Cesium.Cartesian3(0, 0, 800000.0) // 偏移量--设置视角高度
})

二、出现的问题

3D模式下是正常的,但切换到2D模式时,跟踪失败,如下图。
分析原因:上面代码添加实体时设置了viewFrom属性,此属性不支持2D。

在这里插入图片描述

三、解决方案

方案一:可在2D模式下将viewFrom重置为undefined
【瑕疵:无法设置视角高度了,业务需要在宏观上观察目标】---(有解决办法欢迎评论😀)
if (viewer.scene.mode === Cesium.SceneMode.SCENE2D) {
	viewer.trackedEntity.viewFrom = undefined
}
方案二:(本项目暂时的处理方法)2D模式下取消了跟踪,因为是宏观,只加了定位,并附带圆形扩散效果
if (viewer.scene.mode === Cesium.SceneMode.SCENE2D) {
    let targetEntity = ......
    if (targetEntity) {
      let center = targetEntity.position
      viewer.camera.lookAt(center, new Cesium.HeadingPitchRange(
	      Cesium.Math.toRadians(0),
	      Cesium.Math.toRadians(-90),
	      800000
	  ))
      viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)
    }
  }

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值