提交室内导览交互与讲解优化
This commit is contained in:
88
src/types/sgs-map-sdk.ts
Normal file
88
src/types/sgs-map-sdk.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
export type SgsMapNode =
|
||||
| { type: 'coord'; floorId: number; x: number; z: number; y?: number }
|
||||
| { type: 'poiId'; value: number }
|
||||
| { type: 'nodeName'; value: string }
|
||||
|
||||
export interface SgsSnapDetail {
|
||||
original: { x: number; z: number }
|
||||
nearest: { x: number; z: number }
|
||||
distance: number
|
||||
}
|
||||
|
||||
export interface SgsRouteResult {
|
||||
success: boolean
|
||||
distance: number
|
||||
duration: number
|
||||
pathPoints: Array<{ x: number; y: number; z: number }>
|
||||
startSnap: SgsSnapDetail
|
||||
endSnap: SgsSnapDetail
|
||||
computeTimeMs: number
|
||||
polyCount: number
|
||||
warnings: string[]
|
||||
errorCode?: string
|
||||
message?: string
|
||||
}
|
||||
|
||||
export interface SgsMapSDKOptions {
|
||||
container: string | HTMLElement
|
||||
sdkUrl?: string
|
||||
targetOrigin?: string
|
||||
floorId?: number
|
||||
timeout?: number
|
||||
}
|
||||
|
||||
export interface SgsMapEvents {
|
||||
ready: { engineVersion: string; protocolVersion: number }
|
||||
poiClick: { id?: number; poiId?: number; name: string; type: string; floorId?: number; description?: string }
|
||||
floorChanged: { floorId: number }
|
||||
error: { code: string; message: string }
|
||||
loadError: { type: string; detail: string }
|
||||
}
|
||||
|
||||
export type SgsErrorCode =
|
||||
| 'ERR_TIMEOUT'
|
||||
| 'ERR_NO_PATH'
|
||||
| 'ERR_FLOOR_NOT_FOUND'
|
||||
| 'ERR_NOT_READY'
|
||||
| 'ERR_POI_NOT_FOUND'
|
||||
| 'ERR_NETWORK'
|
||||
| 'ERR_IFRAME_DEAD'
|
||||
| 'ERR_UNAUTHORIZED'
|
||||
| 'ERR_UNSUPPORTED'
|
||||
| 'ERR_FAILED'
|
||||
|
||||
export interface SgsMarkerConfig {
|
||||
id: string
|
||||
name?: string
|
||||
iconUrl?: string
|
||||
anchorNodeName?: string
|
||||
position?: [number, number, number] | { x: number; y: number; z: number }
|
||||
}
|
||||
|
||||
export interface SgsMapSDKInstance {
|
||||
on<K extends keyof SgsMapEvents>(event: K, listener: (payload: SgsMapEvents[K]) => void): void
|
||||
off<K extends keyof SgsMapEvents>(event: K, listener: (payload: SgsMapEvents[K]) => void): void
|
||||
getIsReady(): boolean
|
||||
getCurrentFloor(): number
|
||||
focusTo(node: SgsMapNode | string): void
|
||||
changeFloor(floorId: number, timeout?: number): Promise<{ success: boolean; floorId: number }>
|
||||
addMarker(config: SgsMarkerConfig): void
|
||||
removeMarker(markerId: string): void
|
||||
clearMarkers(): void
|
||||
highlightPolygon(nodeName: string): void
|
||||
planRoute(from: SgsMapNode | string, to: SgsMapNode | string, options?: unknown, timeout?: number): Promise<SgsRouteResult>
|
||||
clearRoute(): void
|
||||
getState(): Promise<unknown>
|
||||
resetView(): void
|
||||
setViewMode(mode: '2d' | '3d'): void
|
||||
toggleLayer(types: string[], visible: boolean, timeout?: number): Promise<{ success: boolean; visibleTypes: string[] }>
|
||||
destroy(): void
|
||||
}
|
||||
|
||||
export type SgsMapSDKConstructor = new (options: SgsMapSDKOptions) => SgsMapSDKInstance
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
SGSMapSDK?: SgsMapSDKConstructor
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user