我有一些实体,他们的职位是使用CallbackProperty函数设置的。
cesium.renderPolygon = function(mapContext, polygon, existingEntity) {
var p;
if (existingEntity) {
p = existingEntity;
} else {
var polOpts = getStyleOptions(polygon.style);
// function for getting location
polygon.getHierarachy = new Cesium.CallbackProperty(function(time, result) {
var hierarchy = [];
for (var i = 0; i < polygon.coordinates.length; i++) {
var coordinate = polygon.coordinates[i];
hierarchy.push(Cesium.Cartesian3.fromDegrees(coordinate.longitude, coordinate.latitude, coordinate.altitude));
}
return hierarchy;
}, false);
polOpts.hierarchy = polygon.getHierarachy;
p = mapContext.entities.add({
name: polygon.name,
polygon: polOpts
});
}
return p;
};
如果我添加一个实体,它似乎工作得很好。随着我添加更多延迟(1-3秒),然后所有实体都不能很好地更新。看起来真的很糟糕。
是否有办法限制更新实体的次数。我一直在阅读Cesium文档,但找不到任何相关内容。
或者有更好的方法来动态和一致地更新实体吗?
答案 0 :(得分:1)
Cesium指南声称,Entity API能够提供灵活,高性能的可视化,同时展示一致,易学和易用的界面。 我有经验告诉你,从铯外部更新的速度更快。您还可以使用EntitiCollection(https://cesiumjs.org/Cesium/Build/Documentation/EntityCollection.html?classFilter=EntityCol)来getByID,suspendEvents和removeEvents来编排cesium,以便在准备就绪时进行更新。 我们能够每200毫秒更新1000个实体,而不会损害性能。我们发现,如果你想要更好的结果(比如每200毫秒10k个实体),你需要实现自己的着色器。