From c393f8b721c1e7f6ea65ff0f3ad3a47dce71cfbc Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 21 Jan 2025 10:20:34 +0800
Subject: [PATCH] 格式异常问题解决

---
 src/components/map/dcMap.vue |  117 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 75 insertions(+), 42 deletions(-)

diff --git a/src/components/map/dcMap.vue b/src/components/map/dcMap.vue
index 087266b..9871808 100644
--- a/src/components/map/dcMap.vue
+++ b/src/components/map/dcMap.vue
@@ -11,17 +11,18 @@
 </template>
 
 <script>
+let polygonLayer = null
+let polyLineLayer = null
+let polygon = null
+let polyLine = null
+let plotTool = null
+let plot = undefined
+
 export default {
     name: "dcMap",
     props: ['isDetail', 'range'],
     data () {
         return {
-            polygonLayer: null,
-            polyLineLayer: null,
-            polygon: null,
-            polyLine: null,
-            //绘制工具
-            plotTool: null,
             coordinates: []
         }
     },
@@ -48,36 +49,49 @@
             })
 
             //加载地图
-              global.viewer.imageryLayers.addImageryProvider(
-                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
-                  url: 'https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal',
-                  format: 'image/jpeg',
-                  show: true,
-                  maximumLevel: 18
+            //   global.viewer.imageryLayers.addImageryProvider(
+            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+            //       url: 'https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal',
+            //       format: 'image/jpeg',
+            //       show: true,
+            //       maximumLevel: 18
+            //     })
+            //   )
+
+            global.viewer.imageryLayers.addImageryProvider(
+                new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
+                    url: "http://10.141.11.11:80/slapi/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326",
+                    layer: "wmts_4326_361100",
+                    style: "default",
+                    format: "image/png",
+                    tileMatrixSetID: "c",
+                    tileMatrixLabels: new Array(18).fill(0).map((v, i) => i + 1),
+                    tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
                 })
-              )
+            )
 
             // global.viewer.imageryLayers.addImageryProvider(
-            //     new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
-            //         url: "http://10.141.11.11:8090/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326",
-            //         layer: "wmts_4326_361100",
-            //         style: "default",
-            //         format: "image/png",
-            //         tileMatrixSetID: "c",
-            //         tileMatrixLabels: new Array(18).fill(0).map((v, i) => i + 1),
-            //         tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
+            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+            //         url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
+            //         subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
+            //         format: 'image/jpeg',
+            //         show: true,
+            //         maximumLevel: 18
             //     })
             // )
 
             //添加图层
-            self.polygonLayer = new global.DC.VectorLayer('polygonLayer')
-            global.viewer.addLayer(self.polygonLayer)
+            polygonLayer = new global.DC.VectorLayer('polygonLayer')
+            global.viewer.addLayer(polygonLayer)
+            plot = new global.DC.Plot(global.viewer, {
+                clampToModel: true
+            })
 
             //添加图层
-            self.polyLineLayer = new global.DC.VectorLayer('polyLineLayer')
-            global.viewer.addLayer(self.polyLineLayer)
+            polyLineLayer = new global.DC.VectorLayer('polyLineLayer')
+            global.viewer.addLayer(polyLineLayer)
 
-            self.plotTool = new global.DC.Plot(global.viewer)
+            plotTool = new global.DC.Plot(global.viewer)
 
             //初始化定位
             global.viewer.camera.setView({
@@ -105,13 +119,13 @@
     methods: {
         //开始绘画
         draw (type) {
-            if (this.polygon) {
+            if (polygon) {
                 this.clearDraw()
             }
-
-            this.plotTool && this.plotTool.draw(type, overlay => {
+            this.coordinates = []
+            plotTool && plotTool.draw(type, overlay => {
                 if (overlay) {
-                    this.polygonLayer.addOverlay(overlay)
+                    polygonLayer.addOverlay(overlay)
                     overlay.positions.forEach(e => {
                         this.coordinates.push([e.lng, e.lat])
                     })
@@ -122,7 +136,7 @@
         },
         //重置
         clearDraw () {
-            this.polygonLayer.clear()
+            polygonLayer.clear()
         },
         //转换成数据库数据
         doData (val) {
@@ -140,29 +154,48 @@
         },
         //回显多边形
         showPolygon (positions) {
+            console.log('showPolygon', positions)
             let viewer = global.viewer
             positions = positions.replaceAll(",", ";").replaceAll(" ", ",")
-            this.polygon = new global.DC.Polygon(positions)
-            this.polygon.setStyle({
+            polygon = new global.DC.Polygon(positions)
+            polygon.setStyle({
                 material: global.DC.Color.RED
             })
-            this.polygonLayer.addOverlay(this.polygon)
-            viewer.flyTo(this.polygonLayer)
+            polygonLayer.addOverlay(polygon)
+            viewer.flyTo(polygonLayer)
+            polygon.on(global.DC.MouseEventType.CLICK, this.polygonClick)
         },
         //回显线
         showPolyLine (positions) {
             let viewer = global.viewer
             positions = positions.replaceAll(",", ";").replaceAll(" ", ",")
-            this.polyLine = new global.DC.Polyline(positions)
-            this.polyLine.setStyle({
+            polyLine = new global.DC.Polyline(positions)
+            polyLine.setStyle({
                 material: global.DC.Color.RED
             })
-            this.polyLineLayer.addOverlay(this.polyLine)
-            viewer.flyTo(this.polyLineLayer)
-        }
+            polyLineLayer.addOverlay(polyLine)
+            viewer.flyTo(polyLineLayer)
+        },
+
+        // 点击编辑多边形
+        polygonClick (e) {
+            let plotOverlay = e.overlay
+            plot.edit(plotOverlay, (e) => {
+                let newPolygonPositions = []
+                let newPolygonPositionsArr = []
+                plotOverlay._positions.forEach((item, index) => {
+                    if (index % 2 == 0) {
+                        newPolygonPositions.push(item)
+                        newPolygonPositionsArr.push([item._lng, item._lat])
+                    }
+                })
+                plotOverlay.positions = newPolygonPositions
+                let toData = this.doData(newPolygonPositionsArr)
+                this.$emit('toData', toData)
+            }, { material: global.DC.Color.RED.withAlpha(0.5) })
+        },
     }
 }
 </script>
 
-<style scoped>
-</style>
+<style scoped></style>

--
Gitblit v1.9.3