获取三维图层列表

发送反馈


在 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个,分别为:

  1. 场景名:scene,该场景包含以下三维图层:
    • 图层名: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