>我正在构建一个应用程序,其中我正在使用osmdroid及其奖励包和图块的mapnik。我希望能够在多个点之间输出最短路径,并作为下一步构建考虑时间框架的路径。根据我的研究,看起来Graphhopper路由优化API正是我所需要的,但是我不知道如何在我的项目中正确使用它。由于我使用的是OS OSMBonusPack,看起来我唯一的选择是正确设置道路管理器以能够使用路由优化。按照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();
}
}
要使用路由API的优化或车辆选项,必须将其作为参数传递给addRequestOption函数,例如:
roadManager.addRequestOption("vehicle=foot");
roadManager.addRequestOption("optimize=true");