fix(3d-situational-awareness): 延迟实体添加直到地形准备就绪

将模拟点和路径起始标记的添加从初始化过程的早期阶段移动到地形完全加载之后。这通过确保CLAMP_TO_GROUND正确生效来防止标记在相机飞行期间漂浮。添加了渲染请求以触发即时渲染。
This commit is contained in:
Zzc 2025-11-25 11:40:36 +08:00
parent ff767925af
commit 2e948026a3

View File

@ -694,28 +694,30 @@ const initializeScene = async () => {
},
})
// 3.
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} 个模拟点位`)
// 3. - 10.5
//
// 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} `)
// 4. ""
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 个路径起点标记')
// 4. ""- 10.5
//
// 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 ')
// 5.
mapClickHandler.setupClickHandler(viewer, registerEventHandler, registerPostRenderListener)
@ -781,6 +783,33 @@ const initializeScene = async () => {
console.log('[index.vue] 等待地形完全就绪...')
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.
console.log('[index.vue] 加载应急资源数据...')
await loadEmergencyResources(DISASTER_CENTER.lon, DISASTER_CENTER.lat)