Sfoglia il codice sorgente

refactor(TerrainViewer): remove auto rotate feature and adjust camera limits

1. remove the auto rotate functionality including related functions and cleanup code
2. remove the global autoRotateListener variable
3. set camera zoom distance limits to unrestricted
wenhongquan 1 mese fa
parent
commit
012f0fd137

File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-BAPGHJTI.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-DlQvLY-H.css


+ 2 - 2
dist/index.html

@@ -7,8 +7,8 @@
     <meta charset="UTF-8" />
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>3D 大屏 - 倾斜摄影</title>
     <title>3D 大屏 - 倾斜摄影</title>
-    <script type="module" crossorigin src="/assets/index-C2YiRZLg.js"></script>
-    <link rel="stylesheet" crossorigin href="/assets/index-jcAtfv53.css">
+    <script type="module" crossorigin src="/assets/index-BAPGHJTI.js"></script>
+    <link rel="stylesheet" crossorigin href="/assets/index-DlQvLY-H.css">
   </head>
   </head>
   <body>
   <body>
     <div id="app"></div>
     <div id="app"></div>

+ 3 - 37
src/components/TerrainViewer.vue

@@ -37,7 +37,6 @@ let elevations = null
 let markerEntities = []
 let markerEntities = []
 let handler = null
 let handler = null
 let removePostRender = null
 let removePostRender = null
-let autoRotateListener = null
 
 
 // 计算地形经纬度范围
 // 计算地形经纬度范围
 function computeTerrainRectangle() {
 function computeTerrainRectangle() {
@@ -278,6 +277,9 @@ async function initViewer() {
 
 
   viewer.scene.globe.depthTestAgainstTerrain = true
   viewer.scene.globe.depthTestAgainstTerrain = true
   viewer.scene.globe.enableLighting = false
   viewer.scene.globe.enableLighting = false
+  // 解除相机缩放距离限制
+  viewer.scene.screenSpaceCameraController.minimumZoomDistance = 0
+  viewer.scene.screenSpaceCameraController.maximumZoomDistance = Number.POSITIVE_INFINITY
   // 将背景与 globe 底色设为深蓝灰,避免瓦片缺失/加载延迟时露出纯黑
   // 将背景与 globe 底色设为深蓝灰,避免瓦片缺失/加载延迟时露出纯黑
   const fillColor = Cesium.Color.fromCssColorString('#1a2634')
   const fillColor = Cesium.Color.fromCssColorString('#1a2634')
   viewer.scene.backgroundColor = fillColor
   viewer.scene.backgroundColor = fillColor
@@ -329,38 +331,6 @@ function resetCamera() {
   setupCamera()
   setupCamera()
 }
 }
 
 
-function startAutoRotate() {
-  if (isAutoRotating.value || !viewer || !meta) return
-  isAutoRotating.value = true
-
-  const rect = computeTerrainRectangle()
-  const eRange = (meta.elevationMax - meta.elevationMin) * veModel.value
-  const targetHeight = meta.elevationMin + eRange * props.cameraTargetY
-  const center = Cesium.Cartesian3.fromDegrees(
-    Cesium.Math.toDegrees(Cesium.Rectangle.center(rect).longitude),
-    Cesium.Math.toDegrees(Cesium.Rectangle.center(rect).latitude),
-    targetHeight
-  )
-  const distance = Math.max(meta.terrainWidthMeters, meta.terrainDepthMeters) * props.cameraDistance
-  const pitch = Cesium.Math.toRadians(-props.cameraPitch)
-  let heading = Cesium.Math.toRadians(props.cameraYaw)
-
-  autoRotateListener = viewer.clock.onTick.addEventListener(() => {
-    if (!isAutoRotating.value) return
-    heading += Cesium.Math.toRadians(0.1)
-    viewer.camera.lookAt(center, new Cesium.HeadingPitchRange(heading, pitch, distance))
-    viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)
-  })
-}
-
-function stopAutoRotate() {
-  isAutoRotating.value = false
-  if (autoRotateListener) {
-    autoRotateListener()
-    autoRotateListener = null
-  }
-}
-
 // 获取标记点 exaggeration 后的地表高度
 // 获取标记点 exaggeration 后的地表高度
 function getMarkerSurfaceHeight(lon, lat) {
 function getMarkerSurfaceHeight(lon, lat) {
   const lonMin = meta.dsmLonMin
   const lonMin = meta.dsmLonMin
@@ -560,9 +530,6 @@ async function loadAll() {
 
 
     await initViewer()
     await initViewer()
     loading.value = false
     loading.value = false
-    
-    // 加载完成后启动旋转动效
-    startAutoRotate()
   } catch (err) {
   } catch (err) {
     console.error('加载失败:', err)
     console.error('加载失败:', err)
     error.value = '加载失败: ' + (err.message || err)
     error.value = '加载失败: ' + (err.message || err)
@@ -597,7 +564,6 @@ window.addEventListener('resize', onResize)
 onUnmounted(() => {
 onUnmounted(() => {
   window.removeEventListener('message', handleIframeMessage)
   window.removeEventListener('message', handleIframeMessage)
   window.removeEventListener('resize', onResize)
   window.removeEventListener('resize', onResize)
-  stopAutoRotate()
   if (removePostRender) removePostRender()
   if (removePostRender) removePostRender()
   if (handler) handler.destroy()
   if (handler) handler.destroy()
   if (viewer) viewer.destroy()
   if (viewer) viewer.destroy()

Some files were not shown because too many files changed in this diff