我正在构建一个应用程序,我正在使用osmdroid及其奖励包和mapnik for tiles。我希望能够在多个点之间输出最短路径,并作为下一步构建考虑时间帧的路径。根据我的研究,看起来Graphhopper路由优化API正是我所需要的,但我无法弄清楚如何在我的项目中正确使用它。由于我使用OS OSMBonusPack,我看起来唯一的选择是正确设置Road Manager以便能够使用路由优化。按照OSMBonusPack的教程,我可以创建道路管理器并从一个点到另一个点绘制路径,但不知道如何添加优化以找到最短路径以及将道路类型设置为"行人"不是车。任何帮助将受到高度赞赏。这是我用来在我的点之间建立路径的代码,与教程几乎完全相同:
ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
for (int i = 0; i < chosenAttractions.size(); i++) {
GeoPoint point = new GeoPoint(chosenAttractions.get(i).latitude, chosenAttractions.get(i).longitude);
waypoints.add(point);
}
if (count > 1) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
RoadManager roadManager = new GraphHopperRoadManager("fae5bf0a-402a-48b2-96ac-324e138f53dc", true);
// roadManager.addRequestOption("routeType=bicycle");
Road road = roadManager.getRoad(waypoints);
Polyline roadOverlay = RoadManager.buildRoadOverlay(road);
map.getOverlays().add(roadOverlay);
map.invalidate();
}
}
答案 0 :(得分:0)
原来使用路由API的优化或车辆选项,必须将其作为addRequestOption函数的参数传递,例如:
roadManager.addRequestOption("vehicle=foot");
roadManager.addRequestOption("optimize=true");