如何获取Cesium中数据的索引
How to get the index of data in Cesium
我已经成功实施了有关如何构建航班跟踪器的教程。我希望能够在我的应用程序的当前时间访问我的数据索引。换句话说,当铯正在显示飞机沿着飞行路径的动画时,我怎样才能得到飞机所在的当前索引? (我的数据的索引)。
我有两个实体,一个在循环下生成路径的所有点,另一个在我加载飞机模型的地方。我需要将应用程序的其他部分与 Cesium 的当前状态同步。 (如果我暂停Cesium,我需要暂停其他东西等等)
我正在使用 Resium。顺便提一句。这是我的飞机模型。它根据从 const positionProperty = new SampledPositionProperty();
派生的位置 属性 进行动画处理
// this is the loop that draws the path with points
{flightData.map((data, i) => {
const time = JulianDate.fromIso8601(data.timestamp);
const position = Cartesian3.fromDegrees(
data.longitude,
data.latitude,
data.height + 5.0
);
// here we add a sample, per object in the array
positionProperty.addSample(time, position);
return (
<Entity
key={`${i}${position}`}
position={position}
point={{ pixelSize: 5, color: PhaseColors[data.phase] }}
/>
);
})}
// this is the airplane model that follows the path above
<Entity
style={{ border: "10px solid green" }}
// Here is where we pass the positionProperty sample. How can I get the current index out of this?
position={positionProperty}
// Automatically compute the orientation from the position.
orientation={new VelocityOrientationProperty(positionProperty)}
tracked
selected
model={{ uri: model, minimumPixelSize: 100, maximumScale: 100.0 }}
path={
new PathGraphics({
width: 3,
material: Color.fromCssColorString("#202025"),
})
}
availability={
new TimeIntervalCollection([
new TimeInterval({ start: start, stop: stop }),
])
}
我想到的一种方法是使用时钟并获取时间戳。使用时间戳,我可以查找自己的数据。但我想避免这种情况,这非常昂贵。
有铯专家吗? :D
您可能正在寻找 SampledPositionProperty.getValue(...)
。
您有一个类型为 SampledPositionProperty
的变量 positionProperty
。它被标记为 const
,但我认为这是不正确的,因为您是在构造后向其添加样本。
无论如何,要从那里获取数据,您需要这样调用:
var currentPos = positionProperty.getValue(clock.currentTime);
请注意,这个 returns 是一个完整的 Cartesian3
位置,而不是索引。这是因为 clock.currentTime
可能落在索引之间,而 positionProperty
将在中间时间平滑地插入。
我已经成功实施了有关如何构建航班跟踪器的教程。我希望能够在我的应用程序的当前时间访问我的数据索引。换句话说,当铯正在显示飞机沿着飞行路径的动画时,我怎样才能得到飞机所在的当前索引? (我的数据的索引)。
我有两个实体,一个在循环下生成路径的所有点,另一个在我加载飞机模型的地方。我需要将应用程序的其他部分与 Cesium 的当前状态同步。 (如果我暂停Cesium,我需要暂停其他东西等等)
我正在使用 Resium。顺便提一句。这是我的飞机模型。它根据从 const positionProperty = new SampledPositionProperty();
// this is the loop that draws the path with points
{flightData.map((data, i) => {
const time = JulianDate.fromIso8601(data.timestamp);
const position = Cartesian3.fromDegrees(
data.longitude,
data.latitude,
data.height + 5.0
);
// here we add a sample, per object in the array
positionProperty.addSample(time, position);
return (
<Entity
key={`${i}${position}`}
position={position}
point={{ pixelSize: 5, color: PhaseColors[data.phase] }}
/>
);
})}
// this is the airplane model that follows the path above
<Entity
style={{ border: "10px solid green" }}
// Here is where we pass the positionProperty sample. How can I get the current index out of this?
position={positionProperty}
// Automatically compute the orientation from the position.
orientation={new VelocityOrientationProperty(positionProperty)}
tracked
selected
model={{ uri: model, minimumPixelSize: 100, maximumScale: 100.0 }}
path={
new PathGraphics({
width: 3,
material: Color.fromCssColorString("#202025"),
})
}
availability={
new TimeIntervalCollection([
new TimeInterval({ start: start, stop: stop }),
])
}
我想到的一种方法是使用时钟并获取时间戳。使用时间戳,我可以查找自己的数据。但我想避免这种情况,这非常昂贵。
有铯专家吗? :D
您可能正在寻找 SampledPositionProperty.getValue(...)
。
您有一个类型为 SampledPositionProperty
的变量 positionProperty
。它被标记为 const
,但我认为这是不正确的,因为您是在构造后向其添加样本。
无论如何,要从那里获取数据,您需要这样调用:
var currentPos = positionProperty.getValue(clock.currentTime);
请注意,这个 returns 是一个完整的 Cartesian3
位置,而不是索引。这是因为 clock.currentTime
可能落在索引之间,而 positionProperty
将在中间时间平滑地插入。