前台网页导航
11.1 驾车导航
const navi = new sdk.Navi();
const gps = new sdk.Geolocation({enableHighAccuracy:true,timeout:15000,maximumAge:0});
// 此函数由页面开始按钮的点击事件调用。
async function startNavigation() {
navi.unlockVoice(); // 保持在点击同步阶段,放在任何 await 前
try {
const fix = await gps.getCurrentPosition();
await navi.calculateDriveRoute(fix.position,[100.03,21.68]);
await navi.startNavi({
position:fix.position.toArray(),accuracy:fix.accuracy,
timestamp:fix.timestamp,speed:fix.speed,heading:fix.heading
});
} catch(error) { console.error(error.code,error.message); }
}
// 结束:navi.stopNavi(); 页面释放:navi.destroy(); gps.destroy();
Navi 规划返回 mode=navigation 的路线,不接收 Driving 预览结果直接替代。startNavi(fix) 使用真实新鲜定位,之后内部订阅浏览器定位。setVoiceEnabled 控制录音,repeat() 重播当前提示。导航事件的真实名称与载荷见配套 API 索引;自定义 UI 不解析音频来推断导航状态。
11.2 步行导航
WalkingNavi 的顺序为用户点击同步 unlockVoice → await calculateWalkRoute(origin,destination) → startNavi()。它与驾车 startNavi(fix) 签名不同。可通过 updateLocation(fix) 注入符合公开坐标模式的真实数据;不要同时注入互相矛盾的定位源。停止用 stopNavi,销毁用 destroy。
11.3 语音与限制
当前语音使用中文录音。browser 版默认从随包 assets/voice 加载;npm/ESM 默认从服务 /sdk-assets/voice/20260914/ 加载,可用 voiceBaseUrl 指定。需保留目录结构及正确 MIME;不要删除 Opus 资源。语音由用户点击解锁,浏览器锁屏、切后台、自动播放限制及解码支持需设备测试。JS 前台导航不承诺原生后台导航能力。
本版 Loader 没有语言参数,也不自动匹配系统语言。宿主自己的按钮/提示可以自行国际化;不能据此把 JS 描述为已完成与 Android 相同的中缅英接口。