ArcGIS API For JavaScript——空间查询(FindTask和IdentifyTask)

相比较于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)

欢迎关注我的微信公众号
微信

猜你喜欢

转载自blog.csdn.net/agisboy/article/details/74114916
今日推荐