Mapbox Android添加途经点失效,参照官方文档操作仍无法解决怎么办?
Mapbox Android 导航SDK添加途经点实现方法
你的现有代码仅配置了起点和终点参数,未注入途经点配置,按照以下步骤修改即可实现带途经点的路线规划:
- 第一步:提前构造所有途经点的
Point实例,注意参数顺序是经度在前,纬度在后,避免坐标颠倒导致路线异常 - 第二步:在
NavigationRoute.builder的配置链中,origin配置完成后、destination配置前,调用addWaypoint()方法逐个添加途经点,如果有多个途经点按顺序多次调用该方法即可 - 第三步:重新构建请求触发路线查询即可生成包含途经点的规划路线
修改后的代码示例如下:
// 可直接修改原getRoute方法,新增途经点列表参数 private void getRoute(Point origin, Point destination, List<Point> waypoints ) { NavigationRoute.Builder builder = NavigationRoute.builder(this) .accessToken(Mapbox.getAccessToken()) .origin(origin); // 按顺序添加所有途经点 for (Point wp : waypoints) { builder.addWaypoint(wp); } builder.destination(destination) .build() .getRoute(new Callback<DirectionsResponse>() { @Override public void onResponse(Call<DirectionsResponse> call, Response<DirectionsResponse> response) { Log.d(TAG, "Response code: " + response.code()); if (response.body() == null) { Log.e(TAG, "未查询到有效路线,请确认账号和access token配置正确"); return; } else if (response.body().routes().size() < 1) { Log.e(TAG, "未查询到有效路线"); return; } currentRoute = response.body().routes().get(0); Log.d("LOGcurrent", String.valueOf(currentRoute)); if (navigationMapRoute != null) { navigationMapRoute.removeRoute(); } else { navigationMapRoute = new NavigationMapRoute(null, mapView, mapboxMap, R.style.NavigationMapRoute); } navigationMapRoute.addRoute(currentRoute); } @Override public void onFailure(Call<DirectionsResponse> call, Throwable throwable) { Log.e(TAG, "请求错误: " + throwable.getMessage()); } }); }
注意事项
- 单次路线请求最多支持25个途经点(不含起点、终点),超过上限会返回请求错误
- 如果需要控制途经点的驶进方向、是否允许偏移,可额外调用
addWaypoint()的重载方法配置对应参数 - 若需要途经点在地图中显示为停靠标记,可在拿到路线后自行添加Marker标注在对应坐标位置
内容的提问来源于stack exchange,提问作者Dendi Santoso
相关产品推荐
相关产品推荐

