本文纯属个人见解,可能是正经的胡扯
麻点图是二维应用中比较成熟的一种专题图表达方式,在三维中应用就较少了,今天有客户问到,是否支持麻点图?
如此简单的问题,不就是添加一堆点,脑海中直接的反应是使用entity添加,就开始着手开始作死测试。
随着entity添加的点越来越多,大致到达5千个点时就开始非常卡顿,1万点时出现了崩溃,直接用entity添加肯定是不行了,纵使entity封装的如此完美易用。
在网上看到一篇博客,介绍entity和primitive的性能对比,发现原来primitive如此强大,便着手实现,实现代码如下:
function pittinglayer(Cesium, viewer) {
this.layer = ''
if(Cesium.defined(viewer)) {
this.layer = viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection());
}
}
pittinglayer.prototype.addpoint = function(positon, options) {
options = options || {}
if(positon && options) {
this.layer.add({
position: positon,
color: options.color || Cesium.Color.RED,
pixelSize: options.pixelSize || 5,
id: options.id || undefined,
show: options.show || true,
outlineWidth: options.outlineWidth || 0,
outlineColor: options.outlineColor || undefined,
disableDepthTestDistance: options.disableDepthTestDistance || 0,
distanceDisplayCondition: options.distanceDisplayCondition || undefined,
scaleByDistance: options.scaleByDistance || undefined,
translucencyByDistance: options.translucencyByDistance || undefined
})
}
}
下面来看加载效果
4W点
经测试最多能加载100w个点以上。
网友评论