From c42289cc56a240c466bfb366670c14b7e93a145b Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 13 Feb 2023 11:09:16 +0800
Subject: [PATCH] 安保管理添加活动区域

---
 src/components/map/mapBox.vue |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/src/components/map/mapBox.vue b/src/components/map/mapBox.vue
index 6a26179..4891e55 100644
--- a/src/components/map/mapBox.vue
+++ b/src/components/map/mapBox.vue
@@ -3,7 +3,7 @@
         <div id='map' :style="{ height: isDetail ? '90vh' : '40vh', width: '100%' }" ref="MapContent">
             <div style="position: absolute;right:40%;top:-1%;z-index: 999999">
                 <p style="margin-top: 10px" v-if="!isDetail">
-                    <el-button type="primary" size="small" @click="point()">绘制路线</el-button>
+                    <el-button type="primary" size="small" @click="point()">绘制区域</el-button>
                     <el-button size="small" @click="clearDraw()">重置</el-button>
                 </p>
             </div>
@@ -45,6 +45,7 @@
             drawLayer: null,
             lineVector: null,
             pointVector: null,
+            polygonVector:null,
             coordinates: [],// 保存绘画坐标地址   [[115.90490549080435, 28.746101718722358],[115.93151300423209, 28.741123538790717]]
             toData: null,// 保存数据库格式坐标地址
             showTip: false,
@@ -92,8 +93,15 @@
                     wrapX: false // 禁止横向无限重复(底图渲染的时候会横向无限重复),设置了这个属性,可以让绘制的图形不跟随底图横向无限重复
                 }),
             })
+            _this.polygonVector = new VectorLayer({
+              //layer所对应的source
+              source: new VectorSource({
+                wrapX: false // 禁止横向无限重复(底图渲染的时候会横向无限重复),设置了这个属性,可以让绘制的图形不跟随底图横向无限重复
+              }),
+            })
             _this.map.addLayer(_this.lineVector)
             _this.map.addLayer(_this.pointVector)
+            _this.map.addLayer(_this.polygonVector)
             //在地图上回显线或点
             _this.startAdd(_this.routeRange)
         },
@@ -176,6 +184,10 @@
                 })
             }
         },
+        //回显多边形区域
+        addPolygon(area){
+
+        },
         // 将点坐标集合转换为数据库数据
         doData (val) {
             let str = "LINESTRING("
@@ -185,6 +197,7 @@
                     str += ","
                 }
             }
+            str =str +","+ `${val[0][0]} ${val[0][1]}`
             str += ")"
             // console.log(str)
             return '\'' + str + '\''
@@ -194,7 +207,7 @@
             let _this = this
             _this.coordinates = []
             _this.map.removeInteraction(_this.draw)
-            _this.lineVector.getSource().clear()
+            _this.polygonVector.getSource().clear()
             //提示
             if (!_this.showTip) {
                 _this.showTip = true
@@ -205,17 +218,17 @@
                 _this.setTipPosition(e.offsetX, e.offsetY, 5, 5)
             }
             this.$refs.MapContent.addEventListener('mousemove', mapMousemove)
-            this.$refs.MapContent.removeEventListener('mousemove', mapMousemove)
+          // this.$refs.MapContent.removeEventListener('mousemove', mapMousemove)
 
             function mapMousedown () {
                 _this.tipTitle = "可继续,或选择最终位置双击结束绘画"
             }
             this.$refs.MapContent.addEventListener('mousedown', mapMousedown)
-            this.$refs.MapContent.removeEventListener('mousedown', mapMousedown)
+            // this.$refs.MapContent.removeEventListener('mousedown', mapMousedown)
 
             _this.draw = new Draw({
-                source: _this.lineVector.getSource(),
-                type: 'LineString',
+                source: _this.polygonVector.getSource(),
+                type: 'Polygon',
                 style: new Style({
                     stroke: new StyleStroke({
                         color: "red",
@@ -233,7 +246,7 @@
             _this.draw.on('drawend', function () {
 
                 _this.map.removeInteraction(_this.draw)
-                _this.lineVector.setStyle(_this.styleFunction())// 路线画好之后的样式
+                _this.polygonVector.setStyle(_this.styleFunction())// 路线画好之后的样式
                 // 将点坐标集合转换为数据库数据
                 let toData = _this.doData(_this.coordinates)
                 // 传值给父组件
@@ -242,6 +255,7 @@
                 _this.tipTitle = null
                 _this.showTip = false
             })
+
         },
         // 设置统一控制点击事件,需要画图方式在此处切换
         handleClick (point) {
@@ -405,8 +419,10 @@
         startAdd (routeRange) {
             if (routeRange.startsWith("LINESTRING")) {
                 this.addLineDraw(routeRange)
-            } else {
+            } else if (routeRange.startsWith("POINT")) {
                 this.addPoint(routeRange)
+            } else if (routeRange.startsWith("POLYGON")){
+              this.addPolygon(routeRange)
             }
         }
     },

--
Gitblit v1.9.3