import {
Zondy,extend,formatQuery
} from '../common';
import {ArcGisServiceBase} from "./ServiceBase";
/**
* @class module:ArcGis.ArcGisIdentifyTask
* @description Identify查询对象
* @author 基础平台-杨琨
* @param options - {Object} 必选项,初始化IdentifyTask参数。
* @param {String} [option.url] 必选项,地图服务url。
* @param {String} [option.gdbVersion] 可选项,地理服务器版本。
*/
class ArcGisIdentifyTask {
constructor(options) {
this.options = {
gdbVersion: null,
url: null
}
options.url = options.url + "/identify?f=json";
extend(this.options,options);
}
}
/**
* @function module:ArcGis.ArcGisIdentifyTask.prototype.execute
* @description 根据几何对象查询
* @author 基础平台-杨琨
* @param params - {Object} 必选项,查询参数。
* @param requestOptions - {String} ke选项,查询参数。
* @param {Geometry} [params.geometry] 必选项,几何查询条件。
* @param {Number} [params.tolerance] 可选项,公差。
* @param {String} [params.mapExtent] 必选项,地图范围,形式为mapExtent:“114.106,30.434,114.491,30.724”。
* @param {Number} [params.width] 必选项,地图容器的的宽度。
* @param {Number} [params.height] 必选项,地图容器的高度。
* @param {Number} [params.dpi] 可选项,dpi值,默认为96。
* @param {Array} [params.layerIds] 可选项,指定选择那些图层。
* @param {String} [params.layerOption] 可选项,图层展示方式。
* @param {Number} [params.geometryPrecision] 可选项,指定返回的几何对象的小数点位数。
* @param {Number} [params.maxAllowableOffset] 可选项,最大偏移量。
* @param {Boolean} [params.returnFieldName] 可选项,是否返回别名还是字段名。
* @param {Boolean} [params.returnGeometry] 可选项,是否返回别几何坐标集合。
* @param {Boolean} [params.returnM] 可选项,是否返回M值。
* @param {Boolean} [params.returnUnformattedValues] 可选项,是否返回值是否格式化。
* @param {Boolean} [params.returnZ] 可选项,是否返回Z值。
* @param {String} [params.spatialReference] 可选项,指定空间坐标系。
*/
ArcGisIdentifyTask.prototype.execute = function (params, requestOptions) {
let url = this.options.url,
formatObj = {
outSpatialReference:"sr"
},
service = new ArcGisServiceBase();
let trueParams = {};
let type = params['geometry'].type;
let firstChar = type.substr(0,1).toUpperCase();
let lastCher = type.substr(1,type.length);
params['geometryType'] = "esriGeometry" + firstChar + lastCher;
params['geometry'] = params['geometry'].toGeometryJSON();
if(!trueParams['layers']){
trueParams['layers'] = params['layerIds'] ? params['layerOption'] + ":" + String(params['layerIds']) : "layers=" + params['layerOption'];
delete params['layerOption'];
delete params['layerIds'];
}
if(!trueParams['imageDisplay']){
trueParams['imageDisplay'] = params['width'] + "," + params['height'] + "," + params['dpi'];
delete params['width'];
delete params['height'];
delete params['dpi'];
}
extend(trueParams,params);
url = formatQuery(trueParams,url,null,formatObj);
return service.getPromise(url);
}
export {ArcGisIdentifyTask};
Zondy.Service.ArcGisIdentifyTask = ArcGisIdentifyTask;