在Android中与Google Direction API保持距离

Bre*_*ode 6 android distance google-directions-api

http://maps.googleapis.com/maps/api/directions/json?origin=-20.291825,57.448668&destination=-20.179724,57.613463&sensor=false&mode=%22DRIVING%22

例如,此链接生成以下内容:

"routes" : [
      {
         "bounds" : {
            "northeast" : {
               "lat" : -20.1765204,
               "lng" : 57.6137001
            },
           "southwest" : {
               "lat" : -20.2921672,
               "lng" : 57.4472155
            }
         },
         "copyrights" : "Map data ©2014 Google",
         "legs" : [
            {
               "distance" : {
                  "text" : "24.6 km",
                  "value" : 24628
               },
Run Code Online (Sandbox Code Playgroud)

我想只提取距离并在android中显示它

Pre*_*rem 9

要与Google地图保持距离,您可以使用Google Directions API和JSON解析器来检索距离值.

样本方法

private double getDistanceInfo(double lat1, double lng1, String destinationAddress) {
            StringBuilder stringBuilder = new StringBuilder();
            Double dist = 0.0;
            try {

            destinationAddress = destinationAddress.replaceAll(" ","%20");    
            String url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + latFrom + "," + lngFrom + "&destination=" + latTo + "," + lngTo + "&mode=driving&sensor=false";

            HttpPost httppost = new HttpPost(url);

            HttpClient client = new DefaultHttpClient();
            HttpResponse response;
            stringBuilder = new StringBuilder();


                response = client.execute(httppost);
                HttpEntity entity = response.getEntity();
                InputStream stream = entity.getContent();
                int b;
                while ((b = stream.read()) != -1) {
                    stringBuilder.append((char) b);
                }
            } catch (ClientProtocolException e) {
            } catch (IOException e) {
            }

            JSONObject jsonObject = new JSONObject();
            try {

                jsonObject = new JSONObject(stringBuilder.toString());

                JSONArray array = jsonObject.getJSONArray("routes");

                JSONObject routes = array.getJSONObject(0);

                JSONArray legs = routes.getJSONArray("legs");

                JSONObject steps = legs.getJSONObject(0);

                JSONObject distance = steps.getJSONObject("distance");

                Log.i("Distance", distance.toString());
                dist = Double.parseDouble(distance.getString("text").replaceAll("[^\\.0123456789]","") );

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return dist;
        }
Run Code Online (Sandbox Code Playgroud)

有关参数的详细信息以及有关可用选项的更多详细信息,请参阅此处.

https://developers.google.com/maps/documentation/directions/


小智 2

只需检查下面的链接即可。您可能会了解它并自己尝试一下。

http://about-android.blogspot.in/2010/03/sample-google-map-drive-direction.html

您也可以使用 Google 距离矩阵 API

https://developers.google.com/maps/documentation/distancematrix/