美文网首页
cesium添加删除label

cesium添加删除label

作者: 姜治宇 | 来源:发表于2022-12-07 10:46 被阅读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的,需要慢慢习惯。

    相关文章

      网友评论

          本文标题:cesium添加删除label

          本文链接:https://www.haomeiwen.com/subject/ogdnfdtx.html