queryResult 解析

发送反馈


queryResult 是查询结果资源,保存对地图查询的一个结果,在对 queryResults 执行 POST 请求的时候被创建,URI 也是由创建的时候服务器决定的。

queryResult 资源不仅支持 json、rjson、html、xml 格式的表述,当查询结果中包含几何实体信息的时候(由查询参数 queryParameters 中的 queryOption 决定),还支持图片格式(png、bmp、jpeg、gif)的表述。

对 queryResult 资源执行 GET 请求,可以获取其中的信息(参见 REST API 中 queryResult 资源页面)。以距离查询中查询的结果为例,其中包含属性信息和几何对象信息,获取查询结果的数目,并把所有字段的值列出来,代码如下:

//解析 queryResult 资源

function getQueryResult()

{

    var commit=getcommit();

    //距离查询结果的 URI,由文本框的 id 参数 queryURI 传入

    var uri=document.getElementById("queryURI");

    //设置请求体参数

    var entry=null;

    commit.open("GET",encodeURI(uri.value),false,"","");

    commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

    commit.send(toJSON(entry));

    //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。

    var response = json_parse(commit.responseText, null);       

    //记录集数目

    var resordserNum=response.recordsets.length;

    //字段数目

    var fieldcount;

    //记录集中的地物数目

    var count;

    //获取用作显示的 Div 容器。

    var container = document.getElementById('container');

    container.innerHTML="";

    container.innerHTML+="共有 "+ resordserNum+" 个记录集:";    

    for(var i=0;i<resordserNum;i++)

    {

        container.innerHTML+="<p>记录集"+ (i+1)+":</p>";        

        fieldcount=response.recordsets[i].fieldCaptions.length;

        count=response.recordsets[i].features.length;

        for(var j=0;j<count;j++)

        {

            container.innerHTML+="地物"+(j+1)+":";

            for(var k=0;k<fieldcount;k++)

            {                container.innerHTML+=response.recordsets[i].fields[k]+"="+response.recordsets[i].features[j].fieldValues[k]+",";

            }

            container.innerHTML+="<br>";

        }

    }

}

其中,queryResult 中记录集(Feature)的数目跟查询参数 queryParameters 中的“"queryParams":[{…}]”集合的元素个数一致,即有多少组查询数据集的查询参数,就有多少个记录集。在距离查询的查询参数 queryParameters.queryParams 中,只有一组查询数据集的参数(即{"sortClause":null,"ids":null,"name":"China_Province_R@China400","attributeFilter":null,"groupClause":null,"linkItems":null,"joinItems":null,"fields":["SMID","Name"]})。所以查询结果只有一个记录集,结果如下: