Export to GitHub

osmbonuspack - Tutorial_1.wiki


We assume you already followed Tutorial_0.

1. "Hello, Routing World!"

First, get a road manager: RoadManager roadManager = new OSRMRoadManager();

Set-up your start and end points: ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>(); waypoints.add(startPoint); GeoPoint endPoint = new GeoPoint(48.4, -1.9); waypoints.add(endPoint); And retreive the road between those points: Road road = roadManager.getRoad(waypoints);

then, build a Polyline with the route shape: Polyline roadOverlay = RoadManager.buildRoadOverlay(road, this);

Add this Polyline to the overlays of your map: map.getOverlays().add(roadOverlay);

And then? Refresh the map! map.invalidate();

2. Playing with the RoadManager

  • Okay, but I wanted this route for bicycles...

  • First, change to MapQuestRoadManager, as it supports bicycle routes. Bad news, MapQuest service now requires an API key, so you will also have to register at http://developer.mapquest.com, and obtain this API key.

Then, in the code, just few changes, not too complicated: RoadManager roadManager = new MapQuestRoadManager("_YOUR MAPQUEST API KEY_");

Then set appropriate option (before getting the road): roadManager.addRequestOption("routeType=bicycle"); (all MapQuest options are described here: http://open.mapquestapi.com/guidance/)

Done.

3. Showing the Route steps on the map

At each road node, we put a Marker. Straightforward:

Drawable nodeIcon = getResources().getDrawable(R.drawable.marker_node); for (int i=0; i<road.mNodes.size(); i++){ RoadNode node = road.mNodes.get(i); Marker nodeMarker = new Marker(map); nodeMarker.setPosition(node.mLocation); nodeMarker.setIcon(nodeIcon); nodeMarker.setTitle("Step "+i); map.getOverlays().add(nodeMarker); }

You don't have a marker_node icon? Shame on you. Pick the OSMNavigator one (res/drawable-nodpi/marker_node.png).

Here we are! Clicking on a step marker will open its bubble.

  • Hey, guy, those bubbles are nice, but useless!

  • You are right. So, go to step 4.

4. Filling the bubbles

Set the bubble snippet with the instructions: nodeMarker.setSnippet(node.mInstructions);

Set the bubble sub-description with the length and duration of the step: nodeMarker.setSubDescription(Road.getLengthDurationText(node.mLength, node.mDuration));

And put an icon showing the maneuver at this step: Drawable icon = getResources().getDrawable(R.drawable.ic_continue); nodeMarker.setImage(icon);

Give it a try, you should get something like that:

http://osmbonuspack.googlecode.com/svn/BonusPackDownloads/img/tuto_routing.png' height='530'>

And, yes, you are right, maneuver icons are not correct!

The maneuver id is in node.mManeuverType.
The possible maneuver ids are http://open.mapquestapi.com/guidance/#maneuvertypes'>here. And the maneuver icons are in OSMNavigator res/drawable-mpi.
It's boring, so I'm going downstair to take a coffee, while you handle those icons properly.

And see you again on Tutorial_2.