首页 / 浏览问题 / 三维GIS / 问题详情
webGL的属性查询可不可以不依赖数据服务实现?
204EXP 2017年10月13日
webGL的属性查询可不可以不依赖数据服务实现?想iclient for 3D那样不用data服务来查询属性

1个回答

可以呢,您自己把属性存到其他地方一样的。

比如你存某个变量(json文件、数据库等),您只要自己有逻辑关系,这个属性是对应哪个物体的即可。
3,389EXP 2017年10月13日
cesium.js的pick(windowPosition, width, height) 不能用吗?

如果那你说的做的话,前提是我至少应该能从模型中获取一个值用来做关联,关键是如果不通过数据服务的话我什么也获取不到啊
问题就是WebGL如何可以通过点击事件获取模型的属性。
var position = e.position
    var pick = scene.pick(position)
    if(Cesium.defined(pick)) {
        if(pick.id) {
        
            }
        }

这种只能获取cesium原生的对象,我们的缓存我测试获取的是undefined。如果是点选可以通过

S3MTilesLayer.getSelection()来获取选中对象的ID,然后进行相关操作。
我该如何获取图层对象和选中对象的ID
遍历scene.layers即可获取图层,S3MTilesLayer的选中ID:S3MTilesLayer.getSelection(
因为我要写在点击事件中,所以点击事件中如何获取点击对象所在的图层对象
您好,目前只能遍历得到的。
那现在就是如果不通过数据服务设置setQueryParameter,就没办法直接通过点击事件获取属性了
其实最初的问题是这样的,就是我们想往一个发布完成的三维服务的场景添加OSGB文件从而添加模型,然后希望添加的模型也可以查询属性。但是webgl我看查询属性都是基于数据服务的,但是如果我向已经发布的数据服务添加数据就很麻烦,所以我就想知道webgl可不可以像3D for plugin一样不用依赖数据服务就可以查询属性,如果可以该改怎么做?
SQL查询,只要是支持的数据库就能查询啊。

您如果想自己一些属性存某个数据库,然后进行SQL查询也是一样的呀。
像你说这么做。模型如何跟数据关联???
这个关联关系就要您自己来完成啦。

比如数据库有个表table1,字段2个ID是1的,name是小学。

那sql查询  select ID from table1 where name = '小学'

结果是1,就把场景中ID是1的对象高亮即可。
问题是我能在场景中获取什么东西去关联数据库
您是用SQL查询还是点选查询?
点选啊,用SQL的话我输入ID?用户怎么知道那个ID跟模型对应???
点选不是之前就告诉您了吗?

遍历scene.layers即可获取图层,S3MTilesLayer的选中ID:S3MTilesLayer.getSelection()

获取到ID之后,根据这个ID去查询其他属性。
你的意思是,我点选个模型得遍历所有图层,然后挨个通过getSelection(),这样获取点取模型的ID???
是的 webgl还没有直接获取选中模型ID的办法,只能遍历获取。
okok,thx。问一下getSelection()只能获取ID?
...