ArcGIS Scene Layer 点击获取要素属性

目前想实现的功能是点击模型的某一部分,得到该模型的相关属性,现在的问题是,我通过点击获取到的scene layer的graphic里面,属性只有一个默认的objectid。
J0EZUI2F6EF~YJRA@0Y@6.png

但是场景服务的popup template里面的属性是正常的有很多条。

123.png


我查看scenelayer.fields属性,发现服务里面的确是没有字段可以被获取到。根据网上一些资料,我需要在发布scene服务的时候设置那些字段可以被访问,然而我在设置的时候,无法编辑。如下图。
_)13Y3OIE)5@O@7~`PHU`0R.png

我的问题是,获取场景服务里要素的属性是可行的吗?具体的实现方案是怎么。
已邀请:

goldenlimit - Major in MIS and minor in GIS, graduated from University of Alabama. GIS is not a simply tool but a way of exploring the unknow

赞同来自: xwqqwx0371 谢军 duboqun

<p>根据目前4.3的function,你可以用SceneLayerView这个函数获得SceneLayer的attribute. 官方有一个sample是根据webmap ID 直接获取的:https://developers.arcgis.com/ ... gt%3B
我写了一个类似的sample是直接从SceneLayer读取的。基本的步骤是:
1. 通过Event handler 触发 获取sceneLayer的sceneLayerView
2. 通过点击事件把屏幕上的位置与hitTest关联
3. 通过判断有没有response 来检测相关的graphic
4. 通过query来找到相关点击graphic的objectId 从而最终找到attribute的所有信息
你查看console就能看到所有的attribute的信息了:https://jsbin.com/zirorajele/edit?html,css,js,console,output 
 

相关的API doc在这:https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-SceneLayerView.html#queryFeatures 

目前这个queryFeatures method还处于beta阶段, 所以你能看到console里面返回的有一个警告,虽然没影响到搜索结果,但还是会报这个错,我也不知道具体底层问题是什么。但是不影响用至少
希望对你有所有帮助。
Good Luck

要回复问题请先登录注册