cesium添加删除label

2022-12-07  本文已影响0人  姜治宇

cesium的api文档写的一般,需要一点时间来踩坑。label是标签的意思,一般是配合geojson等数据做注解用。


1.png

LabelCollection

LabelCollection是label容器的意思,其实可理解为es6的Map或Set,但是,其使用的方式有点诡异:

let labels = this.viewer.scene.primitives.add(new Cesium.LabelCollection());//label容器
let labelArr = [];

for (let i = 0; i < features.length; i++) {
  const currentLabel = this.labels.add({ //添加label上球
    position: new Cesium.Cartesian3.fromDegrees(...features[i].properties.centroid.map(Number), 200),
    text: '' + features[i].properties.filetotal,
    font: '22px sans-serif',
    // outlineColor:Cesium.Color.WHITE,
    // outlineWidth:2,
    style: Cesium.LabelStyle.FILL_AND_OUTLINE,
    fillColor: Cesium.Color.WHITE,
    scaleByDistance: new Cesium.NearFarScalar(1.5e2, 1.5, 30.0e6, 0.0),
    horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
    verticalOrigin: Cesium.VerticalOrigin.CENTER,
    eyeOffset: new Cesium.Cartesian3(0, 0, -10000)
  });
  labelArr.push(currentLabel);// 缓存label
  for(let item of this.labelArr) { //删除label
        if(item.code !==  '100000'){
             labels.remove(item);//从球上删除
         }
     
  }
}

如上所示,如果声明 let labels = new Cesium.LabelCollection(),句柄无法直接使用,下面也是如此,其实是利用了链式调用的原理,cesium几乎所有的容器api都是这样的套路,估计开发者之前是玩jquery的,需要慢慢习惯。

上一篇下一篇

猜你喜欢

热点阅读