使用Graphhopper路由API的OSMBonusPack

时间:2018-02-04 19:05:45

标签: java routing osmdroid graphhopper

我正在构建一个应用程序,我正在使用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();

                }
            }

1 个答案:

答案 0 :(得分:0)

原来使用路由API的优化或车辆选项,必须将其作为addRequestOption函数的参数传递,例如:

roadManager.addRequestOption("vehicle=foot");
roadManager.addRequestOption("optimize=true");