arcGis之IdentifyTask

173 阅读1分钟

之前做地图模块碰到一个问题,需要查询一个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 把经纬度转换为平面坐标系,就可以了,记录一下~