首页 / 浏览问题 / WebGIS / 问题详情
楼层显隐控制
22EXP 2022年01月25日
A楼是一个BIM模型, 有很多图层。 现在要隐藏5楼以上所有楼层,通过sql查询到了5楼以上的features,但是怎么根据这些features去三维场景中控制显隐, layer.setObjsVisible()这个方法是一个一个图层的去控制,但是现在有很多图层,怎么去控制?

1个回答

您好,你可以参考我们已有的示例,按特征值显隐:http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#visibleByFeatureValue

341EXP 2022年01月25日
这个特征值是怎么定义的? 我能指定我添加的一个属性列的值吗?
你可以把它理解成你BIM的模型组成部分,例如我们示例中的门,窗,楼层等,你可以按照你数据中的要素进行设置,比如你的bim有楼层构建,你可以用过这个楼层的要素进行控制

我不太明白您的属性值是指什么
是这样的,BIM模型有很多图层,比如墙、门、窗, 所有图层里面都有一列FLOOR属性字段标识每个对象在那一层楼, 现在就是我能通过这个FLOOR字段的属性控制这些墙、门、窗图层里面对象,比如要隐藏10楼,那每个图层里面每个对象的FLOOR=10就表示它要隐藏。主要就是要达到这个目的。

感谢

您已经能查到了阿,那就直接

layer1.setobjsvisible
layer2.setobjsvisible就可以了

或者你可以直接所有的都追加到一个数据集里面,这样就只有一个图层

类似这种

http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#S3MTiles_BIM

是这样的, 但是sql查询不是批量查询吗, 但是features里面没有图层信息,就是说每个图层都要做一次sql查询,  如何合并成一个图层,对前面的图层显隐有影响indecision,    这个特征值控制的方式是不是就不适合这种场景?

可能是我理解有误,这边给您提供一个思路,并不是让您去对所有的图层进行显隐控制,您可以先进行sql查询,把查询出来的图层结果通过 setobjsvisible 去进行显隐控制,然后正常我们对bim生成缓存都是用的批量生成模型缓存,这样最后只会出来一个layer。希望能够帮助到您
好的, 感谢
...