From f5b79b2aca3a4c70e4fdd9f8541d2ef833912ed0 Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Tue, 04 Jan 2022 17:05:42 +0800
Subject: [PATCH] +切换2.5 3 d 关闭弹窗
---
src/components/map/components/dimension.vue | 234 +++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 164 insertions(+), 70 deletions(-)
diff --git a/src/components/map/components/dimension.vue b/src/components/map/components/dimension.vue
index 2a65fc1..9dcbac9 100644
--- a/src/components/map/components/dimension.vue
+++ b/src/components/map/components/dimension.vue
@@ -3,7 +3,7 @@
<el-radio-group v-model="dimensionValue"
size="medium"
@change="dimensionChange">
- <el-radio-button label="三 维"></el-radio-button>
+ <el-radio-button label="3 维"></el-radio-button>
<el-radio-button label="2.5维"></el-radio-button>
</el-radio-group>
</div>
@@ -18,14 +18,14 @@
data () {
return {
DC: null,
- dimensionValue: '三 维',
+ dimensionValue: '3 维',
newLayer: null,
provider: null,
wallLayer: null,
tileset: null,
tilesetLayer: null,
titlesetLayerFlag: false,
- oneFlag: false,
+ silhouetteBlue: null,
wallArr: [
[116.41526036, 27.95352217, 100],
[116.41128018, 27.95789328, 100],
@@ -84,24 +84,21 @@
that.tilesetLayer = new that.DC.TilesetLayer('tilesetLayer')
that.viewer.addLayer(that.tilesetLayer)
that.tileset = new that.DC.Tileset(
- 'http://data.mars3d.cn/3dtiles/max-shihua/tileset.json',
+ '/mx/tileset.json',
{
luminanceAtZenith: 0.5
}
)
that.tilesetLayer.addOverlay(that.tileset)
- setTimeout(() => {
- that.viewer.flyTo(that.tileset, 10)
- }, 2000)
- var silhouetteBlue = that.DC.Namespace.Cesium.PostProcessStageLibrary.createEdgeDetectionStage()
- silhouetteBlue.uniforms.color = that.DC.Namespace.Cesium.Color.fromBytes(9, 162, 40)
- silhouetteBlue.uniforms.length = 0.01
- silhouetteBlue.selected = []
+ that.silhouetteBlue = that.DC.Namespace.Cesium.PostProcessStageLibrary.createEdgeDetectionStage()
+ that.silhouetteBlue.uniforms.color = that.DC.Namespace.Cesium.Color.fromBytes(9, 162, 40)
+ that.silhouetteBlue.uniforms.length = 0.01
+ that.silhouetteBlue.selected = []
that.viewer.scene.postProcessStages.add(
that.DC.Namespace.Cesium.PostProcessStageLibrary.createSilhouetteStage([
- silhouetteBlue
+ that.silhouetteBlue
])
)
@@ -134,16 +131,17 @@
var popup = new that.DC.DivForms(that.viewer, {
domId: 'divFormsDomBox',
position: [
- that.DC.Transform.transformWGS84ToCartesian(new that.DC.Position(Number(e.wgs84Position.lng), Number(e.wgs84Position.lat), Number(e.wgs84Position.alt), Number(0), Number(0), Number(0)))
+ that.DC.Transform.transformWGS84ToCartesian(new that.DC.Position(Number(e.wgs84Position.lng), Number(e.wgs84Position.lat), Number(e.wgs84Position.alt)))
]
})
- that.$store.commit('SET_DETAILSPOPUP', true)
- that.$store.commit('SET_PANORAMAPOPUP', false)
+ this.$store.commit('SET_PANORAMAPOPUP', false)
+ this.$store.commit('SET_MONITORPOPUP', false)
+ this.$store.commit('SET_DETAILSPOPUP', true)
})
that.tileset.on(that.DC.MouseEventType.MOUSE_MOVE, e => {
- silhouetteBlue.selected = []
+ that.silhouetteBlue.selected = []
if (that.DC.Namespace.Cesium.defined(highlighted.feature)) {
highlighted.feature.color = highlighted.originalColor
@@ -151,7 +149,7 @@
}
if (e.feature !== selected.feature) {
- silhouetteBlue.selected = [e.feature]
+ that.silhouetteBlue.selected = [e.feature]
highlighted.feature = e.feature
@@ -163,58 +161,46 @@
}
})
- this.titlesetLayerFlag = true
- }
- }
- }
- },
- methods: {
- dimensionChange () {
- var that = this
- if (that.dimensionValue == '三 维') {
- that.wallLayer.show = false
- that.viewer.imageryLayers.remove(that.newLayer)
- that.newLayer = null
- that.tilesetLayer.show = true
- that.viewer.flyTo(that.tileset)
- } else {
- that.tilesetLayer.show = false
- var provider = new that.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
- url: 'http://www.tdtfz.com/OneMapServer/rest/services/fzsw2019/MapServer/WMTS/tile/1.0.0/fzsw2019/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}',
- layer: 'fzsw2019',
- style: 'default',
- tileMatrixSetID: 'default028mm',
- format: 'image/jpgpng',
- tilingScheme: new that.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'
- ]
- })
- that.newLayer = that.viewer.imageryLayers.addImageryProvider(provider)
+ // var provider = new that.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
+ // url: 'http://www.tdtfz.com/OneMapServer/rest/services/fzsw2019/MapServer/WMTS/tile/1.0.0/fzsw2019/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}',
+ // layer: 'fzsw2019',
+ // style: 'default',
+ // tileMatrixSetID: 'default028mm',
+ // format: 'image/jpgpng',
+ // tilingScheme: new that.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'
+ // ]
+ // })
- if (that.oneFlag == false) {
+ // var provider = new that.DC.Namespace.Cesium.ArcGisMapServerImageryProvider({
+ // url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/PingXiang25DMapDN/MapServer'
+ // })
+
+ // that.newLayer = that.viewer.imageryLayers.addImageryProvider(provider)
+
that.wallLayer = new that.DC.VectorLayer('wallLayer')
- that.viewer.addLayer(that.wallLayer)
+ // that.viewer.addLayer(that.wallLayer)
that.wallArr.forEach(item => {
item = item.join(',')
@@ -230,17 +216,125 @@
speed: 10
})
})
- that.wallLayer.addOverlay(wall)
+ // that.wallLayer.addOverlay(wall)
- that.oneFlag = true
+ // that.viewer.camera.setView({
+ // // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+ // // fromDegrees()方法,将经纬度和高程转换为世界坐标
+ // destination: that.DC.Namespace.Cesium.Cartesian3.fromDegrees(114.03928791, 27.62954732, 1000.0),
+ // orientation: {
+ // // 指向
+ // heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // // 视角
+ // pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
+ // roll: 0.0
+ // }
+ // })
+
+ that.tilesetLayer.show = true
+ setTimeout(() => {
+ that.viewer.flyTo(that.tileset)
+ }, 2000)
+ that.titlesetLayerFlag = true
+
+ // 最小
+ that.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
+ // 最大
+ that.viewer.scene.screenSpaceCameraController.maximumZoomDistance = Number.POSITIVE_INFINITY
+ // 设置相机缩小时的速率
+ // that.viewer.scene.screenSpaceCameraController._minimumZoomRate = 30000
+ // 设置相机放大时的速率
+ that.viewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000
+ // 视角平移
+ that.viewer.scene.screenSpaceCameraController.enableRotate = true
+ // 视角缩放
+ that.viewer.scene.screenSpaceCameraController.enableZoom = true
+ // 视角旋转
+ that.viewer.scene.screenSpaceCameraController.enableTilt = true
}
+ }
+ }
+ },
+ methods: {
+ dimensionChange () {
+ var that = this
+ if (that.dimensionValue == '3 维') {
+ that.wallLayer.show = false
+ that.viewer.imageryLayers.remove(that.newLayer)
+ that.newLayer = null
+ that.silhouetteBlue.selected = []
+ that.tilesetLayer.show = true
+ that.viewer.flyTo(that.tileset)
+
+ that.viewer.off(that.DC.SceneEventType.CAMERA_CHANGED, that.camerAzoom())
+ // 最小
+ that.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
+ // 最大
+ that.viewer.scene.screenSpaceCameraController.maximumZoomDistance = Number.POSITIVE_INFINITY
+ // 视角旋转
+ that.viewer.scene.screenSpaceCameraController.enableTilt = true
+ } else {
+ that.tilesetLayer.show = false
+ var provider = new that.DC.Namespace.Cesium.ArcGisMapServerImageryProvider({
+ url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/PingXiang25DMapDN/MapServer'
+ })
+
+ that.newLayer = that.viewer.imageryLayers.addImageryProvider(provider)
that.wallLayer.show = true
that.viewer.camera.setView({
// Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
// fromDegrees()方法,将经纬度和高程转换为世界坐标
- destination: that.DC.Namespace.Cesium.Cartesian3.fromDegrees(116.36618337, 27.95911915, 1000.0),
+ destination: that.DC.Namespace.Cesium.Cartesian3.fromDegrees(114.03928791, 27.62954732, 360.0),
+ orientation: {
+ // 指向
+ heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
+
+ that.viewer.on(that.DC.SceneEventType.CAMERA_CHANGED, that.camerAzoom())
+ // 最小
+ that.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
+ // 最大
+ that.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 6000
+ // 视角旋转
+ that.viewer.scene.screenSpaceCameraController.enableTilt = false
+ }
+ },
+
+ camerAzoom () {
+ var that = this
+ const height = Math.ceil(that.viewer.camera.positionCartographic.height)
+
+ that.viewer.camera.setView({
+ orientation: {
+ // 指向
+ heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
+
+ if (height < 100) {
+ that.viewer.camera.setView({
+ destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(that.viewer.camera.positionCartographic.longitude, that.viewer.camera.positionCartographic.latitude, 100),
+ orientation: {
+ // 指向
+ heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ // 视角
+ pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
+ roll: 0.0
+ }
+ })
+ };
+ if (height > 6000) {
+ that.viewer.camera.setView({
+ destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(that.viewer.camera.positionCartographic.longitude, that.viewer.camera.positionCartographic.latitude, 6000),
orientation: {
// 指向
heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
--
Gitblit v1.9.3