cesium绕点(坐标点)飞行

404 阅读1分钟

cesium绕点(坐标点)飞行

          // 相机看点的角度,如果大于0那么则是从地底往上看,所以要为负值,这里取-30度
          let pitch = Cesium.Math.toRadians(-35);
          // 给定飞行一周所需时间
          let angle = 360 / 20;
          // 给定相机距离点多少距离飞行
          let distance = 5000;
          let startTime = Cesium.JulianDate.fromDate(new Date());
 
          let stopTime = Cesium.JulianDate.addSeconds(startTime, 30, new Cesium.JulianDate());
 
          viewer.clock.startTime = startTime.clone();  // 开始时间
          viewer.clock.stopTime = stopTime.clone();     // 结速时间
          viewer.clock.currentTime = startTime.clone(); // 当前时间
          viewer.clock.clockRange = Cesium.ClockRange.CLAMPED; // 行为方式
          viewer.clock.clockStep = Cesium.ClockStep.SYSTEM_CLOCK; // 时钟设置为当前系统时间
          // 当前heading
          let initialHeading = viewer.camera.heading;
          let Exection = function TimeExecution() {
              // 当前已经过去的时间
              let delTime = Cesium.JulianDate.secondsDifference(viewer.clock.currentTime, viewer.clock.startTime);
              // 根据过去的时间,计算偏航角的变化
              let heading = Cesium.Math.toRadians(delTime * angle) + initialHeading;
 
              viewer.camera.lookAt(position, new Cesium.HeadingPitchRange(heading, pitch, distance));
 
              if (Cesium.JulianDate.compare(viewer.clock.currentTime, viewer.clock.stopTime) >= 0) {
                  viewer.clock.onTick.removeEventListener(Exection);
              }
          };
          viewer.clock.onTick.addEventListener(Exection);