地图查询
1、任务查询 IdentifyTask
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";
}
});
2、属性查询 FindTask
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、动态图层不能查询(此处经验证:使用属性表连接的图层,查询不到需要的数据结果,动态服务是可以进行查询的)
3、 空间属性查询 QueryTask
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)转载请标注来源!