之前做地图模块碰到一个问题,需要查询一个polygon所包含的一个图层集合内的所有图层的几何信息,每个图层遍历的话太耗费性能,想起有用过IdentifyTask查询点
/**
* 查询多个图层集合新建IdentityTask,为了获取当前点击的几何信息
* @param point {object} 点击位置
* @param url {string} 获取的图层地址
* @param collect {array} 图层id的集合
*/
queryIdentifyTask(point, url, collect) {
let _this = this;
let identifyTask = new _this.esri["IdentifyTask"](url);
let params = new _this.esri["IdentifyParameters"]();
params.tolerance = 3;
params.layerIds = collect;
params.layerOption = "top";
params.width = _this.view.width;
params.height = _this.view.height;
params.geometry = point;
params.returnGeometry = true;
params.mapExtent = _this.view.extent;
identifyTask
.execute(params)
.then(function(response) {
...
})
.catch((err) => {
console.log(err);
});
},
那用于查询面当然也可以。但是返回的结果却是空,后来尝试了很久,发现面查询的话,需要用webMercatorUtils.geographicToWebMercator 把经纬度转换为平面坐标系,就可以了,记录一下~