ArcgisapiforJavascript中多图层查询(上)

ArcgisapiforJavascript中多图层查询(上)
在使⽤arcgis for javascript api 进⾏地图要素查询的过程中,发现使⽤QueryTask查询,单次只能查询单个图层;如果需要查询多个图层,就必须要新建多个Q ueryTask对象来执⾏多次查询。</span>
<span>有没有⼀个⽅法,可以单次对多个图层进⾏属性字段的查询呢?答案是有。官⽅api中提供了FindTask这⼀多个图层执⾏查询操作的⽅法。通过定义Fin dParameter。SearchText来执⾏跨越图层的查询操作。代码如下:
//定义findTask
var findTak = new FindTask("MapServer url");
var allLayerIds = [0,1,2,……];//需要查询的所有特征图层的Id,即url最后⼀位
var findParameters = new FindParameters();//创建FindParameters
findParameters.layerIds = allLayerIds;
findParameters.searchFields = ["属性字段名1","属性字段名2","属性字段名3",……];//限定查询的字段
findParameters.searchText = "0";//查询字段中包含"0"
//执⾏查询,回调函数中返回查询结果
剖分式油封
核桃脱壳机
console.log(results);
});
这样就查询出了字段中包括“0”的所有数据,解决了跨图层查询的问题。
但是笔者在测试过程中发现,searchText是不⽀持SQL的,即这样的查询只能实现精确到某数据某字段的查询任务,⽆法实现范围查询。于是,就到了FindP arameters的LayerDefinitions属性。FindParameters.LayerDefinitions[layerid]即定义简单SQL⽤来进⾏范围查询。代码如下:
var findTak = new FindTask("MapServer url");
柴火无烟灶
var allLayerIds = [0,1,2,……];
var findParameters = new FindParameters();
口红管
声纳探鱼器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语句。
}
console.log(results);
});
这样,就查询除了包含0,并且包含⽂本参数的范围查询。那么,这样的查询,必须要有⼀个“0”。假如说某些数据所有字段都没有包含“0”,该如何查询呢?(
未完)
(代码⼿写,可能有拼写错误,见谅)

本文发布于:2024-09-22 11:33:37,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/307572.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   图层   字段   过程   属性   返回   包含   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议