问题描述
我正在定义一个非常大的多边形,该多边形使用惯性参考系更改其位置和形状。
首先,我尝试定义一组CZML多边形,每个多边形都具有可用性及其坐标,例如this sandcastle example中的“ california”对象,但这超出了最大内存限制并阻止了浏览器,最终阻止了电脑。 然后,我让它仅使用CZML中的一个多边形来提供带有间隔和多边形形状坐标的列表,例如the same sandcastle example中的“ dynamicpolygon”。
现在,我正在尝试将CZML实现更改为使用实体,但是entity文档允许使用PolygonGraphics,该实体允许使用Property或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)
]);
return result;
},false),material: Cesium.Color.WHITE
})
});