1. document是用于声明它是CZML格式,主要在其中填入一些固定的数值。id属性固定是document,name属性值可以根据加载的数据自己命名,version用于设定CZML版本号,暂时只有1.0版本。
  2. 第二个对象存放的就是场景内的几何模型数据了,每一个几何模型对象都有唯一的id属性用于标识,如果id没有指定,cesium会自动生成一个
    1. 但是在后续开发中我们无法对其进行引用,如添加数据等,所以id我们要提前设定好,且在CZML中是唯一的。
    2. 这里的name属性属于可选配置,可以自定义名称。
    3. position用于存放模型位置信息,它定义了一个caetographicDegrees对象,其中三个数据分别设定的是经纬度和高度。
    4. box用于指定我们绘制的几何体是盒状的,dimensions存放了尺寸信息,
    5. 他的cartesuan对象设定了长宽高的数值,material则用于设置几何体的材质颜色。
const czml = [
      {
        id:"document",
        name: "box",
        version: "1.0",
      },
      {
        id:"shape1",
        name: "Blue box",
        position: {
          cartographicDegrees: [-114.0,40.0, 300000.0],
        },
        box: {
          dimensions: {
            cartesian: [400000.0,300000.0,500000.0],
          },
          material:{
            solidColor: {
              color: {
                rgba:[0, 0, 255, 255]
              }
            }
          }
        }
      }
    ]
  1. CZML轨迹数据处理
  • 对比上一个对象,这个对象中加入了clock属性,它用于设定时间相关的数据,更是构建动态轨迹场景必不可少的元素。

  • interval设置的是运行的起始时间和结束时间,这里的时间我们使用ISO 8601规范来表示日期和时间,好处:不需要进行时差计算,也不需要换算去协调世界时。

  • currentTime设定的是当前的时间节点。

  • multiplier设定的是时间的速率,他可以设置沿轨迹运行的速度。

  • 第二个对象放入了汽车模型加载的数据model中存放需要加载模型的路径,这里根据模型格式,放在gltf属性中。

  • position存放的是模型的位置信息,这些位置信息将自动与clock中设置的时间信息关联起来,使得时刻与坐标点相对应,从而实现动态轨迹效果。

  • interpolationAlgorithm设定的是插值算法,他会将各个轨迹点连成一条线,这里绘制的是直线,所以设定为LINEAR。

  • forwardExtrapolationType同样用于插值算法,防止出现设定数值超出样本数据范围的情况

  • cartesian中放入的是时间、经纬度、高度数据,每四个数据为一组,这里设定了两组数据

  • orientation存放的是模型方向信息,还有种更简单的设置方法:可以把unitQuaternion替换成velocityReference,数值设置为#position,Cesium会根据位置信息进行四元数方向转换,从而达到模型在运动时方向转换的效果

"orientation": {
  "velocityReference": "#position"
}

在第三个对象中,我们绘制了一条行驶轨迹线,polyline表明设置的是线条,position放入的是经纬度和高度信息 clampToGround设置为true,可以使得生成的线条紧贴地面

追踪

if (!viewer.trackedEntity) {
              viewer.trackedEntity = vehicleEntity = dataSource.entities.getById(
                "modle_id"
              );
            }

hpr

hpr