feat(workspace): 画布 2D/3D 切换与车辆相机跟随
- workspaceToolbar API 新增 view/toggle 与 camera/follow - 画布底栏新增 2D/3D 切换、自动跟随按钮,组件卸载时自动停止跟随 - 地图监控页将选中车辆 id 透传给底栏,并接入监控配置缓存 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -45,12 +45,21 @@ export interface ToolbarLayer {
|
||||
visible: boolean
|
||||
}
|
||||
|
||||
export interface ToolbarViewState {
|
||||
map2D: boolean
|
||||
follow: {
|
||||
enabled: boolean
|
||||
carId: number | null
|
||||
}
|
||||
}
|
||||
|
||||
export interface ToolbarState {
|
||||
align: { sites: boolean; cars: boolean; tracks: boolean }
|
||||
select: { tracks: boolean; cars: boolean; decor: boolean; sites: boolean }
|
||||
display: { labels: boolean; primitives: boolean; cars: boolean }
|
||||
layers: ToolbarLayer[]
|
||||
recording: ToolbarRecordingState
|
||||
view?: ToolbarViewState
|
||||
}
|
||||
|
||||
interface Envelope<T> {
|
||||
@@ -109,5 +118,17 @@ export const workspaceToolbarApi = {
|
||||
startPlayback: (fileName: string) =>
|
||||
unwrap<ToolbarState>(http.post(`${BASE}/playback/start`, compatFilePayload(fileName))),
|
||||
|
||||
stopPlayback: () => unwrap<ToolbarState>(http.post(`${BASE}/playback/stop`))
|
||||
stopPlayback: () => unwrap<ToolbarState>(http.post(`${BASE}/playback/stop`)),
|
||||
|
||||
toggleViewMode: () => unwrap<ToolbarState>(http.post(`${BASE}/view/toggle`)),
|
||||
|
||||
setCameraFollow: (carId: number | null, enabled: boolean) =>
|
||||
unwrap<ToolbarState>(
|
||||
http.post(`${BASE}/camera/follow`, {
|
||||
carId: carId ?? undefined,
|
||||
enabled,
|
||||
CarId: carId ?? undefined,
|
||||
Enabled: enabled
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user