- document是用于声明它是CZML格式,主要在其中填入一些固定的数值。id属性固定是document,name属性值可以根据加载的数据自己命名,version用于设定CZML版本号,暂时只有1.0版本。
- 第二个对象存放的就是场景内的几何模型数据了,每一个几何模型对象都有唯一的id属性用于标识,如果id没有指定,cesium会自动生成一个
- 但是在后续开发中我们无法对其进行引用,如添加数据等,所以id我们要提前设定好,且在CZML中是唯一的。
- 这里的name属性属于可选配置,可以自定义名称。
- position用于存放模型位置信息,它定义了一个caetographicDegrees对象,其中三个数据分别设定的是经纬度和高度。
- box用于指定我们绘制的几何体是盒状的,dimensions存放了尺寸信息,
- 他的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]
}
}
}
}
}
]
- 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"
);
}