使用Android Maps API V2获取两点之间的旅行距离(步行,驾驶)的最佳方法是什么?

时间:2012-12-24 08:47:11

标签: android api maps

有Location.distanceBetween方法,但这仅适用于直线。我也研究过Google Distance Matrix API,但这似乎相当复杂,虽然它会给我提供我需要的信息。还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

据我所知,没有。距离矩阵是Google提供的唯一一项服务,可以为您提供所需的信息(汽车,步行,两点之间的自行车距离)。

用法很简单。我已经多次使用它(JSON)并且效果非常好。以下是获取距离的代码:

String sDistance = "";

            try
            {
                URL googleDMatrix = new URL("http://maps.googleapis.com/maps/api/distancematrix/json?origins="
                        + URLEncoder.encode(params[6].toString(), "UTF-8") + "&destinations="
                        + URLEncoder.encode(params[7].toString(), "UTF-8") + "&language=en-GB&sensor=false&units=imperial");
                URLConnection tc = googleDMatrix.openConnection();
                BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream()));

                String line;
                StringBuffer sb = new StringBuffer();
                // take Google's legible JSON and turn it into one big string.
                while ((line = in.readLine()) != null)
                {
                    sb.append(line);
                }

                // turn that string into a JSON object
                JSONObject main = new JSONObject(sb.toString());
                // now get the JSON array that's inside that object

                JSONArray rows_array = new JSONArray(main.getString("rows"));
                JSONObject elements_object = rows_array.getJSONObject(0);
                JSONArray elements_array = elements_object.getJSONArray("elements");
                JSONObject distance_object = elements_array.getJSONObject(0);
                JSONObject distance = distance_object.getJSONObject("distance");

                double dist = (distance.getDouble("value") / 1E3) * 0.62;

                sDistance = Double.toString(dist);
            }
            catch (Exception e)
            {
                sDistance = "0";
                e.printStackTrace();
            }

这里可能还有一些额外的东西,因为这直接来自我的项目。 params [6] params [7] 是计算距离的两点。