From e40ee62d3e9b71ffe3432d32a53a00c4097b5708 Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Fri, 31 Dec 2021 09:03:28 +0800
Subject: [PATCH] +3d 2.5d
---
src/components/mobilemap/index.vue | 128 +++++++++++++++++++++++++-----------------
1 files changed, 76 insertions(+), 52 deletions(-)
diff --git a/src/components/mobilemap/index.vue b/src/components/mobilemap/index.vue
index 70a3c30..94dcfca 100644
--- a/src/components/mobilemap/index.vue
+++ b/src/components/mobilemap/index.vue
@@ -47,6 +47,7 @@
"popupsDom",
"MobileWindowsHideFixed",
"dimension",
+ "dimensionData",
]),
},
watch: {
@@ -200,35 +201,40 @@
// console.log(height);
});
+ // viewer.on(that.DC.SceneEventType.CAMERA_MOVE_END, (e) => {
viewer.on(that.DC.SceneEventType.CAMERA_CHANGED, (e) => {
+ //相机移动最后参数
//控制高度
const height = Math.ceil(viewer.camera.positionCartographic.height);
- let orientation = {
- heading: that.DC.Namespace.Cesium.Math.toRadians(0), // 方向
- pitch: that.DC.Namespace.Cesium.Math.toRadians(
- that.dimension == "2D" ? -90 : that.dimension == "2.5D" ? -45 : -45
- ), // 倾斜角度
- roll: 0,
+ let conBack = (height) => {
+ viewer.camera.setView({
+ destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
+ viewer.camera.positionCartographic.longitude,
+ viewer.camera.positionCartographic.latitude,
+ height
+ ),
+ orientation: {
+ heading: that.DC.Namespace.Cesium.Math.toRadians(
+ that.dimensionData.heading
+ ), // 方向
+ pitch: that.DC.Namespace.Cesium.Math.toRadians(
+ that.dimensionData.pitch
+ ), // 倾斜角度
+ roll: that.dimensionData.roll,
+ },
+ });
};
- if (height < 300) {
- viewer.camera.setView({
- destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
- viewer.camera.positionCartographic.longitude,
- viewer.camera.positionCartographic.latitude,
- 300
- ),
- orientation: orientation,
- });
+ // if (height < 300) {
+ // conBack(300);
+ // }
+ // if (height > 2000) {
+ // conBack(2000);
+ // }
+ if (height < 500) {
+ conBack(500);
}
- if (height > 2000) {
- viewer.camera.setView({
- destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
- viewer.camera.positionCartographic.longitude,
- viewer.camera.positionCartographic.latitude,
- 2000
- ),
- orientation: orientation,
- });
+ if (height > 6000) {
+ conBack(6000);
}
});
@@ -276,15 +282,16 @@
//白模型↑
//精细模型↓
- // const tilesetLayer = new that.DC.TilesetLayer("tilesetLayer");
- // viewer.addLayer(tilesetLayer);
- // const tileset = new that.DC.Tileset(
- // "http://data.mars3d.cn/3dtiles/max-shihua/tileset.json",
- // {
- // luminanceAtZenith: 0.5,
- // }
- // );
- // tilesetLayer.addOverlay(tileset);
+ const tilesetLayer = new that.DC.TilesetLayer("tilesetLayer");
+ viewer.addLayer(tilesetLayer);
+ const tileset = new that.DC.Tileset(
+ "http://data.mars3d.cn/3dtiles/max-shihua/tileset.json",
+ {
+ luminanceAtZenith: 0.5,
+ }
+ );
+ tilesetLayer.addOverlay(tileset);
+ // tilesetLayer.show = false;
//精细模型↑
// 2.5D贴图↓
@@ -325,6 +332,19 @@
// 2.5D贴图↑
let startPoint;
if (false) {
+ startPoint = () => {
+ viewer.flyTo(tileset);
+ // that.$store.dispatch("mapFlyTo", {
+ // //飞入
+ // lntLat: [115.87988885, 28.72502592, 2100],
+ // // lntLat: [115.87186406, 28.74449337, 1200],
+ // // lntLat: [121.50492752204283, 31.21567802276832, 2530],
+ // heading: 0,
+ // pitch: -45,
+ // roll: 0,
+ // noOpen: true,
+ // });
+ };
setTimeout((res) => {
//转圈
that.$store.dispatch("mapFlyTo", {
@@ -344,26 +364,14 @@
// roll: 0,
// noOpen: true,
// });
- startPoint = () => {
- that.$store.dispatch("mapFlyTo", {
- //飞入
- lntLat: [115.87988885, 28.72502592, 2100],
- // lntLat: [115.87186406, 28.74449337, 1200],
- // lntLat: [121.50492752204283, 31.21567802276832, 2530],
- heading: 0,
- pitch: -45,
- roll: 0,
- noOpen: true,
- });
- };
+
startPoint();
},
});
// viewer.flyTo(tileset);
}, 2500);
} else {
- startPoint = (val) => {
- console.log(val);
+ startPoint = () => {
// viewer.zoomToPosition(
// new DC.Position(115.86798885, 28.72502592, 2100, 0, -45)
// );
@@ -377,16 +385,18 @@
),
orientation: {
// 指向
- heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
+ heading: that.DC.Namespace.Cesium.Math.toRadians(
+ that.dimensionData.heading
+ ),
// 视角
pitch: that.DC.Namespace.Cesium.Math.toRadians(
- val == "2D" ? -90 : val == "2.5D" ? -45 : -45
+ that.dimensionData.pitch
),
- roll: 0.0,
+ roll: that.dimensionData.roll,
},
});
};
- startPoint(that.dimension);
+ startPoint();
}
//传递默认位置
that.$store.commit("MSET_MORENWEIZHI", startPoint);
@@ -474,11 +484,25 @@
viewer.distanceLegend.enable = false;
if (true) {
// viewer.scene.screenSpaceCameraController.enableZoom = false; //控制视角缩放
- viewer.scene.screenSpaceCameraController.enableTilt = false; //控制视角旋转
+ // viewer.scene.screenSpaceCameraController.enableTilt = false; //控制视角旋转
// viewer.scene.screenSpaceCameraController.minimumZoomDistance = 200; //最小缩放
// viewer.scene.screenSpaceCameraController.maximumZoomDistance = 1900; //最大缩放
// 2D和哥伦布视图
// 控制视角平移:scene.screenSpaceCameraController.enableTranslate = true;
+ // 最小
+ viewer.scene.screenSpaceCameraController.minimumZoomDistance = 500;
+ // 最大
+ viewer.scene.screenSpaceCameraController.maximumZoomDistance = 6000;
+ // 设置相机缩小时的速率
+ viewer.scene.screenSpaceCameraController._minimumZoomRate = 30000;
+ // 设置相机放大时的速率
+ viewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000;
+ // 视角平移
+ viewer.scene.screenSpaceCameraController.enableRotate = true;
+ // 视角缩放
+ viewer.scene.screenSpaceCameraController.enableZoom = true;
+ // 视角旋转
+ viewer.scene.screenSpaceCameraController.enableTilt = false;
}
}
--
Gitblit v1.9.3