当前位置: 移动技术网 > IT编程>开发语言>JavaScript > ArcgisapiforJavascript中多图层查询(上)

ArcgisapiforJavascript中多图层查询(上)

2019年04月05日  | 移动技术网IT编程  | 我要评论

arcgisapiforjavascript中多图层查询。在使用arcgis for javascript api 进行地图要素查询的过程中,发现使用querytask查询,单次只能查询单个图层;如果需要查询多个图层,就必须要新建多个querytask对象来执行多次查询。

有没有一个方法,可以单次对多个图层进行属性字段的查询呢?答案是有。官方api中提供了findtask这一多个图层执行查询操作的方法。通过定义findparameter。searchtext来执行跨越图层的查询操作。代码如下:

//定义findtask

var findtak = new findtask("mapserver url");

var alllayerids = [0,1,2,……];//需要查询的所有特征图层的id,即url最后一位

var findparameters = new findparameters();//创建findparameters

findparameters.returngemotry = true;//是否返回几何对象

findparameters.layerids = alllayerids;

findparameters.searchfields = ["属性字段名1","属性字段名2","属性字段名3",……];//限定查询的字段

findparameters.searchtext = "0";//查询字段中包含"0"

//执行查询,回调函数中返回查询结果

fintask.execute(findparameters,function(results){

console.log(results);

});

这样就查询出了字段中包括“0”的所有数据,解决了跨图层查询的问题。

但是笔者在测试过程中发现,searchtext是不支持sql的,即这样的查询只能实现精确到某数据某字段的查询任务,无法实现范围查询。于是,就找到了findparameters的layerdefinitions属性。findparameters.layerdefinitions[layerid]即定义简单sql用来进行范围查询。代码如下:

var findtak = new findtask("mapserver url");

var alllayerids = [0,1,2,……];

var findparameters = new findparameters();

findparameters.returngemotry = true;

findparameters.layerids = alllayerids;

findparameters.searchfields = ["属性字段名1","属性字段名2","属性字段名3",……];

findparameters.searchtext = "0";//这里的‘0’是指每条数据都包括的一个字符串

var layerdefinition = [];

for(var i = 0; i< alllayerids.length;i++){

findparameters.layerdefinition[i] = "字段1 like '%"+文本参数1+"%' or 字段2 like '%"+文本参数2+%'";//可继续拼接更多字段,也可使用<、>、=等where语句。

}

fintask.execute(findparameters,function(results){

console.log(results);

});

这样,就查询除了包含0,并且包含文本参数的范围查询。那么,这样的查询,必须要有一个“0”。假如说某些数据所有字段都没有包含“0”,该如何查询呢?

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网