import {
Tangram
} from "./Tangram";
import {
Point2D
} from "./Point2D";
import {
Polygon
} from "./Polygon";
/**
* 多多边形几何对象
* @class Zondy.Object.MultiPolygon
* @classdesc 多多边形几何对象
* @extends Zondy.Object.Tangram
* @param {Array} polygonArr 一组线几何对象 Array<{@link Zondy.Object.Polygon}>
* @param {Object} option 属性键值对,拓展属性
*/
class MultiPolygon extends Tangram {
/// <summary>多多边形几何对象构造函数</summary>
/// <param name="polygonArr" type="Zondy.Object.Polygon in an Array">
/// 多边形数组
/// </param>
constructor(polygonArr, option) {
var options = option ? option : {};
super(options);
/**
* @member Zondy.Object.MultiPolygon.prototype.polygonArr
* @type {Array}
* @description 一组线几何对象 Array<{@link Zondy.Object.Polygon}>
* @default false
*/
this.polygonArr = ((polygonArr !== undefined && polygonArr !== null) && Array.isArray(polygonArr)) ? polygonArr : new Array();
}
/**
* @function Zondy.Object.MultiPolygon.prototype.setByOL
* @description 设通过传入Openlayers的ol.geom.Polygon类型来设置参数
* @param {ol.geom.Polygon} openlayersPoly 由Openlayers定义的多边形
*/
setByOL(openlayersPoly) {
if (openlayersPoly !== undefined && openlayersPoly !== null) {
this.polygonArr = [];
var polygonLen = openlayersPoly.getLinearRingCount();
var lineRingArr = openlayersPoly.getLinearRings();
for (var i = 0; i < polygonLen; i++) {
var pointArr = lineRingArr[i].getCoordinates();
var len = pointArr.length;
var polygonPoints = [];
for (var j = 0; j < len; j++) {
polygonPoints[j] = new Point2D(pointArr[j][0], pointArr[j][1]);
}
this.polygonArr[i] = new Polygon(polygonPoints);
}
}
}
/**
* @function Zondy.Object.MultiPolygon.prototype.toString
* @description 返回一个字符串来表示该多边形
*/
toString() {
if (this.polygonArr === undefined || this.polygonArr === null || this.polygonArr.length === 0)
return "";
var str = "";
for (var i = 0; i < this.polygonArr.length; i++) {
str += this.polygonArr[i].toString() + ";";
}
return str.substring(0, str.length - 1);
}
/**
* @function Zondy.Object.MultiPolygon.prototype.getGeometryType
* @description 获取几何类型名称
*/
getGeometryType() {
return "multiPolygon";
}
}
export {
MultiPolygon
};
Zondy.Object.MultiPolygon = MultiPolygon;