From 7919b75636eaac4d3384a19d2db67df8a56b98cf Mon Sep 17 00:00:00 2001
From: liuyg <liuyg@qq.com>
Date: Fri, 25 Mar 2022 16:39:54 +0800
Subject: [PATCH] +屏蔽缩放
---
src/components/map/components/dimension.vue | 233 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 229 insertions(+), 4 deletions(-)
diff --git a/src/components/map/components/dimension.vue b/src/components/map/components/dimension.vue
index 9b9f8dd..2fe92f0 100644
--- a/src/components/map/components/dimension.vue
+++ b/src/components/map/components/dimension.vue
@@ -16,6 +16,14 @@
@click="locationSAT"
>科技</el-button>
+ <el-button
+ v-show="btnGroupShow"
+ size="mini"
+ class="sat-tc"
+ type="primary"
+ @click="locationTC"
+ >热力图</el-button>
+
<el-radio-group v-model="dimensionValue" size="medium" @change="dimensionChange">
<el-radio-button label="三 维"></el-radio-button>
<el-radio-button label="真三维"></el-radio-button>
@@ -46,8 +54,9 @@
let layerSat = null
let layerSATtwo = null
+let tcLayer = null
-const wallLayer = null
+// const wallLayer = null
export default {
name: 'dimension',
@@ -88,7 +97,9 @@
[114.03954722, 27.62819644, 100],
[114.04006133, 27.628038, 100]
],
- mapCenter: [115.871863, 28.743861, 400.0]
+ mapCenter: [116.35381525,
+ 27.95839468, 400.0]
+ // mapCenter: [115.871863, 28.743861, 400.0]
}
},
computed: {
@@ -198,6 +209,45 @@
// minimumLevel: 19
}))
+ global.viewer.imageryLayers.addImageryProvider(
+ new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
+ url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer/WMTS',
+ layer: 'fzsw2019',
+ style: 'default',
+ tileMatrixSetID: 'default028mm',
+ format: 'image/jpgpng',
+ tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
+ maximumLevel: 19,
+ tileMatrixLabels: [
+ '0',
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ '8',
+ '9',
+ '10',
+ '11',
+ '12',
+ '13',
+ '14',
+ '15',
+ '16',
+ '17',
+ '18',
+ '19'
+ ]
+ })
+ )
+
+ // global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.ArcGisMapServerImageryProvider({
+ // url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer',
+ // layer: 'fzsw2019',
+ // }))
+
// wallLayer = new global.DC.VectorLayer('wallLayer')
// global.viewer.addLayer(wallLayer)
@@ -271,19 +321,26 @@
// 最小
global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100
+ global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1100
// 最大
global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 400
+ global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1400
// 设置相机缩小时的速率
global.viewer.scene.screenSpaceCameraController._minimumZoomRate = 2000
+ // global.eagleViewer.scene.screenSpaceCameraController._minimumZoomRate = 2000
// 设置相机放大时的速率
global.viewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000
+ // global.eagleViewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000
// 视角平移
global.viewer.scene.screenSpaceCameraController.enableRotate = true
+ global.eagleViewer.scene.screenSpaceCameraController.enableRotate = true
// 视角缩放
global.viewer.scene.screenSpaceCameraController.enableZoom = true
+ global.eagleViewer.scene.screenSpaceCameraController.enableZoom = true
// 视角旋转
global.viewer.scene.screenSpaceCameraController.enableTilt = false
+ global.eagleViewer.scene.screenSpaceCameraController.enableTilt = false
that.createdLayers()
@@ -554,6 +611,7 @@
}
global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
+ global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
}
}
}
@@ -702,6 +760,90 @@
}
},
+ smallMapCameraEvent () {
+ const height = Math.ceil(
+ global.eagleViewer.camera.positionCartographic.height
+ )
+
+ global.eagleViewer.camera.setView({
+ orientation: {
+ // 指向
+ heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
+
+ if (height < 1150) {
+ global.eagleViewer.camera.setView({
+ destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+ global.eagleViewer.camera.positionCartographic.longitude,
+ global.eagleViewer.camera.positionCartographic.latitude,
+ 1100
+ ),
+ orientation: {
+ // 指向
+ heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
+ }
+
+ if (height > 1150 && height <= 1250) {
+ global.eagleViewer.camera.setView({
+ destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+ global.eagleViewer.camera.positionCartographic.longitude,
+ global.eagleViewer.camera.positionCartographic.latitude,
+ 1200
+ ),
+ orientation: {
+ // 指向
+ heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
+ }
+
+ if (height > 1250 && height <= 1350) {
+ global.eagleViewer.camera.setView({
+ destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+ global.eagleViewer.camera.positionCartographic.longitude,
+ global.eagleViewer.camera.positionCartographic.latitude,
+ 1300
+ ),
+ orientation: {
+ // 指向
+ heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
+ }
+
+ if (height > 1350) {
+ global.eagleViewer.camera.setView({
+ destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+ global.eagleViewer.camera.positionCartographic.longitude,
+ global.eagleViewer.camera.positionCartographic.latitude,
+ 1400
+ ),
+ orientation: {
+ // 指向
+ heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
+ }
+ },
+
createdLayers () {
layerGroup = new global.DC.LayerGroup('modelBox')
global.viewer.addLayerGroup(layerGroup)
@@ -831,10 +973,41 @@
global.viewer.flyToPosition('121.4941629,31.2091462,1859.56,0,-28.71')
},
+ locationTC () {
+ global.viewer.flyToPosition('120.670183527,31.348282115,109658.22,0,-89.90659095062371')
+ },
+
+ generatePosition (num) {
+ const list = []
+ for (let i = 0; i < num; i++) {
+ const lng = 120.38105869 + Math.random() * 0.5
+ const lat = 31.10115627 + Math.random() * 0.5
+ list.push(new global.DC.Position(lng, lat))
+ }
+ return list
+ },
+
+ removeTC () {
+ global.viewer.removeLayer(tcLayer)
+ tcLayer = null
+ },
+
+ createTC () {
+ tcLayer = new global.DC.HeatLayer('tcLayer', {
+ useGround: true,
+ radius: 40
+ })
+ global.viewer.addLayer(tcLayer)
+ const positions = this.generatePosition(3000)
+ tcLayer.setPositions(positions)
+ },
+
// 科技感删除
removeSAT () {
- global.viewer.remove(layerSat)
- global.viewer.remove(layerSATtwo)
+ global.viewer.removeLayer(layerSat)
+ global.viewer.removeLayer(layerSATtwo)
+ layerSat = null
+ layerSATtwo = null
},
// 科技感添加
@@ -903,8 +1076,10 @@
if (that.dimensionValue == '真三维') {
that.btnGroupShow = true
that.createSAT()
+ that.createTC()
global.viewer.off(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent)
global.viewer.off(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
+ global.eagleViewer.off(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
that.removeLayers()
global.viewer.imageryLayers.remove(baseMapLayer)
baseMapLayer = null
@@ -928,11 +1103,15 @@
global.viewer.addLayer(streenMlayer)
// 最小
global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
+ global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
// 最大
global.viewer.scene.screenSpaceCameraController.maximumZoomDistance =
Number.POSITIVE_INFINITY
+ global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance =
+ Number.POSITIVE_INFINITY
// 视角旋转
global.viewer.scene.screenSpaceCameraController.enableTilt = true
+ global.eagleViewer.scene.screenSpaceCameraController.enableTilt = true
// 115.877863,28.741661
global.viewer.camera.setView({
// Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
@@ -950,11 +1129,30 @@
roll: 0.0
}
})
+
+ global.eagleViewer.camera.setView({
+ // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+ // fromDegrees()方法,将经纬度和高程转换为世界坐标
+ destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+ that.mapCenter[0],
+ that.mapCenter[1],
+ 1220.0
+ ),
+ orientation: {
+ // 指向
+ heading: global.DC.Namespace.Cesium.Math.toRadians(-9),
+ // 视角
+ pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54),
+ roll: 0.0
+ }
+ })
} else {
that.btnGroupShow = false
that.removeSAT()
+ that.removeTC()
global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent)
global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
+ global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
tileset.off(global.DC.MouseEventType.CLICK, that.tilesetClick)
tilesetLayer.removeOverlay(tileset)
tilesetLayer.show = false
@@ -986,12 +1184,32 @@
roll: 0.0
}
})
+
+ global.eagleViewer.camera.setView({
+ // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+ // fromDegrees()方法,将经纬度和高程转换为世界坐标
+ destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+ that.mapCenter[0],
+ that.mapCenter[1],
+ 1400.0
+ ),
+ orientation: {
+ // 指向
+ heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
// 最小
global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100
+ global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1100
// 最大
global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 400
+ global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1400
// 视角旋转
global.viewer.scene.screenSpaceCameraController.enableTilt = false
+ global.eagleViewer.scene.screenSpaceCameraController.enableTilt = false
}
}
}
@@ -1021,4 +1239,11 @@
right: 75px;
z-index: 99;
}
+
+.sat-tc {
+ position: fixed;
+ top: 66px;
+ right: 141px;
+ z-index: 99;
+}
</style>
--
Gitblit v1.9.3