Android中如何通过OSRMRoadManager获取步行路线?
如何用OSRMRoadManager指定获取步行路线?
当然可以指定获取步行路线,OSRMRoadManager支持通过设置出行配置文件切换路线类型,默认是驾车模式,只需在初始化RoadManager后添加一行代码指定步行配置即可。
修改后的代码实现
外部初始化部分:
RoadManager roadManager = new OSRMRoadManager(this); // 指定步行路线配置 roadManager.setProfile(Profile.WALKING); ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>(); GeoPoint startPoint = new GeoPoint(currentLocation.getLatitude(), currentLocation.getLongitude()); GeoPoint endPoint = new GeoPoint(destLocation.getLatitude(), destLocation.getLongitude()); waypoints.add(startPoint); waypoints.add(endPoint); asyncTask = new UpdateRoadTask(this, map); asyncTask.execute(waypoints);
UpdateRoadTask内部修改:
注意在AsyncTask的doInBackground方法里,同样需要给新创建的RoadManager实例设置步行配置,否则会回到默认驾车模式:
protected Road doInBackground(Object... params) { ArrayList<GeoPoint> waypoints = (ArrayList<GeoPoint>)params[0]; RoadManager roadManager = new OSRMRoadManager(mContext); // 设置步行路线配置 roadManager.setProfile(Profile.WALKING); return roadManager.getRoad(waypoints); }
注意事项
- 确保导入正确的Profile类:
import org.osmdroid.util.Profile; - 若使用的osmdroid版本较旧,Profile类可能在
org.osmdroid.views.overlay.roadmanager包下,可根据实际情况调整导入路径
内容的提问来源于stack exchange,提问作者Mary
相关产品推荐
相关产品推荐

