IdentifyTask :针对加载在地图上的 属性和空间查询,url不能指定单个图层,必须指定整个服务
引用:
查询任务:IdentifyTask查询参数:IdentifyParameters require(["esri/tasks/IdentifyTask","esri/tasks/support/IdentifyParameters"], function(IdentifyTask,IdentifyParameters) { var soilURL="查询的服务地址"; // 为指定的地图服务创建 查询任务 identifyTask = new IdentifyTask(soilURL); //设置查询参数 params = new IdentifyParameters(); //查询时点击的容差范围 params.tolerance = 3; //指定查询的图层 params.layerIds = [0, 1, 2]; //设置查询的图层 top:最上层 visible:服务可见图层(发布服务时设置的可见图层) all 所有图层(包含不可见图层) params.layerOption = "top"; params.width = view.width; params.height = view.height; //查询任务执行 identifyTask.execute(params) .then(function(response) { var results = response.results; //查询结果 return results.map(function(result) { var feature = result.feature; var layerName = result.layerName; feature.attributes.layerName = layerName; return feature; }); }) .then(showPopup); //查询结果显示 function showPopup(response) { if (response.length > 0) { view.popup.open({ features: response, location: event.mapPoint }); } document.getElementById("viewDiv").style.cursor = "auto"; } });FindTask:属性查询,不需要加载到地图上进行显示查询
require(["esri/tasks/FindTask","esri/tasks/support/FindParameters"], function(FindTask,FindParameters) { //开启任务 var find = new FindTask({ url: "查询的地图服务地址" }); // 设置参数 仅按图层名称和图层字段查询 var params = new FindParameters({ //查询图层 layerIds: [0], //查询的字段 searchFields: ["areaname"] }); //执行任务 find .execute(params) .then(showResults) });4系列 FindTask局限性:
1、3D图层不能进行查询2、动态图层不能查询(此处经验证:使用属性表连接的图层,查询不到需要的数据结果,动态服务是可以进行查询的)QueryTask :可进行空间和属性的查询(返回:几何图形Geometry和字段) ,不需要加载到地图上即可进行查询,url 可指定单个图层和多个图层
require([ "esri/tasks/QueryTask", "esri/tasks/support/Query" ], function(QueryTask, Query) { //设置查询图层 var qTask = new QueryTask({ url: peaksUrl }); //设置参数 var params = new Query({ //方法几何图形Geometry returnGeometry: true, //指定返回字段 outFields: ["*"] }); params.where = "设置查询条件 sql语句"; //执行任务 qTask .execute(params) .then(getResults); })1)文章来源项目实践,存在问题或疑问请留言,谢谢! 2)转载请标注来源!