I cloned the Sample app from Git(Graphhopper).
And then download some Map.
But in my app it requires to have an option, either you walk or use bike
in routing.
Then i made this configuration in sample app code.
void loadGraphStorage() {
new GHAsyncTask<Void, Void, Path>() {
protected Path saveDoInBackground(Void... v) throws Exception {
GraphHopper tmpHopp = new GraphHopper().forMobile();
tmpHopp.load(new File(mapsFolder, currentArea).getAbsolutePath());
hopper = tmpHopp;
return null;
}
protected void onPostExecute(Path o) {
if (hasError()) {
err = "An error happend while creating graph:" + getErrorMessage();
} else {
err = "Finished loading graph. Press long to define where to start and end the route.";
}
finishPrepare();
}
}.execute();
}
And here.
public void calcPath(final double fromLat, final double fromLon,
final double toLat, final double toLon) {
new AsyncTask<Void, Void, GHResponse>() {
float time;
protected GHResponse doInBackground(Void... v) {
StopWatch sw = new StopWatch().start();
GHRequest req = new GHRequest(fromLat, fromLon, toLat, toLon);
req.setAlgorithm(AlgorithmOptions.DIJKSTRA_BI);
req.setVehicle("bike");
req.getHints().put("instructions", "false");
req.setWeighting("fastest");
GHResponse resp = hopper.route(req);
time = sw.stop().getSeconds();
return resp;
}
protected void onPostExecute(GHResponse resp) {
if (!resp.hasErrors()) {
log("from:" + fromLat + "," + fromLon + " to:" + toLat + ","
+ toLon + " found path with distance:" + resp.getDistance()
/ 1000f + ", nodes:" + resp.getPoints().getSize() + ", time:"
+ time + " " + resp.getDebugInfo());
logUser("the route is " + (int) (resp.getDistance() / 100) / 10f
+ "km long, time:" + resp.getTime() / 60000f + "min, debug:" + time);
mapView.getLayerManager().getLayers().add(createPolyline(resp));
//mapView.redraw();
} else {
logUser("Error:" + resp.getErrors());
}
shortestPathRunning = false;
}
}.execute();
}
I Used setVehicle to bike but The error message gave me only Car is supported.