Browse Source

feat:新增方法

YaolongHan 4 years ago
parent
commit
e092e36de5
1 changed files with 91 additions and 58 deletions
  1. 91 58
      src/components/mapClass/SPolygonItem.ts

+ 91 - 58
src/components/mapClass/SPolygonItem.ts

@@ -39,21 +39,29 @@ import { Point } from "./type/Point";
  */
  */
 export class SPolygonItem extends SGraphyItem {
 export class SPolygonItem extends SGraphyItem {
     /** X坐标最小值  */
     /** X坐标最小值  */
-    minX = Number.MAX_SAFE_INTEGER;
+    private minX = Number.MAX_SAFE_INTEGER;
     /** X坐标最大值  */
     /** X坐标最大值  */
-    maxX = Number.MIN_SAFE_INTEGER;
+    private maxX = Number.MIN_SAFE_INTEGER;
     /** Y坐标最小值  */
     /** Y坐标最小值  */
-    minY = Number.MAX_SAFE_INTEGER;
+    private minY = Number.MAX_SAFE_INTEGER;
     /** Y坐标最大值  */
     /** Y坐标最大值  */
-    maxY = Number.MIN_SAFE_INTEGER;
+    private maxY = Number.MIN_SAFE_INTEGER;
     /** 轮廓线坐标  */
     /** 轮廓线坐标  */
     pointList: SPoint[] = [];
     pointList: SPoint[] = [];
     /** 是否闭合    */
     /** 是否闭合    */
     closeFlag: boolean = false;
     closeFlag: boolean = false;
     // 当前状态 1:show 2 创建中,3 编辑中
     // 当前状态 1:show 2 创建中,3 编辑中
     _status: number = 2;
     _status: number = 2;
-    /** 显示高度 */
-    zOrder: number = 100;
+    // 获取当前状态
+    get getStatus(): number {
+        return this._status;
+    }
+    // 编辑当前状态
+    set setStatus(value: number) {
+        this._status = value;
+        this.update();
+    };
+    data: PolygonData | null = null;
     /** 边框颜色 */
     /** 边框颜色 */
     borderColor: SColor = new SColor("#0091FF");
     borderColor: SColor = new SColor("#0091FF");
     /** 填充颜色 */
     /** 填充颜色 */
@@ -62,34 +70,33 @@ export class SPolygonItem extends SGraphyItem {
     borderLine: number = 4;
     borderLine: number = 4;
     /** 鼠标移动点  */
     /** 鼠标移动点  */
     private lastPoint = new SPoint();
     private lastPoint = new SPoint();
+
+    /**
+    * 构造函数
+    *
+    * @param parent    指向父对象
+    * @param data      PolygonData数据
+    */
+
     constructor(parent: SGraphyItem | null, data: PolygonData | null) {
     constructor(parent: SGraphyItem | null, data: PolygonData | null) {
         super(parent);
         super(parent);
-        if (data) {
-            if (data.PointList) {
-                this._xyzListToSPointList(data.PointList);
-            }
-        } else {
-            // 如果
-            this.pointList = [];
-            this.update();
-        }
-    }
-    get getStatus(): number {
-        return this._status;
-    }
-    set setStatus(value: number) {
-        this._status = value;
-        this.update();
+        this.data = data
+        if (data && data.PointList) {
+            this._xyzListToSPointList(data.PointList);
+        };
+        this.zOrder = 100;
     }
     }
 
 
+
     /**
     /**
- * 新增多边形顶点
- * @param x   点位得x坐标
- * @param y   点位得y坐标
- * @param i   点位得i坐标
- * @return SPoint
- */
-    addPoint(x: number, y: number, i?: number): SPoint {
+    * 储存新的多边形顶点
+    * @param x   点位得x坐标
+    * @param y   点位得y坐标
+    * @param i   储存所在索引
+    * @return SPoint
+    */
+
+    reservePoint(x: number, y: number, i?: number): SPoint {
         const point = new SPoint(x, y);
         const point = new SPoint(x, y);
         if (typeof i == 'undefined') {
         if (typeof i == 'undefined') {
             this.pointList.push(point)
             this.pointList.push(point)
@@ -100,11 +107,13 @@ export class SPolygonItem extends SGraphyItem {
         return point
         return point
     }
     }
 
 
-    /** 删除点位
-* 新增多边形顶点
-* @param i   点位得i坐标
-* @return SPoint
-*/
+
+    /**
+    * 删除点位
+    * @param i   删除点所在的索引
+    * @return SPoint
+    */
+
     deletePoint(i?: number): SPoint | null | undefined {
     deletePoint(i?: number): SPoint | null | undefined {
         let point = null;
         let point = null;
         if (typeof i != 'undefined') {
         if (typeof i != 'undefined') {
@@ -119,13 +128,16 @@ export class SPolygonItem extends SGraphyItem {
         }
         }
         return point
         return point
     }
     }
-    /** 移动点位
-* 新增多边形顶点
-* @param x   点位得x坐标
-* @param y   点位得y坐标
-* @param i   点位得i坐标
-* @return SPoint
-*/
+
+
+    /**
+    * 多边形顶点的移动位置
+    * @param x   点位得x坐标
+    * @param y   点位得y坐标
+    * @param i   点位得i坐标
+    * @return SPoint
+    */
+
     movePoint(x: number, y: number, i: number, ): SPoint | null | undefined {
     movePoint(x: number, y: number, i: number, ): SPoint | null | undefined {
         let point = null;
         let point = null;
         if (this.pointList.length) {
         if (this.pointList.length) {
@@ -135,7 +147,15 @@ export class SPolygonItem extends SGraphyItem {
         point = this.pointList[i];
         point = this.pointList[i];
         return point
         return point
     }
     }
-    PrintList() {
+
+
+    /**
+    * 打印出多边形数组
+    * @return SPoint[]
+    */
+
+    PrintPointList(): SPoint[] {
+        return this.pointList
     }
     }
 
 
     /**
     /**
@@ -152,12 +172,14 @@ export class SPolygonItem extends SGraphyItem {
         );
         );
     } // Function boundingRect()
     } // Function boundingRect()
 
 
+
     /**
     /**
-    * 构造函
+    * xyz数据转换为SPoint格式函数;获取外接矩阵参
     *
     *
     * @param arr    外层传入的数据PointList
     * @param arr    外层传入的数据PointList
     */
     */
-    _xyzListToSPointList(arr: Point[]) {
+
+    protected _xyzListToSPointList(arr: Point[]) {
         if (arr.length) {
         if (arr.length) {
             this.pointList = arr.map(it => {
             this.pointList = arr.map(it => {
                 let x = it.X,
                 let x = it.X,
@@ -180,11 +202,14 @@ export class SPolygonItem extends SGraphyItem {
             this.pointList = []
             this.pointList = []
         }
         }
     }
     }
+
+
     /**
     /**
-   * 构造函数  闭合多边形
-   *
-   */
-    _showPolygon(painter: SPainter, pointList: SPoint[]) {
+    * 构造函数  展示多边形轮廓
+    *
+    */
+
+    protected showPolygon(painter: SPainter, pointList: SPoint[]) {
         painter.pen.lineCapStyle = SLineCapStyle.Square;
         painter.pen.lineCapStyle = SLineCapStyle.Square;
         painter.pen.color = this.borderColor;
         painter.pen.color = this.borderColor;
         painter.pen.lineWidth = painter.toPx(this.borderLine);
         painter.pen.lineWidth = painter.toPx(this.borderLine);
@@ -192,11 +217,13 @@ export class SPolygonItem extends SGraphyItem {
         painter.drawPolygon([...this.pointList]);
         painter.drawPolygon([...this.pointList]);
     }
     }
 
 
+
     /**
     /**
- * 构造函数  创建多边形
- *
- */
-    _createPolygon(painter: SPainter, pointList: SPoint[]) {
+    * 构造函数  创建多边形
+    *
+    */
+
+    protected createPolygon(painter: SPainter, pointList: SPoint[]) {
         painter.pen.lineCapStyle = SLineCapStyle.Square;
         painter.pen.lineCapStyle = SLineCapStyle.Square;
         painter.pen.color = new SColor("#0091FF");
         painter.pen.color = new SColor("#0091FF");
         painter.pen.lineWidth = painter.toPx(4);
         painter.pen.lineWidth = painter.toPx(4);
@@ -217,12 +244,18 @@ export class SPolygonItem extends SGraphyItem {
 * 构造函数  创建多边形
 * 构造函数  创建多边形
 *
 *
 */
 */
-    _editPolygon(painter: SPainter, pointList: SPoint[],point:SPoint) {
+    protected editPolygon(painter: SPainter, pointList: SPoint[], point: SPoint) {
         // 展示多边形
         // 展示多边形
-        this._showPolygon(painter, pointList);
+        this.showPolygon(painter, pointList);
         // 绘制顶点块
         // 绘制顶点块
 
 
+
     }
     }
+
+
+
+
+
     ////////////以下为鼠标事件
     ////////////以下为鼠标事件
 
 
     /**
     /**
@@ -257,7 +290,7 @@ export class SPolygonItem extends SGraphyItem {
      */
      */
     onMouseDown(event: SMouseEvent): boolean {
     onMouseDown(event: SMouseEvent): boolean {
         if (this._status == 2) {
         if (this._status == 2) {
-            this.addPoint(event.x, event.y)
+            this.reservePoint(event.x, event.y)
         }
         }
 
 
         return true;
         return true;
@@ -307,13 +340,13 @@ export class SPolygonItem extends SGraphyItem {
         // 当状态为展示状态
         // 当状态为展示状态
         if (this._status == 1) {
         if (this._status == 1) {
             // 闭合多边形
             // 闭合多边形
-            this._showPolygon(painter, this.pointList);
+            this.showPolygon(painter, this.pointList);
         } else if (this._status == 2) {
         } else if (this._status == 2) {
             // 创建状态
             // 创建状态
-            this._createPolygon(painter, this.pointList)
+            this.createPolygon(painter, this.pointList)
         } else {
         } else {
             // 编辑状态
             // 编辑状态
-            this._editPolygon(painter, this.pointList);
+            // this.editPolygon(painter, this.pointList);
         }
         }
     } // Function onDraw()
     } // Function onDraw()
 }
 }