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