首页 / 浏览问题 / WebGIS / 问题详情
怎么请求服务获取属性表数据?
17EXP 2023年03月25日
var sqlParam = new ol.supermap.GetFeaturesBySQLParameters({

                queryParameter: {

                    name: "高中名录@广东省",

                    attributeFilter: "SMID>0"

                },

                datasetNames: ["广东省:高中名录"],

            });

            //向服务器发送请求,并对返回的结果进行处理

            new ol.supermap.FeatureService(url).getFeaturesBySQL(sqlParam, function (serviceResult) {

                //获取返回的features数据

                var features = serviceResult.result.features;

                console.log(serviceResult);

            });

问题:在iDesktop工作空间数据源中存有属性表数据集"高中名录",表中共有记录800条,为什么通过以上请求返回的features的数组只有前20条呢?查看浏览器响应的serviceResult后发现,totalCount是800,但features是20,而且响应数据中有url: "http://localhost:8090/iserver/services/data-广东省/rest/data/featureResults?returnContent=true&fromIndex=0&toIndex=19"。但是我的sql查询条件是smid>0,为什么返回结果给我加了fromIndex=0&toIndex=19这样一个过滤条件呢?请问我想查询属性表所有记录,应该怎么写?

1个回答

您好,您可以在 SuperMap iClient for OpenLayers 的 API 文档中(https://iclient.supermap.io/web/apis/openlayers.html)看到,fromIndex 默认值为 0,toIndex 默认值为 19,默认只能查询出 20 个数据,如果想要查询超过 20 个数据,需加上“toIndex: -1”,如果您想要查询超过 1000,还需要设置 maxFeatures 的值大于等于查询数量的。

406EXP 2023年03月27日
...