首页 / 浏览问题 / WebGIS / 问题详情
getSelection获取的smid为空
3EXP 2020年09月15日
try {

        //添加S3M图层服务

        var promise = scene.open(host + partOfUrl);

         Cesium.when(promise, function(layers){

          layers.find(item => {

            let nameArr = item._name.toString().split("@");

            item.setQueryParameter({

              url: host+dataServeUrl,

              dataSourceName: nameArr[1], //对应数据源名称,数据服务

              dataSetName: nameArr[0], //对应数据集名称,数据服务

              keyWord: "SmID"

            });

            item.getSelection()

           _self.BIMLayerObj.push(item)

          });

          // _self.getOrientation(viewer)

        })

1个回答

您好。getSelection()这个接口是获取到点击后被选中的对象的ID,但从你的代码中,没有可以触发这个代码运行的事件。初始添加数据的时候,是没有对象被选中的,所以这个返回是空。

解决方法:添加个左键点击事件,使用左键点击事件执行这个代码
1,063EXP 2020年09月15日
// 改变部件的颜色

    changeModel(item){

      let layer=this.viewer.scene.layers._layerQueue;

       for(let i=0;i<layer.length;i++){

         for(let l=0;l<item.length;l++){

          if(layer[i].getSelection().length>0&&item[l]==layer[i].getSelection()[0]){

            layer[i].setObjsColor([item[l]], new Cesium.Color(0,1,0,1));

          }

         }

      }

    },

item是获取的要改变颜色的smid数组,然后去匹配layer[i].getSelection()获取的全部为空
layer[i].getSelection()是在你场景中模型对象有被选中的情况下才能获取到的
...