这是一个棘手的问题,困扰了我一天,请帮忙。
我使用 Google Maps APIs 来获取我提供的 2 个 GeoPoints 之间的最短行驶距离及其路线、点等,请参见下面的代码
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);
}
我还在谷歌地图片段上绘制了 2 个 GeoPoints,我使用 SupportMapFragment,即这个库 com.google.android.gms.maps.SupportMapFragment
我想要做的是,我想绘制从上面的 getDistance 函数获得的路线,它以 JSON 格式输出我可以轻松处理的数据。
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,
"text": "0.4 mi"
},
"end_location": {
"lng": -2.19615,
"lat": 53.43027000000001
},
"polyline": {
"points": "ssceIpqkL`GtA`B`@xCt@z@Th@H|EnAjFlA"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.19433,
"lat": 53.43562000000001
}
},
{
"html_instructions": "Take the 2nd <b>left</b> onto <b>Watford Rd</b>",
"duration": {
"value": 12,
"text": "1 min"
},
"distance": {
"value": 83,
"text": "272 ft"
},
"end_location": {
"lng": -2.19492,
"lat": 53.4301
},
"polyline": {
"points": "erbeI||kL`@uF"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.19615,
"lat": 53.43027000000001
}
},
{
"html_instructions": "Turn <b>left</b> onto <b>Eastern Cir</b>",
"duration": {
"value": 20,
"text": "1 min"
},
"distance": {
"value": 65,
"text": "213 ft"
},
"end_location": {
"lng": -2.19415,
"lat": 53.43037
},
"polyline": {
"points": "cqbeIfukLWWIMKUG_@AU@g@"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.19492,
"lat": 53.4301
}
},
{
"html_instructions": "Take the 2nd <b>left</b> onto <b>Ealing Pl</b>",
"duration": {
"value": 13,
"text": "1 min"
},
"distance": {
"value": 16,
"text": "52 ft"
},
"end_location": {
"lng": -2.19414,
"lat": 53.43052
},
"polyline": {
"points": "yrbeIlpkL]A"
},
"travel_mode": "DRIVING",
"start_location": {
"lng": -2.19415,
"lat": 53.43037
}
}
]
}
],
"warnings": [],
"overview_polyline": {
"points": "ctfeIh|yLxDqHp@uAHYB_@E{EGgJQwSOoIbAVp@?TIXKhAy@`@MfCA`GKhB?jGM`HKC{ILyUHaHVoNFaH?cIIw@?i@EeFc@mVq@qWSsICcHPwEFgBF[~@gVLgDx@cTx@_U@wAFuBH}A\\{C`@qCLkAFoAF{BBoLFwW@oHDcECqAK_@CCCM?G@E@GDEBAYiEC?CACCEGEICMAMD[BKFGFCHAFBDDDF@Fd@X^VZHNF~An@~@\\|GjCvG~BjFdB\\aCFw@ZgDPmDTsROgAGyCBYL{@L}@BaAFyCHuENoBd@_GF{@`GtAzFvAdB^|EnAjFlA`@uFWWUc@Iu@@g@]A"
},
"copyrights": "Map data ©2013 Google"
}
]
}
请帮忙,我真的在这里迷路了。