From 0d1a0cfad99bce85d7ae376351afa995d1471b43 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Sun, 28 Jun 2026 13:32:28 +0800
Subject: [PATCH] feat(map): 添加派出所区域图层显示功能

---
 src/views/scanOrCode/index.vue |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 110 insertions(+), 0 deletions(-)

diff --git a/src/views/scanOrCode/index.vue b/src/views/scanOrCode/index.vue
index 484bddc..2896385 100644
--- a/src/views/scanOrCode/index.vue
+++ b/src/views/scanOrCode/index.vue
@@ -108,8 +108,42 @@
 <script>
 import { initMapPosition } from '@/utils/mapPositionInit'
 import { getAppOwerRenterRegistrantList, getAppOwerRenterRegistrantCohabitList, getAppRegisterInfoList, getAppEmploymentRegistrationList, getAddressManageList } from "@/api/scanOrCode/index.js"
+import { getPoliceStationTree } from "@/api/home/index.js"
 
 let loading = null
+let cylinderLayer = null
+
+let DataSourcesArray = []
+
+let positionColor = [
+  global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 97, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(255, 142, 97, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(255, 192, 97, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 242, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(0, 185, 209, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(250, 84, 28, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(221, 255, 97, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(51, 255, 0, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 255, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(97, 255, 181, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(58, 181, 252, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(252, 129, 58, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 236, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(97, 184, 255, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 58, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(97, 113, 255, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(81, 252, 58, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(126, 97, 255, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(168, 252, 58, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(171, 97, 255, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(252, 249, 58, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(210, 97, 255, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(252, 174, 58, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(255, 226, 97, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 176, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 155, 20),
+  global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 155, 20),
+]
 
 export default {
   inject: ['userInfo'],
@@ -155,6 +189,7 @@
           label: '扫码上报'
         }
       ],
+      policeStationOptions: []
     }
   },
 
@@ -165,6 +200,8 @@
       initMapPosition()
       that.getList()
     })
+
+    this.getPoliceStationTree(1)
   },
 
   mounted () {
@@ -202,6 +239,68 @@
   },
 
   methods: {
+     // 加载首页下拉列表数据
+    getPoliceStationTree (type, id = '') {
+      var that = this
+      getPoliceStationTree(type, id).then(res => {
+        if (type == 1) {
+
+          this.policeStationOptions = res.data.data
+
+          this.policeStationOptions.unshift({
+            name: '全部',
+            id: 1
+          })
+
+          this.initPoliceStationLayer()
+        }
+      })
+    },
+
+      // 加载面数据的方法
+    initPoliceStationLayer () {
+      const that = this
+      cylinderLayer = new global.DC.PrimitiveLayer('cylinderLayer')
+      global.viewer.addLayer(cylinderLayer)
+
+      DataSourcesArray.forEach(item => {
+        global.viewer.dataSources.remove(item, true)
+      })
+
+      this.policeStationOptions.forEach((item, index) => {
+        if (item.position && item.position.length > 0) {
+          item.position.forEach((sourceItem, sourceIndex) => {
+
+            const Json = { ...JSON.parse(sourceItem) }
+
+            global.DC.Namespace.Cesium.GeoJsonDataSource.load(Json, {
+              stroke: positionColor[index],
+              fill: positionColor[index], //注意:颜色必须大写,即不能为blue
+              strokeWidth: 0,
+              clampToGround: false
+            }).then(function (dataSource) {
+              let entities = dataSource.entities.values
+              //修改entity样式
+              for (let i = 0; i < entities.length; i++) {
+                let entity = entities[i]
+                entity.polyline = {
+                  positions: entity.polygon.hierarchy._value.positions,
+                  width: 4,
+                  material: global.DC.Namespace.Cesium.Color.fromCssColorString('#19298d'),
+                  clampToGround: true
+                }
+              }
+
+              DataSourcesArray.push(dataSource)
+              dataSource.show = true
+              global.viewer.dataSources.add(dataSource)
+            })
+
+          })
+        }
+      })
+    },
+
     // 根据类型获取数据--暂时为测试数据
     getRowData (row) {
       let data = []
@@ -794,6 +893,17 @@
   },
 
   destroyed () {
+    DataSourcesArray.forEach(item => {
+      global.viewer.dataSources.remove(item, true)
+    })
+
+    DataSourcesArray = []
+
+    if (cylinderLayer != null) {
+      cylinderLayer.remove()
+      cylinderLayer = null
+    }
+
     loading && loading.close()
 
     window.removeEventListener('resize', this.setTableHeight)

--
Gitblit v1.9.3