Нарисуйте маршрут движения между 2 GeoPoints в GoogleMap SupportMapFragment
Это сложный вопрос, бьющий меня по голове целый день, пожалуйста, помогите.
Я использую Google Maps Apis, чтобы получить кратчайшее расстояние и его маршруты, точки и т. Д. Между двумя предоставляемыми мною 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 на фрагменте карт Google, я использую 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 southeast on College Rd toward Park Dr",
"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 right onto Withington Rd",
"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 left onto Wilbraham Rd/A6010",
"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 Moseley Rd/B5093Continue to follow Moseley RdGo through 1 roundabout",
"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 2nd exit onto Kingsway/A34",
"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 left onto Grangethorpe Dr",
"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 Crossley Rd",
"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 right onto Errwood Rd",
"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 left onto Watford Rd",
"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 left onto Eastern Cir",
"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 left onto Ealing Pl",
"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"
}
]
}
Пожалуйста, помогите, яЯ действительно очень потерян здесь.