import {
Zondy
} from './Base';
import {
Tangram
} from "./Tangram";
import {
Point2D
} from "./Point2D";
/**
* 圆几何对象
* @class Zondy.Object.Circle
* @classdesc 圆几何对象
* @extends Zondy.Object.Tangram
* @param {Zondy.Object.Point2D} [point = null] 圆心点
* @param {Number} [radious = null] 半径
* @param {Object} option 属性键值对,用于拓展额外的属性字段
*/
class Circle extends Tangram {
/**
* @description 圆几何对象构造函数
* @param {Zondy.Object.Point2D} [point = null] 圆心点
* @param {Number} [radious = null] 半径
* @param {Object} option 属性键值对,用于拓展额外的属性字段
*/
constructor(point, radious, option) {
var options = option ? option : {};
super(options);
/**
* @private
* @member Zondy.Object.Circle.prototype.point
* @type {Zondy.Object.Point2D}
* @description 圆心点
* @default null
*/
this.point = (point !== undefined && point !== null) ? point : null;
/**
* @private
* @member Zondy.Object.Circle.prototype.radious
* @type {Number}
* @description 半径
* @default null
*/
this.radious = (radious !== undefined && radious !== null) ? radious : null;
}
/**
* @function Zondy.Object.Circle.prototype.setByOL
* @description 通过传入Openlayers的ol.geom.Circle类型来设置参数
* @param {ol.geom.Circle} openlayersPoly 由Openlayers定义的多边形
*/
setByOL(openlayersPoly) {
if (openlayersPoly !== undefined && openlayersPoly !== null) {
//圆心
var centerPoint = openlayersPoly.getCenter();
//圆半径
var radious = openlayersPoly.getRadius();
this.point = new Zondy.Object.Point2D(centerPoint[0], centerPoint[1]);
this.radious = radious;
}
}
/**
* @function Zondy.Object.Circle.prototype.toString
* @description 返回一个字符串来表示该多边形
* @returns {String}
*/
toString() {
if (this.point === null || this.point.length === 0 || this.radious === null) {
return "";
}
return this.point.x + "," + this.point.y + "," + this.radious;
}
/**
* @function Zondy.Object.Circle.prototype.getGeometryType
* @description 获取几何类型名称
* @returns "Circle"
*/
getGeometryType() {
return "Circle";
}
}
export {
Circle
};
Zondy.Object.Circle = Circle;