步行路线规划
本页查询徒步路线、距离和预计耗时,不启动持续导航。行进中的转向、偏航、到达与语音见步行导航。
独立步行请求示例
完成初始化后,将以下类放入 example/docs/WalkPlanningExample.java。本例仅调用 calculateWalkRouteAsyn。
package example.docs;
import android.content.Context;
import java.util.function.Consumer;
import cn.sukha.mapsdk.services.core.*;
import cn.sukha.mapsdk.services.route.*;
public final class WalkPlanningExample implements AutoCloseable {
private final RouteSearch search;
private boolean closed;
public WalkPlanningExample(Context context) { search = new RouteSearch(context); }
public void plan(LatLonPoint from, LatLonPoint to,
Consumer<WalkPath> success, Consumer<SdkException> failure,
Runnable noRoute) {
search.setRouteSearchListener(new RouteSearch.OnRouteSearchListener() {
// 此接口要求实现驾车回调;本例不发起驾车请求。
@Override public void onDriveRouteSearched(DriveRouteResult unused, int code) {}
@Override public void onWalkRouteSearched(WalkRouteResult result, int code) {
if (closed) return;
if (code != SdkException.SUCCESS) { failure.accept(search.getLastError()); return; }
if (result == null || result.getPaths().isEmpty()) { noRoute.run(); return; }
success.accept(result.getPaths().get(0));
}
});
search.calculateWalkRouteAsyn(new RouteSearch.WalkRouteQuery(
new RouteSearch.FromAndTo(from, to), RouteSearch.WALK_DEFAULT));
}
public void cancel() { search.cancel(); }
@Override public void close() { closed = true; search.destroy(); }
}
步行规则与结果
| 项目 | 步行约定 |
|---|---|
| 策略 | WALK_DEFAULT,当前常量值 0 |
| 路网 | 使用允许步行的道路、步道和小路;不是慢速汽车路线 |
| 途经点 / 驾车避让 | 本步行查询不提供这些驾车选项 |
| 距离 | WalkPath.getDistance(),单位米 |
| 预计耗时 | WalkPath.getDuration(),单位秒,来自步行算路结果 |
| 预览折线 | getPolyline(),坐标顺序为 LatLonPoint(latitude, longitude) |
| 步骤 | getSteps(),保留服务给出的道路名和指引字段 |
无路径时显示“暂无可用步行路线”,不要改用驾车请求后继续标为步行。没有独立骑行规则时,也不能把本结果标成骑行专属规划。
从预览进入步行导航
RouteSearch 只负责查询。要持续引导,创建 WalkingNavi,通过它的 calculateWalkRoute(start,end) 准备路线,成功后由用户点击 startNavi(),并持续提供真实原始 WGS84 定位。完整权限、定位、语音和销毁代码见步行导航 Activity 案例。