首页 / 浏览问题 / WebGIS / 问题详情
隐藏图层单个smid构件
fy
111EXP 2023年01月12日
应用场景:我们web端首页有个项目列表,项目列表里有多个项目,每个项目有自己的工作空间,存放这该项目的精模图层;在首页默认加载了项目列表对应项目的建筑外壳模型,外轮廓模型存储在B工作空间里,通过项目列表进入指定的项目需要隐藏B工作空间里的单个外轮廓模型(注意:不是全局隐藏,只隐藏一个smid图层也就是一个项目的轮廓模型)

目前发现问题:

进入指定项目后会加载B工作空间里多个图层,加载会有一定的时间,在这个时间内如果调用objLay.setOnlyObjsVisible([sm_id], false),这个时候是加载失败的;图层加载完成后调用objLay.setOnlyObjsVisible([sm_id], false)函数是正常隐藏的;这样会导致进入项目后需要等10左右的时间,才会隐藏指定的smid模型

需要解决的问题:

有没有什么方法保证前端还没有加载出来图层时隐藏指定的smid模型图层;有没有可能通过smid在B工作空间里的模型还没有加载该模型就直接隐藏掉

1个回答

您好,请问您所说的加载时调用异常,如果在加载数据的回调事件里去隐藏会异常报错呢?

鉴于您的隐藏在这个对应数据加载的回调事件里去做,比如需要隐藏A工作空间里的数据,就在A工作空间open.scene的回调事件里去隐藏,

需要隐藏B单图层加载的缓存,那就在scene.addS3MTilesLayerByScp的回调事件里去隐藏,注意如果隐藏A数据不在其他数据的回调事件里,要一一对应。

        var promise=scene.addS3MTilesLayerByScp();
        Cesium.when(promise,function (layer) {

//回调事件里内里进行操作
                viewer.zoomTo(layer);
        })

        var promise=scene.Open();
        Cesium.when(promise,function (layer) {

//回调事件里内里进行操作
                viewer.zoomTo(layer);
        })

希望可以帮助到您。

9,603EXP 2023年01月13日
...