From 7995fd71ae0a0dcd305bbf4cbb765f892803ab87 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 15 Apr 2023 17:16:21 +0800
Subject: [PATCH] 电子沙盘更改

---
 src/components/map/index.vue |   64 ++++++++++++++++---------------
 1 files changed, 33 insertions(+), 31 deletions(-)

diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 9b991f2..5c90d02 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-08-18 17:00:30
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-04-12 17:19:40
+ * @LastEditTime: 2023-04-15 17:15:38
  * @FilePath: \srs-police-affairs\src\components\map\index.vue
  * @Description: 公用地图组件
  * 
@@ -95,8 +95,6 @@
 
 <script>
 let tile3DUrl = ''
-let floorEntitysLayers = null
-let flootEntitysEntites = null
 
 if (process.env.NODE_ENV == 'development') {
     // 开发
@@ -127,6 +125,7 @@
     sdTilesetLayer: null
 }
 
+let curPolygon = null
 
 const ysLabels = [
     'EPSG:4490_test:0',
@@ -224,8 +223,7 @@
             // let curTilesetLayer = new global.DC.TilesetLayer('curTilesetLayer')
             // global.viewer.addLayer(curTilesetLayer)
             // let curTileset = new global.DC.Tileset(
-            //     // '/mx/tileset.json'
-            //     'https://tuan-gis.sit.fengtu.com.cn/361102/wanda/tileset.json'
+            //     '/mx/tileset.json'
             // )
             // // curTileset.setHeight(20)
             // curTileset.setHeight(0)
@@ -255,9 +253,6 @@
             global.viewer.addLayer(layersObjcect.monitoringLayer)
             layersObjcect.panoramaLayer = new global.DC.VectorLayer('panoramaLayer')
             global.viewer.addLayer(layersObjcect.panoramaLayer)
-
-            floorEntitysLayers = new global.DC.VectorLayer('floorEntitysLayers')
-            global.viewer.addLayer(floorEntitysLayers)
 
             // 模型图层添加
             tilesetLayer = new global.DC.TilesetLayer('tilesetLayer')
@@ -459,9 +454,9 @@
 
         this.$EventBus.$on('layerPolygonAdd', (params) => {
             if ('polygonName' in params) {
-                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, params.polygonName, params.params, params.incident, params.setStyle)
+                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, params.polygonName, params.params, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.setStyle)
             } else {
-                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, 'polygon', params.params, params.incident, params.setStyle)
+                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, 'polygon', params.params, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.setStyle)
             }
         })
 
@@ -634,7 +629,6 @@
 
             if (this.tilesetLayerType == type && status == '') {
                 this.tilesetLayerType = ''
-
 
             } else {
                 this.tilesetLayerType = type
@@ -980,7 +974,8 @@
          * @param {*} material 颜色
          * @param {*} distanceDisplayCondition 可见距离
          */
-        layerPolygonAdd (layerName, positions, material, distanceDisplayCondition, polygonName, params, incident = (e) => { }, setStyle = {}) {
+        layerPolygonAdd (layerName, positions, material, distanceDisplayCondition, polygonName, params, incident = (e) => { }, mouseOverIncident = (e) => { },
+            mouseOutIncident = (e) => { }, setStyle = {}) {
             if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                 this.mapAddLayer(layerName, 'VectorLayer')
 
@@ -999,6 +994,8 @@
             // layersObjcect[layerName].addOverlay(polygon)
             polygonObj[polygonName].attrParams = params
             polygonObj[polygonName].on(global.DC.MouseEventType.CLICK, incident)
+            polygonObj[polygonName].on(global.DC.MouseEventType.MOUSE_OVER, mouseOverIncident)
+            polygonObj[polygonName].on(global.DC.MouseEventType.MOUSE_OUT, mouseOutIncident)
             layersObjcect[layerName].addOverlay(polygonObj[polygonName])
         },
 
@@ -1188,42 +1185,47 @@
         * @param {*} 
         */
         showThreeDimensions (positions, minHeight, maxHeight) {
-            if (floorEntitysLayers != null) {
-                floorEntitysLayers.remove()
-                floorEntitysLayers = new global.DC.VectorLayer('floorEntitysLayers')
-                global.viewer.addLayer(floorEntitysLayers)
+            if (curPolygon != null) {
+                global.viewer.scene.primitives.remove(curPolygon)
+                curPolygon = null
             }
-
-            floorEntitysLayers.clear()
 
             let housePositions = JSON.parse(positions).coordinates[0]
 
             let floorPositions = housePositions.reduce((prev, curr) => {
-                prev.push([curr[0], curr[1]])
+                prev.push(curr[0])
+                prev.push(curr[1])
 
                 return prev
             }, [])
 
-            let polygonStr = floorPositions.join(';')
+            curPolygon = new global.DC.Namespace.Cesium.ClassificationPrimitive({
+                geometryInstances: new global.DC.Namespace.Cesium.GeometryInstance({
+                    geometry: new global.DC.Namespace.Cesium.PolygonGeometry({
+                        polygonHierarchy: new global.DC.Namespace.Cesium.PolygonHierarchy(
+                            global.DC.Namespace.Cesium.Cartesian3.fromDegreesArray(floorPositions),
+                        ),
+                        extrudedHeight: maxHeight,//分层顶部海拔
+                        height: minHeight,//分层底部海拔
+                    }),
 
-            let polygon = new global.DC.Polygon(polygonStr)
+                    attributes: {
+                        color: global.DC.Namespace.Cesium.ColorGeometryInstanceAttribute.fromColor(global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5)),
+                        show: new global.DC.Namespace.Cesium.ShowGeometryInstanceAttribute(true)
+                    },
+                }),
 
-            polygon.setStyle({
-                material: global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5),
-                extrudedHeight: maxHeight,
-                height: minHeight,
-                extrudedHeightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
-                heightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND
+                classificationType: global.DC.Namespace.Cesium.ClassificationType.CESIUM_3D_TILE
             })
 
-            floorEntitysLayers.addOverlay(polygon)
-
-            floorEntitysLayers.show = true
+            global.viewer.scene.primitives.add(curPolygon)
         },
 
         // 清除建筑3D
         clearHouse3D () {
-            floorEntitysLayers.clear()
+            global.viewer.scene.primitives.remove(curPolygon)
+
+            curPolygon = null
         },
 
         registerMxClick (event) {

--
Gitblit v1.9.3