From b9aead3b741cd6cd84b3198869fa6149d1c9d0c8 Mon Sep 17 00:00:00 2001
From: guanqb <18720758508@163.com>
Date: Tue, 25 Oct 2022 17:49:33 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs

---
 src/utils/EntityDraw.js |  115 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 94 insertions(+), 21 deletions(-)

diff --git a/src/utils/EntityDraw.js b/src/utils/EntityDraw.js
index d41907c..df5f66e 100644
--- a/src/utils/EntityDraw.js
+++ b/src/utils/EntityDraw.js
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-10-18 17:17:50
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2022-10-20 10:10:26
+ * @LastEditTime: 2022-10-25 16:38:11
  * @FilePath: \srs-police-affairs\src\utils\EntityDraw.js
  * @Description: 
  * 
@@ -12,6 +12,7 @@
 export default class EntityDraw {
 
     drawPolygonLayer = null
+    drawPolylineLayer = null
 
     drawPointLayer = null
 
@@ -20,6 +21,8 @@
     activeShape = null
 
     drawCompletePosition = []
+
+    type = ''
 
     constructor() {
         // 去除双击
@@ -39,12 +42,19 @@
         this.drawPolygonLayer = new global.DC.VectorLayer('drawPolygonLayer')
         global.viewer.addLayer(this.drawPolygonLayer)
 
+        // 添加线图层
+        this.drawPolylineLayer = new global.DC.VectorLayer('drawPolylineLayer')
+        global.viewer.addLayer(this.drawPolylineLayer)
+
+
         // 添加点图层
         this.drawPointLayer = new global.DC.VectorLayer('drawPointLayer')
         global.viewer.addLayer(this.drawPointLayer)
     }
 
-    activate () {
+    activate (type) {
+        this.type = type
+
         this.drawCompletePosition = []
 
         this.clearLayer()
@@ -83,14 +93,27 @@
     drawGraph (positionData) {
         let graph
 
-        graph = global.viewer.entities.add({
-            polygon: {
-                hierarchy: positionData,
-                material: new global.DC.Namespace.Cesium.ColorMaterialProperty(
-                    global.DC.Namespace.Cesium.Color.NAVAJOWHITE.withAlpha(0.7)
-                ),
-            }
-        })
+        if (this.type === "polyline") {
+            graph = global.viewer.entities.add({
+                polyline: {
+                    material: new global.DC.Namespace.Cesium.ColorMaterialProperty(
+                        global.DC.Namespace.Cesium.Color.NAVAJOWHITE.withAlpha(0.7)
+                    ),
+                    positions: positionData,
+                    clampToGround: true,
+                    width: 3,
+                },
+            })
+        } else {
+            graph = global.viewer.entities.add({
+                polygon: {
+                    hierarchy: positionData,
+                    material: new global.DC.Namespace.Cesium.ColorMaterialProperty(
+                        global.DC.Namespace.Cesium.Color.NAVAJOWHITE.withAlpha(0.7)
+                    ),
+                }
+            })
+        }
 
         return graph
     }
@@ -118,7 +141,13 @@
             that.activeShapePoints.push(event.surfacePosition)
 
             const dynamicPositions = new global.DC.Namespace.Cesium.CallbackProperty(function () {
-                return new global.DC.Namespace.Cesium.PolygonHierarchy(that.activeShapePoints)
+
+                if (that.type === "polyline") {
+                    return that.activeShapePoints
+                } else {
+                    return new global.DC.Namespace.Cesium.PolygonHierarchy(that.activeShapePoints)
+                }
+
             }, false)
 
             that.activeShape = that.drawGraph(dynamicPositions)
@@ -149,10 +178,19 @@
     }
 
     rightEvent (event) {
-        if (this.activeShapePoints.length < 4) {
-            global.viewer.tooltip.showAt(event.windowPosition, '不能绘制成面,请继续添加点')
-            return
+
+        if (this.type === "polyline") {
+            if (this.activeShapePoints.length < 2) {
+                global.viewer.tooltip.showAt(event.windowPosition, '不能绘制成线,请继续添加点')
+                return
+            }
+        } else {
+            if (this.activeShapePoints.length < 4) {
+                global.viewer.tooltip.showAt(event.windowPosition, '不能绘制成面,请继续添加点')
+                return
+            }
         }
+
 
         this.terminateShape()
     }
@@ -169,15 +207,31 @@
 
         })
 
-        let polygon = new global.DC.Polygon(this.drawCompletePosition)
+        if (this.type === "polyline") {
 
-        polygon.setStyle({
-            material: new global.DC.Namespace.Cesium.ColorMaterialProperty(
-                global.DC.Namespace.Cesium.Color.NAVAJOWHITE.withAlpha(0.7)
-            )
-        })
+            let polyline = new global.DC.Polyline(this.drawCompletePosition)
 
-        this.drawPolygonLayer.addOverlay(polygon)
+            polyline.setStyle({
+                material: new global.DC.Namespace.Cesium.ColorMaterialProperty(
+                    global.DC.Namespace.Cesium.Color.NAVAJOWHITE.withAlpha(0.7)
+                )
+            })
+
+            this.drawPolylineLayer.addOverlay(polyline)
+
+        } else {
+            let polygon = new global.DC.Polygon(this.drawCompletePosition)
+
+            polygon.setStyle({
+                material: new global.DC.Namespace.Cesium.ColorMaterialProperty(
+                    global.DC.Namespace.Cesium.Color.NAVAJOWHITE.withAlpha(0.7)
+                )
+            })
+
+            this.drawPolygonLayer.addOverlay(polygon)
+        }
+
+
 
         this.clickInTheProcess()
     }
@@ -200,5 +254,24 @@
     // 清除
     clearLayer () {
         this.drawPolygonLayer.clear()
+        this.drawPolylineLayer.clear()
+    }
+
+    // 销毁
+    destroy () {
+        this.unRegisterEvents()
+
+        this.drawPolygonLayer.clear()
+        this.drawPolygonLayer.remove()
+
+        this.drawPolylineLayer.clear()
+        this.drawPolylineLayer.remove()
+
+        this.drawPointLayer.clear()
+        this.drawPointLayer.remove()
+
+        this.activeShape = null
+        this.activeShapePoints = []
+        this.drawCompletePosition = []
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3