问题描述
在铯 CZML 模型中,我想定义多个时钟,每个时钟都有自己的时间间隔和乘数,例如:
clock: {
interval: "2019-06-01T16:00:00Z/2019-06-01T16:10:00Z",currentTime: "2019-06-01T16:00:00Z",multiplier: 60,range: "UNBOUNDED",step: "SYstem_CLOCK_MULTIPLIER",},clock: {
interval: "2019-06-01T16:10:00Z/2019-06-01T16:20:00Z",currentTime: "2019-06-01T16:10:00Z",multiplier: 80,
但这是不可能的,因为 clock
将是重复键。
有没有办法定义连续的时间间隔,每个时间间隔都有自己的时钟倍频器?
解决方法
不幸的是,我认为答案是否定的,至少在单个 CZML 文档中是这样。但是,Cesium Viewer 支持同时加载多个 DataSources,因此您可以同时加载多个 CZML 文档,并且每个文档都有自己的时钟设置。
Cesium.Viewer has a constructor option 调用了 automaticallyTrackDataSourceClocks
,每当添加新数据源(单独的 CZML 文件)以及删除活动数据源时,它都会更新自己的时钟设置。它还有一个字段 viewer.clockTrackedDataSource
是读/写,可用于设置当前负责查看器时钟设置的数据源。
但是,您需要编写自己的 UI 来显示可用数据源的列表,并选择哪个控制时钟设置(如果这里需要的话)。 Cesium 不会自动从一个时钟范围的结束跳到下一个时钟范围的开始,除非您编写代码来实现这一点。
查看器将始终尝试显示在当前时间范围内具有“可用性”的所有数据源中的对象,即使时钟正在跟踪来自另一个数据源的范围。当时间范围重叠时,用户将在场景中看到来自多个数据源的所有对象。当时间范围不重叠时,将不会显示过期的对象,但一些“永久”对象(例如静止点)可能具有无限可用性,因此会继续显示在其父数据源的时钟范围之外。这可以从 CZML 文档中控制,方法是将此类实体限制为仅在它们自己文件的时钟范围内可用。