From e6e213ab22cb09c260410b3ea2d91da8510cbba5 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Wed, 09 Apr 2025 10:09:49 +0800
Subject: [PATCH] feat: 飞行逻辑调整
---
src/views/Home/useMapAggregation/useMapAggregation.js | 63 ++++++++++++++++++++-----------
1 files changed, 40 insertions(+), 23 deletions(-)
diff --git a/src/views/Home/useMapAggregation/useMapAggregation.js b/src/views/Home/useMapAggregation/useMapAggregation.js
index eb59787..7d92182 100644
--- a/src/views/Home/useMapAggregation/useMapAggregation.js
+++ b/src/views/Home/useMapAggregation/useMapAggregation.js
@@ -198,12 +198,27 @@
const outlineGJson = await getOutLine(jsonPathPre, hierarchy)
scalingJudgment.forEach(item => item.show && (item.outline = outlineGJson))
const [longitude, latitude] = outlineGJson.features[0].properties.centroid
- flyTo({ longitude, latitude }, 0, scalingJudgment[(hierarchy.length - 3) * (-1)].height)
+ const height = scalingJudgment[(hierarchy.length - 3) * (-1)].height
+ setCenterPosition({longitude, latitude,height})
+ flyTo({ longitude, latitude }, 0, height)
}
+
+ const userAreaPosition = computed(() => store.state.home.userAreaPosition);
+
+ const setCenterPosition = (position) => {
+ store.commit('setCurrentAreaPosition', position)
+ if (!userAreaPosition.value.longitude){
+ store.commit('setUserAreaPosition', position)
+ }
+ }
+
+
+ let needFly = true
watch(
selectedAreaCode,
async (newValue, oldValue) => {
+ needFly = true
if (!viewer) return
viewer.scene.postRender.removeEventListener(determineScaling)
initMapData(newValue).then(() => {
@@ -247,32 +262,32 @@
// 渲染轮廓
const renderOutline = item => {
item.outline &&
- Cesium.GeoJsonDataSource.load(item.outline).then(dataSource => {
- viewer.dataSources.add(dataSource)
- const entities = dataSource.entities.values
- entities.forEach(entity => {
- // 隐藏多边形填充
- entity.polygon.material = Cesium.Color.TRANSPARENT
- entity.polygon.outline = false // 关闭原生轮廓
- // 创建独立折线作为轮廓
- const positions = entity.polygon.hierarchy.getValue().positions
- viewer.entities.add({
- polyline: {
- positions: positions,
- width: 5, // 直接设置宽度
- material: new Cesium.PolylineGlowMaterialProperty({
- glowPower: 0.5,
- color: Cesium.Color.AQUA,
- }),
- clampToGround: true, // 贴地显示
- },
- })
+ Cesium.GeoJsonDataSource.load(item.outline).then(dataSource => {
+ viewer.dataSources.add(dataSource)
+ const entities = dataSource.entities.values
+ entities.forEach(entity => {
+ // 隐藏多边形填充
+ entity.polygon.material = Cesium.Color.TRANSPARENT
+ entity.polygon.outline = false // 关闭原生轮廓
+ // 创建独立折线作为轮廓
+ const positions = entity.polygon.hierarchy.getValue().positions
+ viewer.entities.add({
+ polyline: {
+ positions: positions,
+ width: 5, // 直接设置宽度
+ material: new Cesium.PolylineGlowMaterialProperty({
+ glowPower: 0.5,
+ color: Cesium.Color.AQUA,
+ }),
+ clampToGround: true, // 贴地显示
+ },
})
})
+ })
}
// 聚合机巢
- const aggregation = (item, flyTo) => {
+ const aggregation = (item) => {
if (!item.gJson) return
const featuresList = item.gJson.features.map(item1 => {
// const {lng,lat} = getCenterPoint(item1.geometry.coordinates[0][0])
@@ -353,7 +368,7 @@
entity.polygon.outline = false // 显示边框
})
- flyTo && viewer.flyTo(dataSource, {
+ needFly && viewer.flyTo(dataSource, {
offset: new Cesium.HeadingPitchRange(
0, // heading: 0 (朝向不变)
Cesium.Math.toRadians(-60), // pitch: -90° (垂直向下)
@@ -361,6 +376,7 @@
),
duration: 0.5,
})
+ needFly = false
})
}
@@ -406,6 +422,7 @@
case 'deviceAggregation':
viewer.scene.postRender.addEventListener(labelBoxRender)
break
+ // todo 待对接
case 'device':
store.commit('setSingleUavHome', { id: '123' })
break
--
Gitblit v1.9.3