SSukha 地图开发者文档

导航与步行 API

JS 0.1.0-alpha.37 · 2026-10-09。来源为当前源码生成的 TypeScript 声明。优先使用 load() 返回的 Namespace;底层类的 Client 参数由绑定构造器注入,业务不需自行创建。private/protected 成员不属于公开接入。

import { Client, LngLatLike } from './core';
import { Service } from './services';
import { NavigationEngine, NavigationRoute, Fix } from './navigation-engine';
export { NavigationEngine } from './navigation-engine';
export type { NavigationRoute, Fix } from './navigation-engine';
/** Authenticated full-route planning plus foreground browser navigation. */
export declare class Navi extends Service {
    route?: NavigationRoute;
    engine?: NavigationEngine;
    constructor(client: Client);
    calculateDriveRoute(origin: LngLatLike, destination: LngLatLike, options?: {
        policy?: 'TIME' | 'DISTANCE';
        heading?: number | null;
    }): Promise<NavigationRoute>;
    /** Invoke on the Start button before asynchronous location/route work. */
    unlockVoice(): void;
    startNavi(fix: Fix): Promise<void>;
    setVoiceEnabled(enabled: boolean): void;
    repeat(): void;
    stopNavi(): void;
    destroy(): void;
}
/** Platform-independent route following and speech plan, fed with real timestamped fixes. */
export type XY = [number, number];
export interface NavigationRoute {
    mode: 'navigation';
    path: XY[];
    distance: number;
    time: number;
    datasetVersion: string;
    coordinateSystem: 'WGS84' | 'GCJ02';
    maneuvers: {
        instruction: string;
        geometryIndex: number;
    }[];
    junctionIndices: number[];
}
export interface Fix {
    position: XY;
    accuracy: number;
    timestamp: number;
    speed: number | null;
    heading: number | null;
}
export interface Cue {
    id: string;
    text: string;
    urgent: boolean;
}
export declare const meters: (a: XY, b: XY) => number;
export declare const bearing: (a: XY, b: XY) => number;
export declare const distanceText: (d: number) => string;
export declare class NavigationEngine {
    readonly route: NavigationRoute;
    readonly destination: XY;
    readonly cumulative: number[];
    readonly plan: {
        instruction: string;
        at: number;
        id: string;
    }[];
    readonly speechWindows: ReadonlyArray<{
        start: number;
        end: number;
        ids: string[];
        turn: boolean;
    }>;
    progress: number;
    last?: Fix;
    lastReliable?: Fix;
    offSince: number;
    offCount: number;
    arrivalCount: number;
    arrived: boolean;
    heading: number | null;
    speed: number;
    deviation: number;
    constructor(route: NavigationRoute, destination: XY);
    cueIsAhead(cue: Cue): boolean;
    speechDiagnostic(cue: Cue, now: number, requestedAt: number): {
        time: number;
        cueId: string;
        text: string;
        waitMillis: number;
        fixAgeSeconds: number | undefined;
        position: number[] | undefined;
        speed: number;
        accuracy: number | undefined;
        reliable: boolean;
        distanceToCueMeters: number | undefined;
        estimatedDistanceToCueMeters: number | undefined;
        spokenDistanceMeters: number | undefined;
    };
    reliable(now: number): boolean;
    update(f: Fix, now?: number): boolean;
    remaining(): number;
    remainingSeconds(): number;
    reroute(now: number): boolean;
    next(): {
        instruction: string;
        at: number;
        id: string;
    } | undefined;
    side(): "前方" | "右侧" | "后方" | "左侧";
    instruction(): string;
    intro(): string;
    acknowledge(cue: Cue, now: number): void;
    cueStillCurrent(cue: Cue, now: number): boolean;
    cue(now: number): Cue | undefined;
}

walking-navigation

import { Client, Evented, LngLatLike } from './core';
import { Route } from './services';
import { Fix } from './navigation-engine';
/** Foreground walking controller using the authorized walking planner and existing recorded audio. */
export declare class WalkingNavi extends Evented {
    constructor(client: Client);
    calculateWalkRoute(origin: LngLatLike, destination: LngLatLike): Promise<Route>;
    unlockVoice(): void;
    startNavi(): void;
    updateLocation(fix: Fix): void;
    setVoiceEnabled(enabled: boolean): void;
    stopNavi(): void;
    destroy(): void;
}

walking-progress

import { LngLatLike } from './core';
import { Route } from './services';
import { Fix } from './navigation-engine';
export interface WalkingCue {
    id: string;
    instruction: string;
    geometryIndex: number;
}
export interface WalkingUpdate {
    accepted: boolean;
    reliable: boolean;
    offRoute: boolean;
    arrived: boolean;
    requestReroute: boolean;
    progressMeters: number;
    remainingMeters: number;
    deviationMeters: number;
    cue?: WalkingCue;
}
/** Walking-specific matching; coordinate order is longitude, latitude. */
export declare class WalkingNavigationEngine {
    constructor(route: Route, destination: LngLatLike);
    update(fix: Fix, now?: number): WalkingUpdate;
    acknowledge(id: string): void;
    remaining(): number;
}