首页 / 浏览问题 / 其他 / 问题详情
BIM webgl官网例子中的startId和endId怎么来的
24EXP 2019年09月23日

怎么获取所有图元的id,官网例子中的startId和endId怎么来的,如果要针对某个构件进行定位的话是通过图元id?还是startId
官网构成一个数据集生成s3m缓存后的sence.layers后打印的list,里面存在datasetName,startID,endID,而我的是多个生成的,layers如图2控制台打印的那样,以上三个参数都不存在,这是怎么回事


 

1个回答

您好,通过图元进行定位的话使用图元ID就可以了

示例中BIM模型缓存是通过【批量生成缓存】工具制作的,他这个做完了是一个图层。您的哪种方式做完了是多个图层,这个没有关系的,都可以实现定位的
赵爽
1
6,215EXP 2019年09月23日
怎么获取所有图元id呢

您可以通过sql查询来获取所有图元的ID,SQL查询可以参考示例http://support.supermap.com.cn:8090/webgl/examples/editor.html#getFeatureBySQL

startId和endid怎么来的呢,我发现用我的多图层模型的话,加载子图层不能通过官方demo中的
‘var layer = scene.layers.find()’对Tree进行构件,只能对‘scene.layers._layers._array’进行遍历后进行对Tree的添加,但是通过这种方法添加够,在进行构件选择时,通过下图的的方法取得nodeID够传入layer.setOnlyObjsVisible(),

但是此时的layer,已经不是scene.layers.find()的某个包含好多子图层的父图层的了,所以是不是可以这么说,要想对某些构件进行操作只能将多个缓存图层生成一个(不然用不了一些官方api的方法,因为我多图层生成的缓存文件,不存在统一的父元素,所以不存在startId,endId,而

setOnlyObjsVisible方法,既需要layer=scene.layers.find('统一父节点'),又需要传入startID和endID)

startid 和 endid 是批量生成缓存时候赋予的。比如说我批量生成的时候有5个模型数据集,这五个模型数据集中的ID都是从1开始的,那么批量生成的时候避免ID重复的情况下,就会出现startid 和 endid。比如A模型数据集里有20条数据,那它的StartID 和EndID分别就是1和20,B模型里有30条,那它的StartID 和EndID分别就是21和50
您解決了嗎,我和您遇到的問題一樣
...