144 lines
3.7 KiB
TypeScript
144 lines
3.7 KiB
TypeScript
declare class EventEmitter<Events extends Record<string, any>> {
|
|
private events;
|
|
constructor();
|
|
on<K extends keyof Events>(event: K, listener: (payload: Events[K]) => void): void;
|
|
off<K extends keyof Events>(event: K, listener: (payload: Events[K]) => void): void;
|
|
emit<K extends keyof Events>(event: K, data: Events[K]): void;
|
|
}
|
|
|
|
/** 统一位置描述符 */
|
|
type SgsMapNode = {
|
|
type: 'coord';
|
|
floorId: number;
|
|
x: number;
|
|
z: number;
|
|
y?: number;
|
|
} | {
|
|
type: 'poiId';
|
|
value: number;
|
|
} | {
|
|
type: 'nodeName';
|
|
value: string;
|
|
};
|
|
/** 单点吸附详情 */
|
|
interface SnapDetail {
|
|
original: {
|
|
x: number;
|
|
z: number;
|
|
};
|
|
nearest: {
|
|
x: number;
|
|
z: number;
|
|
};
|
|
distance: number;
|
|
}
|
|
/** 寻路结果 */
|
|
interface RouteResult {
|
|
success: boolean;
|
|
distance: number;
|
|
duration: number;
|
|
pathPoints: Array<{
|
|
x: number;
|
|
y: number;
|
|
z: number;
|
|
}>;
|
|
startSnap: SnapDetail;
|
|
endSnap: SnapDetail;
|
|
computeTimeMs: number;
|
|
polyCount: number;
|
|
warnings: string[];
|
|
errorCode?: string;
|
|
message?: string;
|
|
}
|
|
/** 寻路选项 */
|
|
interface RouteOptions {
|
|
mode?: 'walk' | 'accessible';
|
|
}
|
|
/** SDK 初始化配置 */
|
|
interface SGSMapSDKOptions {
|
|
container: string | HTMLElement;
|
|
sdkUrl?: string;
|
|
targetOrigin?: string;
|
|
floorId?: number;
|
|
timeout?: number;
|
|
}
|
|
/** SDK 事件映射 */
|
|
interface SGSMapEvents {
|
|
ready: {
|
|
engineVersion: string;
|
|
protocolVersion: number;
|
|
};
|
|
poiClick: {
|
|
id: number;
|
|
name: string;
|
|
type: string;
|
|
floorId?: number;
|
|
description?: string;
|
|
};
|
|
floorChanged: {
|
|
floorId: number;
|
|
};
|
|
error: {
|
|
code: string;
|
|
message: string;
|
|
};
|
|
loadError: {
|
|
type: string;
|
|
detail: string;
|
|
};
|
|
}
|
|
/** SDK 错误码 */
|
|
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';
|
|
/** 图钉配置参数 */
|
|
interface MarkerConfig {
|
|
id: string;
|
|
name?: string;
|
|
iconUrl?: string;
|
|
anchorNodeName?: string;
|
|
position?: [number, number, number] | {
|
|
x: number;
|
|
y: number;
|
|
z: number;
|
|
};
|
|
}
|
|
|
|
declare class SGSMapSDK extends EventEmitter<SGSMapEvents> {
|
|
private container;
|
|
private sdkUrl;
|
|
private floorId;
|
|
private targetOrigin;
|
|
private iframe;
|
|
private isReady;
|
|
private defaultTimeout;
|
|
private promiseQueue;
|
|
private _messageListener;
|
|
constructor(options: SGSMapSDKOptions);
|
|
private _initIframeBridge;
|
|
private _generateRequestId;
|
|
private _postCommand;
|
|
private _postCommandAsync;
|
|
getIsReady(): boolean;
|
|
getCurrentFloor(): number;
|
|
focusTo(node: SgsMapNode | string): void;
|
|
changeFloor(floorId: number, timeout?: number): Promise<{
|
|
success: boolean;
|
|
floorId: number;
|
|
}>;
|
|
addMarker(config: MarkerConfig): void;
|
|
removeMarker(markerId: string): void;
|
|
clearMarkers(): void;
|
|
highlightPolygon(nodeName: string): void;
|
|
planRoute(from: SgsMapNode | string, to: SgsMapNode | string, options?: any, timeout?: number): Promise<RouteResult>;
|
|
clearRoute(): void;
|
|
getState(): Promise<any>;
|
|
resetView(): void;
|
|
setViewMode(mode: '2d' | '3d'): void;
|
|
toggleLayer(types: string[], visible: boolean, timeout?: number): Promise<{
|
|
success: boolean;
|
|
visibleTypes: string[];
|
|
}>;
|
|
destroy(): void;
|
|
}
|
|
|
|
export { type MarkerConfig, type RouteOptions, type RouteResult, type SGSErrorCode, type SGSMapEvents, type SGSMapSDKOptions, type SgsMapNode, type SnapDetail, SGSMapSDK as default };
|