PositionPropertyArray
是一个由位置属性(PositionProperty
)组成的数组。它可以用于在Cesium中表示一个实体的位置,并动态地更新该位置。
通过以下方式创建一个空的PositionPropertyArray
:
const positionArray = new Cesium.PositionPropertyArray();
或者可以在创建时传入一个位置属性数组:
const positionProps = [...]; // 位置属性数组
const positionArray = new Cesium.PositionPropertyArray(positionProps);
PositionPropertyArray
包含以下方法:
添加一个位置属性property
到数组中。
const property = new Cesium.ConstantPositionProperty(position);
positionArray.addProperty(property);
从数组中移除一个位置属性property
。
positionArray.removeProperty(property);
获取给定时间time
的所有位置属性的位置值。结果以数组形式返回result
。
const result = [];
const time = Cesium.JulianDate.now();
positionArray.getValue(time, result);
console.log(result); // 所有位置值的数组
设置给定时间time
的所有位置属性的位置值为value
。
const time = Cesium.JulianDate.now();
const position = new Cesium.Cartesian3(1, 2, 3);
positionArray.setValue(time, position);
获取该数组是否包含的所有位置属性都是常量。
console.log(positionArray.isConstant); // true 或 false
以下是一个使用PositionPropertyArray
表示一个实体位置的示例:
const positions = [
new Cesium.SampledPositionProperty(),
new Cesium.SampledPositionProperty(),
];
positions[0].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12)), new Cesium.Cartesian3(0, 0, 0));
positions[0].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 10)), new Cesium.Cartesian3(-1000, 0, 0));
positions[0].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 20)), new Cesium.Cartesian3(-1000, 0, -1000));
positions[0].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 30)), new Cesium.Cartesian3(0, 0, -1000));
positions[0].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 40)), new Cesium.Cartesian3(0, 0, 0));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12)), new Cesium.Cartesian3(-1000, 0, 0));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 5)), new Cesium.Cartesian3(-2000, 0, 0));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 10)), new Cesium.Cartesian3(-2000, 0, -1000));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 15)), new Cesium.Cartesian3(-1000, 0, -1000));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 20)), new Cesium.Cartesian3(-1000, 0, -2000));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 25)), new Cesium.Cartesian3(-2000, 0, -2000));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 30)), new Cesium.Cartesian3(-2000, 0, -3000));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 35)), new Cesium.Cartesian3(-1000, 0, -3000));
positions[1].addSample(Cesium.JulianDate.fromDate(new Date(2018, 6, 1, 12, 40)), new Cesium.Cartesian3(-1000, 0, -2000));
const positionArray = new Cesium.PositionPropertyArray(positions);
entity.position = positionArray;
positions
是一个包含两个SampledPositionProperty
位置属性的数组。这两个位置属性分别表示将要在不同时间段内改变的位置。使用PositionPropertyArray
将两个位置属性组合成一个整体,表示该实体的位置。
最后,将positionArray
赋值给该实体的position
属性,即可使用该实体的位置处于动态更新状态。