相比较于QueryTask,FindTask和IdentifyTask支持多个图层查询。FindTask支持属性查询,IdentifyTask支持图形查询。
1、FindTask
FindTask通过FindParameters类来设置查询参数,执行search.execute(FindParameters,function (result))
先设置查询参数:
returnGeometry:是否返回Geometry;
layerIds:要查询图层的ID;
searchFields:通过哪个字段来查询;
searchText:查询字段匹配值
var params = new FindParameters();
params.returnGeometry=true;
params.layerIds=[0,1,2];
params.searchFields=["name"];
params.searchText=$("#searchParam").val();
执行查询
将查询结果通过表格形式展示,再给表格每行添加点击设置地图中心事件
search.execute(params,function (result) {
if(result.length==0){
alert("俺没找到哦")
}else {
$("#result table").html("");
$("#result table").append(" <tr> <th>名字</th> <th>价格</th> <th>容积率</th> <th>绿化率</th> <th>户数</th> <th>区域</th> <th>商圈</th> <th>类型</th> </tr>");
for(var a=0;a<result.length;a++){
var html="<tr>"+
"<td>" +result[a].feature.attributes["Name"] +"</td>"+
"<td>"+result[a].feature.attributes["Ave_price"]+"</td>"+
"<td>"+result[a].feature.attributes["Rate"]+"</td>"+
"<td>"+result[a].feature.attributes["lvhua"]+"</td>"+
"<td>"+result[a].feature.attributes["hushu"]+"</td>"+
"<td>"+result[a].feature.attributes["Area"]+"</td>"+
"<td>"+result[a].feature.attributes["shangquan"]+"</td>"+
"<td>"+result[a].feature.attributes["type"]+"</td>"+
"</tr>"
$("#result table").append(html);
}
$("tr").bind("click",function(){
var index=$("tr").index(this);
map.centerAt(result[index].feature.geometry);
map.setZoom(18);
})
}
});
2、IdentifyTask
IdentifyTask通过IdentifyParameters类来设置查询参数,执行execute方法查询。
设置查询参数
returnGeometry:是否返回几何信息
layerIds:要查询的图层
layerOption:查询条件,参考常量表
geometry :查询的几何对象,可通过绘制工具获得
var params = new IdentifyParameters();
params.returnGeometry = true;
params.layerIds = [0,1,2];
params.layerOption = IdentifyParameters.LAYER_OPTION_ALL;
params.geometry = geometry;//
这里的geometry通过绘制工具获得,具体参考:ArcGIS API for js绘制工具
执行查询
将查询结果通过表格形式展示,再给表格每行添加点击设置地图中心事件,并且在地图上显示查询到的点:
if (result.length > 0) {
$("#result table").html("");
$("#result table").append(" <tr> <th>名字</th> <th>价格</th> <th>容积率</th> <th>绿化率</th> <th>户数</th> <th>区域</th> <th>商圈</th> <th>类型</th> </tr>");
for (var a = 0; a < result.length; a++) {
var html="<tr>"+
"<td>" +result[a].feature.attributes["Name"] +"</td>"+
"<td>"+result[a].feature.attributes["Ave_price"]+"</td>"+
"<td>"+result[a].feature.attributes["Rate"]+"</td>"+
"<td>"+result[a].feature.attributes["lvhua"]+"</td>"+
"<td>"+result[a].feature.attributes["hushu"]+"</td>"+
"<td>"+result[a].feature.attributes["Area"]+"</td>"+
"<td>"+result[a].feature.attributes["shangquan"]+"</td>"+
"<td>"+result[a].feature.attributes["type"]+"</td>"+
"</tr>";
$("#result table").append(html);
var graphic = result[a].feature;
graphic.setSymbol(new PictureMarkerSymbol("css/images/point.png",30,30));
map.graphics.add(graphic);
}
$("tr").bind("click",function(){
var index=$("tr").index(this);
map.centerAt(result[index].feature.geometry);
map.setZoom(18);
})
}
else {
alert("没找到")
}
GIS技术交流:GISGO(http://www.gisgo.top)
欢迎关注我的微信公众号