This is a tricky question, been banging my head for a day, please help.
I use Google Maps Apis to get the shortest driving distance and its routes, points, etc between 2 GeoPoints that I provide, see code below
private JSONObject GetDistance(String src, String dest) throws Exception
{
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.googleapis.com/maps/api/directions/json?");
urlString.append("origin=");// from
urlString.append(src);
urlString.append("&destination=");// to
urlString.append(dest);
urlString.append("&mode=driving&sensor=true&units=imperial");
// get the JSON And parse it to get the directions data.
HttpURLConnection urlConnection = null;
URL url = null;
url = new URL(urlString.toString());
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();
InputStream inStream = urlConnection.getInputStream();
BufferedReader bReader = new BufferedReader(new InputStreamReader(inStream));
String temp, response = "";
while ((temp = bReader.readLine()) != null)
{
// Parse data
response += temp;
}
// Close the reader, stream & connection
bReader.close();
inStream.close();
urlConnection.disconnect();
JSONObject object = (JSONObject) new JSONTokener(response).nextValue();
return (object);
}
I also plot the 2 GeoPoints on a google maps fragment, I use SupportMapFragment, i.e. this library com.google.android.gms.maps.SupportMapFragment
what I want to do is, I want to draw the route that I get from the getDistance function above, it outputs the data in JSON which I can easily handle.
Here is the JSON object that I get from the getDistance function
{
"status": "OK",
"routes": [
{
"waypoint_order": [],
"summary": "Wilbraham Rd/A6010",
"bounds": {
"southwest": {
"lng": -2.26773,
"lat": 53.4301
},
"northeast": {
"lng": -2.19414,
"lat": 53.45106000000001
}
},
"legs": [
{
"duration": {
"value": 797,
"text": "13 mins"
},
"distance": {
"value": 7289,
"text": "4.5 mi"
},
"end_location": {
"lng": -2.19414,
"lat": 53.43052
},
"start_address": "137 College Road, Manchester, Greater Manchester M16 0AA, UK",
"end_address": "6 Ealing Place, Manchester M19, UK",
"start_location": {
"lng": -2.26773,
"lat": 53.45106000000001
},
"via_waypoint": [],
"steps": [
{
"html_instructions": "Head <b>southeast</b> on <b>College Rd</b> toward <b>Park Dr</b>",
"duration": {
"value": 83,
"text": "1 min"
},
"distance": {
"value": 729,
"text": "0.5 mi"
},
"end_location": {
"lng": -2.25758,
"lat": 53.45005
},
"polyline": {
"points": "ctfeIh|yLrBaEdAoB`@w@N]BKDM@Q@M?]?WC}AAgAGyG?mAI{GG{JM_HAo@"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.26773,
"lat": 53.45106000000001
}
},
{
"html_instructions": "Turn <b>right</b> onto <b>Withington Rd</b>",
"duration": {
"value": 96,
"text": "2 mins"
},
"distance": {
"value": 747,
"text": "0.5 mi"
},
"end_location": {
"lng": -2.25703,
"lat": 53.44339
},
"polyline": {
"points": "ymfeIz|wLJ@v@TL@N?H?HAHCJEXKhAy@JGTEH?|BAzAExAAN?z@Cb@?dA?d@AdFKxCGfCC"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.25758,
"lat": 53.45005
}
},
{
"html_instructions": "Turn <b>left</b> onto <b>Wilbraham Rd/A6010</b>",
"duration": {
"value": 249,
"text": "4 mins"
},
"distance": {
"value": 2565,
"text": "1.6 mi"
},
"end_location": {
"lng": -2.21852,
"lat": 53.44261
},
"polyline": {
"points": "edeeIlywLAsGAgA@}D@m@@{EFqGHcG?]LmGHaFDyD@gB?sC?oDIw@?i@AuACoCKiGWcNe@mQKcEK}DASAe@C{AAcAAq@?_B?mABkALkCFgBF[LsCp@sQFyADmALkDj@wNx@_U@wA"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.25703,
"lat": 53.44339
}
},
{
"html_instructions": "Continue straight onto <b>Moseley Rd/B5093</b><div style="font-size:0.9em">Continue to follow Moseley Rd</div><div style="font-size:0.9em">Go through 1 roundabout</div>",
"duration": {
"value": 100,
"text": "2 mins"
},
"distance": {
"value": 974,
"text": "0.6 mi"
},
"end_location": {
"lng": -2.20411,
"lat": 53.44213000000001
},
"polyline": {
"points": "i_eeIvhpLDsA@a@Ba@D{@JgAPsAVgBHi@De@Fe@Bc@Bk@D{@@_A?qAB}I?gA@oDBmJ@qD?g@@gGBgD@[?Q?MA[AUG]A??AA??AA??AA??A?AA??A?A?AAA?A?A?A?A?A?A?A@??A?A?A@A?A@??A@A@A@?@AYiE"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.21852,
"lat": 53.44261
}
},
{
"html_instructions": "At the roundabout, take the <b>2nd</b> exit onto <b>Kingsway/A34</b>",
"duration": {
"value": 63,
"text": "1 min"
},
"distance": {
"value": 694,
"text": "0.4 mi"
},
"end_location": {
"lng": -2.20629,
"lat": 53.43661
},
"polyline": {
"points": "i|deItnmLC?AAA?AAAAA?AA?AACAAAAAC?AAC?AAC?C?C?CAA?C?C@C?C?A?C@C?C@A?C@A@C?A@A@A@A@A@A@?@A@?@A@?@?B?@@@?@@@?@@@??@@@@@?@@@@@?@@@?@?@@@b@V^VZHDBHBf@Rv@ZLD`@NJDB@h@RrFvBLDhGxBjFdB"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.20411,
"lat": 53.44213000000001
}
},
{
"html_instructions": "Turn <b>left</b> onto <b>Grangethorpe Dr</b>",
"duration": {
"value": 56,
"text": "1 min"
},
"distance": {
"value": 415,
"text": "0.3 mi"
},
"end_location": {
"lng": -2.20015,
"lat": 53.43616
},
"polyline": {
"points": "yyceIh|mL\aCBUBa@RcCFc@FcAHiB@MReRM}@AI"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.20629,
"lat": 53.43661
}
},
{
"html_instructions": "Continue onto <b>Crossley Rd</b>",
"duration": {
"value": 45,
"text": "1 min"
},
"distance": {
"value": 394,
"text": "0.2 mi"
},
"end_location": {
"lng": -2.19433,
"lat": 53.43562000000001
},
"polyline": {
"points": "_wceI|ulLGyCBY@GJs@L}@BaA?GFqCBiBDkB@CLkBPkBRsCF{@"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.20015,
"lat": 53.43616
}
},
{
"html_instructions": "Turn <b>right</b> onto <b>Errwood Rd</b>",
"duration": {
"value": 60,
"text": "1 min"
},
"distance": {
"value": 607,