Zeichnen Sie auf GoogleMap SupportMapFragment eine Fahrtroute zwischen zwei GeoPoints

Das ist eine knifflige Frage, ich habe mir einen Tag lang den Kopf zerbrochen, bitte helfen Sie.

Ich verwende Google Maps Apis, um die kürzeste Fahrstrecke und ihre Routen, Punkte usw. zwischen zwei von mir bereitgestellten GeoPoints abzurufen. Siehe Code unten

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);
}

Ich zeichne auch die 2 GeoPoints auf einem Google Maps-Fragment und verwende SupportMapFragment, d. H. Diese Bibliothek com.google.android.gms.maps.SupportMapFragment

Ich möchte die Route zeichnen, die ich von der obigen Funktion getDistance erhalte. Sie gibt die Daten in JSON aus, die ich leicht handhaben kann.

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"
        }
    ]
}

Bitte helfen Sie, ich bin hier wirklich sehr, sehr verloren.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage