fix(3d-situational-awareness): 延迟实体添加直到地形准备就绪
将模拟点和路径起始标记的添加从初始化过程的早期阶段移动到地形完全加载之后。这通过确保CLAMP_TO_GROUND正确生效来防止标记在相机飞行期间漂浮。添加了渲染请求以触发即时渲染。
This commit is contained in:
parent
ff767925af
commit
2e948026a3
@ -694,28 +694,30 @@ const initializeScene = async () => {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
// 3. 添加模拟点位(人员和设备)
|
// 3. 添加模拟点位(人员和设备)- 已移至步骤10.5(地形就绪后)
|
||||||
const allMockPoints = mockDataService.getAllMockPoints()
|
// 原因:在地形加载前添加会导致相机飞行时标记悬浮
|
||||||
allMockPoints.forEach((point) => {
|
// const allMockPoints = mockDataService.getAllMockPoints()
|
||||||
const config =
|
// allMockPoints.forEach((point) => {
|
||||||
point.type === 'soldier'
|
// const config =
|
||||||
? mockDataService.createPersonnelEntityConfig(point, soldierIcon)
|
// point.type === 'soldier'
|
||||||
: mockDataService.createDeviceEntityConfig(point, deviceIcon)
|
// ? mockDataService.createPersonnelEntityConfig(point, soldierIcon)
|
||||||
viewer.entities.add(config)
|
// : mockDataService.createDeviceEntityConfig(point, deviceIcon)
|
||||||
})
|
// viewer.entities.add(config)
|
||||||
console.log(`[index.vue] 已添加 ${allMockPoints.length} 个模拟点位`)
|
// })
|
||||||
|
// console.log(`[index.vue] 已添加 ${allMockPoints.length} 个模拟点位`)
|
||||||
|
|
||||||
// 4. 添加路径起点标记(用于"一键启动")
|
// 4. 添加路径起点标记(用于"一键启动")- 已移至步骤10.5(地形就绪后)
|
||||||
const allPaths = mockDataService.getAllAnimationPaths()
|
// 原因:在地形加载前添加会导致相机飞行时标记悬浮
|
||||||
Object.entries(allPaths).forEach(([pathId, path]) => {
|
// const allPaths = mockDataService.getAllAnimationPaths()
|
||||||
const icon = path.metadata.type === 'soldier' ? soldierIcon : deviceIcon
|
// Object.entries(allPaths).forEach(([pathId, path]) => {
|
||||||
const config = mockDataService.createPathStartMarkerConfig(
|
// const icon = path.metadata.type === 'soldier' ? soldierIcon : deviceIcon
|
||||||
{ ...path, id: pathId },
|
// const config = mockDataService.createPathStartMarkerConfig(
|
||||||
icon
|
// { ...path, id: pathId },
|
||||||
)
|
// icon
|
||||||
viewer.entities.add(config)
|
// )
|
||||||
})
|
// viewer.entities.add(config)
|
||||||
console.log('[index.vue] 已添加 3 个路径起点标记')
|
// })
|
||||||
|
// console.log('[index.vue] 已添加 3 个路径起点标记')
|
||||||
|
|
||||||
// 5. 设置地图点击事件监听
|
// 5. 设置地图点击事件监听
|
||||||
mapClickHandler.setupClickHandler(viewer, registerEventHandler, registerPostRenderListener)
|
mapClickHandler.setupClickHandler(viewer, registerEventHandler, registerPostRenderListener)
|
||||||
@ -781,6 +783,33 @@ const initializeScene = async () => {
|
|||||||
console.log('[index.vue] 等待地形完全就绪...')
|
console.log('[index.vue] 等待地形完全就绪...')
|
||||||
await new Promise(resolve => setTimeout(resolve, 1000))
|
await new Promise(resolve => setTimeout(resolve, 1000))
|
||||||
|
|
||||||
|
// 10.5. 添加模拟点位和路径起点标记(在地形就绪后)
|
||||||
|
console.log('[index.vue] 添加模拟点位...')
|
||||||
|
const allMockPoints = mockDataService.getAllMockPoints()
|
||||||
|
allMockPoints.forEach((point) => {
|
||||||
|
const config =
|
||||||
|
point.type === 'soldier'
|
||||||
|
? mockDataService.createPersonnelEntityConfig(point, soldierIcon)
|
||||||
|
: mockDataService.createDeviceEntityConfig(point, deviceIcon)
|
||||||
|
viewer.entities.add(config)
|
||||||
|
})
|
||||||
|
console.log(`[index.vue] 已添加 ${allMockPoints.length} 个模拟点位`)
|
||||||
|
|
||||||
|
// 添加路径起点标记(用于"一键启动")
|
||||||
|
const allPaths = mockDataService.getAllAnimationPaths()
|
||||||
|
Object.entries(allPaths).forEach(([pathId, path]) => {
|
||||||
|
const icon = path.metadata.type === 'soldier' ? soldierIcon : deviceIcon
|
||||||
|
const config = mockDataService.createPathStartMarkerConfig(
|
||||||
|
{ ...path, id: pathId },
|
||||||
|
icon
|
||||||
|
)
|
||||||
|
viewer.entities.add(config)
|
||||||
|
})
|
||||||
|
console.log('[index.vue] 已添加 3 个路径起点标记')
|
||||||
|
|
||||||
|
// 触发立即渲染,确保 CLAMP_TO_GROUND 生效
|
||||||
|
viewer.scene.requestRender()
|
||||||
|
|
||||||
// 11. 加载应急资源数据(在地形就绪后)
|
// 11. 加载应急资源数据(在地形就绪后)
|
||||||
console.log('[index.vue] 加载应急资源数据...')
|
console.log('[index.vue] 加载应急资源数据...')
|
||||||
await loadEmergencyResources(DISASTER_CENTER.lon, DISASTER_CENTER.lat)
|
await loadEmergencyResources(DISASTER_CENTER.lon, DISASTER_CENTER.lat)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user