2

在铯 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,
      range: "UNBOUNDED",
      step: "SYSTEM_CLOCK_MULTIPLIER",
    },

但这是不可能的,因为这clock将是一个重复的键。

有没有办法定义连续的时间间隔,每个时间间隔都有自己的时钟乘数?

4

1 回答 1

3

不幸的是,我认为答案是“不”,至少在一个 CZML 文档中是这样。但是,Cesium Viewer 支持同时加载多个DataSource,因此您可以同时加载多个 CZML 文档,每个文档都有自己的时钟设置。

Cesium.Viewer 有一个名为的构造函数选项automaticallyTrackDataSourceClocks,当添加新的数据源(单独的 CZML 文件)以及删除活动的数据源时,它将导致它更新自己的时钟设置。它还有一个字段,viewer.clockTrackedDataSource即读/写,可用于设置当前哪个数据源负责查看器的时钟设置。

但是,您需要编写自己的 UI 来显示可用数据源的列表,并选择哪个控制时钟设置,如果这是这里需要的话。Cesium 不会自动从一个时钟范围的末尾跳到下一个时钟范围的开头,除非您编写代码来实现这一点。

查看器将始终尝试显示在当前时间范围内具有“可用性”的所有数据源中的对象,即使时钟正在跟踪来自另一个数据源的范围。当时间范围重叠时,用户将在场景中同时看到来自多个数据源的所有对象。当时间范围不重叠时,过期对象将不会显示,但某些“永久”对象(例如固定点)可能具有无限可用性,因此会继续显示在其父数据源的时钟范围之外。这可以通过将此类实体限制为仅在其自己的文件的时钟范围内具有可用性来从 CZML 文档中控制。

于 2021-01-08T14:10:47.107 回答