驾车路线规划
使用 sdk.Driving 查询汽车路线。若需要跟随设备持续引导,使用驾车导航,不要把本页预览结果直接传给导航控制器。
完整调用片段
先安装当前交付的 npm 包,页面提供有高度的 map 容器,并引入 SDK 样式。本片段按 ESM 运行;普通网页可将导入和 load(...) 替换为 SukhaSDK.load(...)。
import {load} from '@sukha/maps';
const sdk = await load({key:'YOUR_WEB_KEY', serviceBaseUrl:'https://map.sukha.cn',
datasetId:'shan', language:'zh-CN'});
const map = new sdk.Map('map', {center:[100.02228,21.67623], zoom:15});
const driving = new sdk.Driving({map, policy:sdk.DrivingPolicy.LEAST_TIME});
let alive = true;
async function planDriving(origin, destination) {
try {
const result = await driving.search(origin, destination, {waypoints:[]});
if (!alive) return;
const route = result.routes[0];
if (!route) { console.log('暂无可用驾车路线'); return; }
console.log('驾车距离(米)', route.distance, '预计耗时(秒)', route.time);
return route;
} catch (error) { if (alive) console.error(error.code, error.message, error.requestId); }
}
// 预览演示坐标;实际产品将选定的起终点传入。
void planDriving([100.02228,21.67623], [100.024,21.678]);
window.addEventListener('pagehide', () => {
alive = false; driving.destroy(); map.destroy();
}, {once:true});
策略、途经点和避让
| 选项 | 当前支持 |
|---|---|
DrivingPolicy.LEAST_TIME |
时间优先,对应服务策略 TIME |
DrivingPolicy.LEAST_DISTANCE |
距离优先,对应 DISTANCE |
search(origin,destination,{waypoints}) |
最多 16 个途经点 |
setAvoidPolygons(areas) |
最多 3 个区域,每个 3–16 个顶点;传空数组清除 |
setAvoidRoad(name) |
道路名称最多 200 字符;传空字符串清除 |
设置非空道路避让会清除区域避让;设置非空区域避让会清除道路避让。以上为 JS 接口的限制,与 Android 参数上限不完全相同。服务不支持约束时显示错误,不静默退化。
请求参数和返回值均为当前公开坐标模式;米和秒只在显示时换算。需要自行绘制时,可不传 map,使用返回的 route.path 创建公开 Polyline。