查询数据

可以使用featureService创建queryObject,然后通过queryObject查询图层中的数据,详见参考文档

let server = new wserver.Server();
let featureService = server.createFeatureService();
let layer = "demo.msp_demo_pt";
let queryObj = featureService.createQueryObject(layer);

基础查询

如果已经知道数据的id,可以使用queryById查询数据。

//根据id查询
queryObj.queryById(1,(feature)=>{
    console.log(feature);
});

可以指定多个id,同时查询多条数据。

//根据id批量查询
queryObj.queryByIds([1,2],(feature)=>{
    console.log(feature);
});

可以在查询时指定查询的过滤条件、空间范围、并指定返回字段及排序字段。

 //设置查询返回字段
queryObj.setOutFields('name');//仅返回name字段
//queryObj.setOutFields('*');//返回所有字段
queryObj.setReturnGeometry(true);//返回空间字段

//设置排序字段
queryObj.setOrderByFields("name asc,std_owner desc")

//设置where条件
queryObj.setWhere("1=1");

//设置查询空间范围
queryObj.setGeometry({
    "type": "Polygon",
    "coordinates": [
        [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]]
    ]
});

//执行查询
queryObj.execute(function (features) {
    console.log(features);
});

有时希望对指定区域周边数据,此时可以指定缓冲区,缓冲查询的返回结果会自动生成的缓冲区。

 queryObj.setOutFields('*');
//设置查询条件
queryObj.setWhere("1=1");
//设计缓冲查询条件
queryObj.setGeometry({type:"Point",coordinates:[117.597656,40.111689]});//几何对象,可以为任意有效的GeoJSON Geometry对象
queryObj.setBufferDistance(200000); //缓冲半径,单位为米
//执行查询
queryObj.execute(function (features,bufferPolygon) {
    //输出查询结果
    console.log(features);
    //输出缓冲区
    console.log(bufferPolygon)
});

详见示例

分页查询

地图易平台每次查询最多只能返回5000条数据,如果查询结果过多,需要使用分页查询。

使用executeWithPage进行分页查询,该方法返回分页查询对象,详见参考文档

 //创建查询对象,指定要查询的图层名称
queryObject = featureService.createQueryObject(layer);
//设置属性查询条件
queryObject.setWhere("1=1");
//设置每页大小
queryObject.setPageSize(10);
//执行查询并在地图上绘制查询结果
queryObject.executeWithPage(function (rs) {
    pageResult = rs;
    console.log(`共${pageResult.getTotal()}条记录 `);
    console.log(`共${pageResult.getTotalPage()}页数据 `);
    firstPage();
})

使用firstPage()获取第1页数据:

 pageResult.firstPage(function (features) {
    console.log(features);
})

使用firstPage()获取最后一页数据:

 pageResult.lastPage(function (features) {
    console.log(features);
})

使用prePage()获取上一页数据:

pageResult.prePage(function (features) {
    console.log(features);
})

使用prePage()获取下一页数据:

pageResult.nextPage(function (features) {
    console.log(features);
})

有时需要自动抓取所有页数据,可以使用autoLoadPage()方法。

let beginPage = 1;
let endPage = pageResult.getTotalPage();

let allFeatures = [];
let pageCallback = function (pageNumber, features) {
    console.log(`第${pageNumber}加载完成`);
    for(let i = 0; i <features.length ; i ++){
        allFeatures.push(features[i]);
    }
};

let endCallback = function () {
    //加载完成,此时features中包含图层的所有数据
    console.log("加载完成");
    console.log(allFeatures);
};

pageResult.autoLoadPage(beginPage, endPage, pageCallback, endCallback);

详见示例

results matching ""

    No results matching ""