import {
Zondy
} from '../../common/Base';
import {
GeometryAnalysisBase
} from "./GeometryAnalysisBase";
import {
Point2D
} from "../../common/Point2D";
import {
IgsServiceBase
} from "../../baseserver/IServiceBase";
import {
CProjectParam
} from "./CProjectParam";
import {
CProjectBySRSID
} from "./CProjectBySRSID";
/**
* 测量服务基类
* @class module:几何分析服务.CalServiceBase
* @classdesc 测量服务基类
* @description Zondy.Service.CalServiceBase
* @extends Zondy.Service.GeometryAnalysisBase
* @param {Object} option 属性键值对,拓展属性,为其他属性赋值的键值对<br>
* @param {Zondy.Object.Point2D} [option.dots=null] 需要计算的点数组 Array<{@link Zondy.Object.Point2D}>}
* @param {Zondy.Service.CProjectParam} [option.projectInfo=null] 类型
* @param {Zondy.Service.CProjectBySRSID} [option.projectInfoBySRSID=null] 投影座标系信息
*/
class CalServiceBase extends GeometryAnalysisBase {
constructor(option) {
var options = option ? option : {};
super(options);
/**
* @private
* @member Zondy.Service.CalServiceBase.prototype.dots
* @type {Array}
* @description 需要计算的点数组 Array<{@link Zondy.Object.Point2D}>}
* @default null
*/
this.dots = options.dots !== undefined ? options.dots : null;
/**
* @private
* @member Zondy.Service.CalServiceBase.prototype.projectInfo
* @type {Zondy.Service.CProjectParam}
* @description 类型
* @default null
*/
this.projectInfo = options.projectInfo !== undefined ? options.projectInfo : null;
/**
* @private
* @member Zondy.Service.CalServiceBase.prototype.projectInfoBySRSID
* @type {Zondy.Service.CProjectBySRSID}
* @description 投影座标系信息
* @default null
*/
this.projectInfoBySRSID = options.projectInfoBySRSID !== undefined ? options.projectInfoBySRSID : null;
}
/**
* @function Zondy.Service.CalServiceBase.prototype.execute
* @description 通过传入投影参数或者通过传入SRSID参数进行计算
* @param {Zondy.Service.CProjectBySRSID | Zondy.Service.CProjectParam} projParam 投影参数,建议普通用户采用此类直接获取MapGIS GDB 已经提供的空间参考系
* @param {callback} onSuccess 执行成功后的回调函数
* @param {callback} onError 执行失败后的回调函数
*/
execute(projParam, onSuccess, onError) {
if (projParam instanceof CProjectParam) {
this.projectInfo = projParam;
}
if (projParam instanceof CProjectBySRSID) {
this.projectInfoBySrsID = projParam;
}
var postObj = {};
postObj.Dots = this.dots;
postObj.ProjectInfo = this.projectInfo;
postObj.ProjectInfoBySrsID = this.projectInfoBySrsID;
var me = this;
var url = me.getFullUrl();
var service = new IgsServiceBase(url, {
eventListeners: {
scope: me,
processCompleted: onSuccess,
processFailed: onError
}
});
service.processAsync({
method: 'POST',
data: JSON.stringify(postObj),
headers: {
'Content-Type': 'text/plain;charset=UTF-8'
}
});
}
}
export {
CalServiceBase
};
Zondy.Service.CalServiceBase = CalServiceBase;