import {
Tangram
} from "./Tangram";
import {
Point2D
} from "./Point2D";
/**
* 线几何对象
* @class Zondy.Object.PolyLine
* @classdesc 线几何对象
* @extends Zondy.Object.Tangram
* @param {Array} [pointArr = new Array()] 一组点几何对象 Array<{@link Zondy.Object.Point2D}>
* @param {Object} option 属性键值对
* @param {Number} [option.nearDis = null] 线搜素半径,只在做线查询时需赋值
*/
class PolyLine extends Tangram {
/// <summary>线几何对象构造函数</summary>
/// <param name="pointArr" type="Array,Zondy.Object.Point2D in an Array">
/// 一组点几何对象
/// </param>
constructor(pointArr, option) {
var options = option ? option : {};
super(options);
/**
* @member Zondy.Object.PolyLine.prototype.nearDis
* @type {Number}
* @description 线搜素半径double,只在做线查询时需赋值
* @default null
*/
this.nearDis = (options.nearDis !== undefined && options.nearDis !== null) ? parseFloat(options.nearDis) : null;
/**
* @member Zondy.Object.PolyLine.prototype.pointArr
* @type {Array}
* @description 一组点几何对象 Array<{@link Zondy.Object.Point2D}>
* @default new Array()
*/
this.pointArr = ((pointArr !== undefined && pointArr !== null) && Array.isArray(pointArr)) ? pointArr : new Array();
}
/**
* @function Zondy.Object.PolyLine.prototype.setByOL
* @description 通过传入Openlayers的ol.geom.LineString类型来设置参数
* @param {ol.geom.LineString} openlayersLine Openlayers定义的折线对象
*/
setByOL(openlayersLine) {
if (openlayersLine !== undefined && openlayersLine !== null) {
var dotArr = openlayersLine.getCoordinates();
var len = dotArr.length;
for (var i = 0; i < len; i++) {
this.pointArr[i] = new Point2D(dotArr[i][0], dotArr[i][1]);
}
}
}
/**
* @function Zondy.Object.PolyLine.prototype.toString
* @description 对象转化为字符串
* @returns {String} 返回一个字符串来表示该折线
*/
toString() {
if (this.pointArr === null || this.pointArr.length === 0)
return "";
var str = this.pointArr[0].x + ',' + this.pointArr[0].y;
for (var i = 1; i < this.pointArr.length; i++) {
str += "," + this.pointArr[i].x + ',' + this.pointArr[i].y;
}
if (this.nearDis !== undefined && this.nearDis !== null) {
str += ";" + this.nearDis;
}
return this.Trim(str, "g");
}
/**
* @function Zondy.Object.PolyLine.prototype.getGeometryType
* @description 获取几何类型名称
* @returns {String} line
*/
getGeometryType() {
return "line";
}
}
export {
PolyLine
};
Zondy.Object.PolyLine = PolyLine;