let enabled = true;///是否聚合
let pixelRange = 15;//聚合范围(单位px)
let minimumClusterSize = 3;//最小聚合数值(小于等于该数值,不聚合)
let myDataSource = new Cesium.CustomDataSource("myDataSource"); //实例化实体级对象(实现,可用于手动管理一组实体)
let obj = createEntityObj(data);//创建entity实例属性
let entity = myDataSource.entities.add(obj);
//添加entity数组
viewer.dataSources.add(myDataSource).then(function (dataSource) {
dataSource.clustering.enabled = enabled;//是否聚合
dataSource.clustering.pixelRange = pixelRange;//聚合范围(单位px)
dataSource.clustering.minimumClusterSize = minimumClusterSize;//最小屏幕聚合对象数值(小于等于该数值,不聚合)
});
//创建entity实例属性
function createEntityObj(item) {
return {
position: Cesium.Cartesian3.fromDegrees(lon, lat),
label: {
text: item.text,
font: "28px sans-serif",
scale: 0.5,
pixelOffset: new Cesium.Cartesian2(0, -55),
fillColor: Cesium.Color.YELLOW,
outlineColor: Cesium.Color.GRAY,
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
outlineWidth: 8,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
},
billboard: {
image: "../images/image.png",
width: 36,
height: 36,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
},
};
}
当entity数量过大时,会出现label无法聚合的情况,这时我们将dataSource.clustering.pixelRange(聚合范围)的值调大,同时也将 dataSource.clustering.minimumClusterSize(最小屏幕聚合对象数值,小于等于该数值,不聚合)值增大,就可以解决。