首页 / 浏览问题 / 三维GIS / 问题详情
场景加载地图图层之后怎么获取图层属性
15EXP 2017年06月22日
在三维平面场景中叠加了一个地图图层。是一个矢量图层。在只知道地图图层地址的情况下,怎么获取这个图层的所有属性信息。

1个回答

您好,从服务地址可以得到的图层属性信息示例:

http://support.supermap.com.cn:8090/iserver/services/3D-osgb/rest/realspace/scenes/osgb/layers/jinjiang_Compressed-test.rjson

能获取到的信息有:

{
    "alwaysRender": true,
    "bounds": null,
    "cachePassword": null,
    "caption": "jinjiang_Compressed-test",
    "dataConfigPath": "E:/SuperMap/supermap_iserver_811_14826_40_win64_deploy/samples/data/Realspace/osgb/jinjiang_Compressed-test.scp",
    "dataName": "jinjiang_Compressed-test",
    "description": "",
    "editable": false,
    "isWebDatasource": false,
    "layer3DType": "OSGBLayer",
    "level": -1,
    "maxVisibleAltitude": 0,
    "minVisibleAltitude": 0,
    "name": "jinjiang_Compressed-test",
    "oldCache": false,
    "queryable": false,
    "subLayers": {},
    "type": null,
    "useTwoDimenCache": false,
    "visible": true,
    "visibleDistance": 0
}

其他更详细的信息,需要通过客户端提供的接口获取,比如插件客户端获取某个图层的风格信息,Layer3D.get_style3D()。更多方法或属性请查询帮助手册哈。

3,389EXP 2017年06月22日
我的意思是图层里要素的id,name等属性信息。不是图层的属性信息。

哦,那您应该说图层对象的信息,不是图层的信息啊,crying

缓存图层只可以获取选中对象的属性。要获取所有的信息,只有把原始的数据发布数据服务,通过数据服务获取哈。

为啥我点击场景里面自带的图层可以获取到图层里面要素的属性,但是动态加载到场景里面的图层点击之后就获取不到点击的要素的属性呢。
场景里面自带的是矢量图层,动态添加进去的也是矢量图层,是发布成地图了。然后把地图加载到场景里面的。
怎么点击?
鼠标左键点击
用的什么客户端?默认点击不会出属性啊?您是用的示范代码还是您自己写的?

三维插件啊。  就是矢量图层点击某一个要素。获取不到属性。点击的图层是发了服务动态加载到场景里面的。平面场景。

<!--StartFragment -->

SceneCtrl3D.addEvent("objectSelected",getFieldandValue);
var selectAction = new SuperMap.Web.UI.Action3Ds.Select(SceneCtrl3D);
SceneCtrl3D.set_sceneAction(selectAction);

清楚了,矢量缓存图层可以用这个方法哈。

OSGB缓存就不行了,OSGB缓存用方法:

var resultVar = instanceOfLayer3DOSGB.getAllFieldValueOfLastSelectedObject();

获取OSGB图层所选中对象的所有属性信息。

我用的就是矢量图层啊。加载到场景里面的都是矢量图层、不是osgb的。
也是矢量缓存啊?把您自己添加图层的代码发出来看看吧,您删除客户端缓存试试看看好使不:

停止iServer服务,打开运行输入“%appdata%”把应用目录“AppData\LocalLow\SuperMap”和“AppData\Local\SuperMap”目录删了,iServer目录下\webapps\iserver\output”删了,重启iServer服务。
行,我试一试,谢谢!
...