【发布时间】:2018-02-04 19:05:45
【问题描述】:
我正在构建一个应用程序,我在其中使用 osmdroid 及其奖励包和 mapnik 用于瓷砖。我希望能够输出多个点之间的最短路径,并作为下一步构建考虑时间框架的路径。从我的研究来看,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();
}
}
【问题讨论】:
-
我认为 GraphHopperRoadManager 在后台使用的是路由 API,而不是路由优化 API。您仍然可以通过 optimize=true 对位置的顺序进行“排序”,但是路由 API 无法实现更高级的功能,例如多辆车、时间窗口等
-
@Karussell 你很可能是正确的,所以如果你能给我一个提示,我需要调用哪个函数来设置优化选项,那将不胜感激。
-
@Karussell nvm 我弄清楚了调用的来源以及如何向其中添加请求选项。感谢您为我指明正确的方向
-
请将此添加为答案并接受它
标签: java routing osmdroid graphhopper