如何使用 Cesium 中的可用性间隔定义多边形实体?

How can I define a polygon entity using availability intervals in Cesium?

我正在定义一个非常大的多边形,它使用惯性参考系改变它的位置和形状。

首先,我尝试定义一组 CZML 多边形,每个多边形都具有可用性及其坐标,如 this sandcastle example 中的“加利福尼亚”对象,但这超出了最大内存限制并阻止了浏览器和最后是电脑。 然后,我让它在 CZML 中仅使用一个多边形工作,提供一个包含间隔和多边形形状坐标的列表,例如 the same sandcastle example.

中的“dynamicPolygon”

现在我正在尝试更改 CZML 实现以使用实体,但 entity documentation allows to use a PolygonGraphics that allows to use a Property or a PolygonHierarchy 来配置形状,我不知道如何使用实体来执行相同的“dynamicPolygon”。

您可以在层次结构构造函数选项中使用 CallbackProperty(即 Property 的一种类型)。由于只有一个对象并且位置是动态计算的,因此内存不应该有问题。您也可以使用像 TimeIntervalCollectionProperty 这样的集合,然后请求特定时间的值。

尝试在 Hello World Cesium sandcastle 中添加下一个代码片段:

viewer.entities.add({
    id: "dynamicPolygon",
    name: "dynamicPolygon",
    polygon: new Cesium.PolygonGraphics({
      hierarchy: new Cesium.CallbackProperty(function (time, result) {
        var n = time.secondsOfDay%10;
        result = new Cesium.PolygonHierarchy([
            Cesium.Cartesian3.fromDegrees(2*n, n),
            Cesium.Cartesian3.fromDegrees(-2*n, n),
            Cesium.Cartesian3.fromDegrees(-2*n, -n),
            Cesium.Cartesian3.fromDegrees(2*n, -n)
        ]);
        return result;
      }, false),
      material: Cesium.Color.WHITE
  })
});