获取三维图层列表 |
在 SuperMap iServer REST 三维服务模块中,通过 scenes 资源可以获取三维服务中所有的场景列表,每个场景中可以包含多个三维图层。
获取三维场景列表,需要对 scenes 资源,即如下 URI 执行 GET 请求,请参见 REST API 中 scenes 资源页面。
http://localhost:8090/iserver/services/components-rest/rest/realspace/scenes.json
其中,集合中每个子元素的 name 值就是三维场景的名称,path 值就是三维场景资源的访问路径。
一个示例 path 值如下:
http://localhost:8090/iserver/services/components-rest/rest/realspace/scenes/scene
在 path 后加上“/layers.json”,即能获取场景中包含的图层的信息,请参见 REST API 中 layers 资源页面。
由此,就可以获得 SuperMap iServer REST 三维服务中,所有的三维场景信息,以及各个三维场景中包含的图层的信息,示例代码如下:
//获取服务器上所有的三维图层信息。
function getRLayers()
{
var commit=getcommit();
var uri="http://localhost:8090/iserver/services/components-rest/rest/realspace/scenes.json";
commit.open("GET",encodeURI(uri),false,"","");
commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
commit.send(null);
//解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
var response = json_parse(commit.responseText, null);
//获取用作显示的 Div 容器。
var container = document.getElementById('container');
//输出结果
//三维场景的数目
var len=response.length;
container.innerHTML="iServer 服务里的三维场景有"+len+"个,分别为:";
var str ='<ol>';
for(var i=0;i<len;i++)
{
str += '<li>场景名:' + response[i].name + ',该场景包含以下三维图层:' + '<ul>';
var layerspath=response[i].path+'/layers.json';
//获取该场景的 layers
commit.open("GET",encodeURI(layerspath),false,"","");
commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
commit.send(null);
var layersInfo=json_parse(commit.responseText, null);
//三维图层的数目
var len1=layersInfo.length;
for(var j=0;j<len1;j++)
{
str += '<li>图层名:'+layersInfo[j].name+',图层类型:'+layersInfo[j].layer3DType+"数据:"+layersInfo[j].dataName+'</li>';
}
str +='</ul></li>';
}
str +='</ol>';
container.innerHTML+=str;
}
获取的三维场景及图层信息如下:
iServer 服务里的三维场景有1个,分别为:
图层名:OlympicGreen,图层类型:VectorLayer 数据:OlympicGreen_1358161394
图层名:flyRoute2,图层类型:KMLLayer 数据:flyRoute2_492950542
图层名:flyRoute1,图层类型:KMLLayer 数据:flyRoute1_493874063
图层名:BirdNestRoad,图层类型:KMLLayer 数据:BirdNestRoad_1596249843
图层名:SubwayPoint@RealspaceSample,图层类型:VectorLayer 数据:SubwayPoint@RealspaceSample
图层名:GasPoint@RealspaceSample,图层类型:VectorLayer 数据:GasPoint@RealspaceSample
图层名:BusPoint@RealspaceSample,图层类型:VectorLayer 数据:BusPoint@RealspaceSample
图层名:RoadA@RealspaceSample,图层类型:VectorLayer 数据:RoadA@RealspaceSample
图层名:lawn@RealspaceSample,图层类型:VectorLayer 数据:lawn@RealspaceSample
图层名:buildings@RealspaceSample,图层类型:VectorLayer 数据:buildings@RealspaceSample
图层名:2015beijingsubway,图层类型:KMZLayer 数据:2015beijingsubway_1078398575
图层名:bridge_beijing,图层类型:KMLLayer 数据:bridge_beijing_1681266282
图层名:beijing@beijing,图层类型:ImageFileLayer 数据:beijing@beijing
图层名:WorldMap,图层类型:ImageFileLayer 数据:WorldMap
图层名:Beijing@RealspaceSample_Terrain,图层类型:TerrainFileLayer 数据:Beijing@RealspaceSample_Terrain