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