Cesium设置弹窗随轨迹动画对象移动

 1.这是要移动的弹窗,隐藏显示逻辑、样式、展示内容自己写,主要就是动态设置弹窗的style,floatLeft和floatTop都是Vue中的data双向绑定数据;

<div id="box" v-show="hasMove" :style="{ left: floatLeft + 'px', top: floatTop + 'px' }">
   <p>{{ Math.round(distanceSum) }}米</p>
</div>

2.设置好运动轨迹后,当轨迹开始运行可以执行以下方法,则可以实时获取轨迹动画对象的屏幕坐标信息,从而实时更新弹窗相对于运动对象的位置 

    // 监听轨迹位置修改弹窗位置
    createWindow() {
      let _this = this;
      // 判断运动的模型是否存在
      let model = '你加载到地图中的运动模型对象';
      // 监听实时位置变化
      Viewer.scene.preUpdate.addEventListener(
        this.preUpdate = () => {
          // 获取实时位置的笛卡尔坐标
          let cartesian3 = model.position.getValue(
            Viewer.clock.currentTime
          );
          // 如果运动结束,则移除监听
          if (cartesian3 == undefined) {
            Viewer.scene.preUpdate.removeEventListener(
              this.preUpdate
            );
            // 弹窗消失,也可以根据业务需求继续保留弹窗
            _this.hasMove= false;
          } else {
            let cartesian2 = Cesium.SceneTransforms.wgs84ToWindowCoordinates(
              Viewer.scene,
              cartesian3
            );
            // 如果没有停止运动,则拿到屏幕坐标系
            if (cartesian2) {
              _this.floatLeft = cartesian2.x;
              _this.floatTop = cartesian2.y;
            }
          }
        }
      );
    };

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要随地大便

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值