首页 / 浏览问题 / 三维GIS / 问题详情
webgl显示与隐藏问题
22EXP 2017年03月03日

使用产品: SuperMap iClient  3D 8C for WebGL 操作系统:win7 x64

数据类型:  文件型

问题详细描述:

1.影藏单个构件时必须将历史影藏构件获取出来,并组成数组一起影藏,例如: 

   A. S3MTilesLayer. setObjsVisible([2], false),影藏了id为2的构件;

   B. 再调用S3MTilesLayer. setObjsVisible([3], false),影藏了id为3的构件,但是id为2的构件显示出来了

问题:目前影藏功能需调用setObjsVisible需执行两个动作,获取历史影藏id列表;实现影藏。是否有方法可以实现直接影藏,不获取影藏列表?如果没有该方法,建议setObjsVisible方法内获取 S3MTilesLayer. _objsVisibleList (影藏的构件列表)自动执行一次

2. 多图层影藏构件后显示构件时,只显示了设置的构件。例如: 

    A. 构件列表有[1,2,3,4,5],影藏[1,2,3]后,执行setObjsVisible([1,2,3], true) 方法,发现只显示了构件[1,2,3];而构件[4,5]没有做任何操作确影藏了

    B. 执行setObjsVisible([1,2,3,4,5], true)  显示了所有构件

问题:1. 如何做到显示构件[1,2,3]时其它构件状态不变?

          2. 多图层是否有显示所有构件方法?期待webGL支持多图层情况显示、影藏、选择等单图层事件

1个回答

给您添麻烦了。

setObjsVisible这个API可能跟您平时遇到的不太一样,我是这样理解的,setObjsVisible每次都会重新处理一次,比如您之前设置了S3MTilesLayer. setObjsVisible([2], false),影藏了id为2的构件,如果又想隐藏id为3的,那么需要写S3MTilesLayer. setObjsVisible([2, 3], false)。为了让您方便一点,您可以用一个数组arrIDs,全部调用S3MTilesLayer. setObjsVisible(arrIDs, false),如果要隐藏某一个对象,就往arrIDs加这个对象的ID,如果要取消隐藏某一个对象,就往arrIDs移除这个对象的ID,调用S3MTilesLayer. setObjsVisible(arrIDs, false)。

如果全部隐藏可以把所有对象的ID加到arrIDs再S3MTilesLayer. setObjsVisible(arrIDs, false);也可以移除arrIDs的所有值,再S3MTilesLayer. setObjsVisible(arrIDs, true)。如果您确实不太理解,建议您就始终使用S3MTilesLayer. setObjsVisible(arrIDs, false)。

3,389EXP 2017年03月06日
BIM模型的图层也可以用setObjsVisible方法隐藏对象吗?
...