在Cesium中更新实体

时间:2015-07-08 18:51:05

标签: cesium

我有一些实体,他们的职位是使用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文档,但找不到任何相关内容。

或者有更好的方法来动态和一致地更新实体吗?

1 个答案:

答案 0 :(得分:1)

Cesium指南声称,Entity API能够提供灵活,高性能的可视化,同时展示一致,易学和易用的界面。 我有经验告诉你,从铯外部更新的速度更快。您还可以使用EntitiCollection(https://cesiumjs.org/Cesium/Build/Documentation/EntityCollection.html?classFilter=EntityCol)来getByID,suspendEvents和removeEvents来编排cesium,以便在准备就绪时进行更新。 我们能够每200毫秒更新1000个实体,而不会损害性能。我们发现,如果你想要更好的结果(比如每200毫秒10k个实体),你需要实现自己的着色器。