首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Distance Api Android

Google Distance Api Android
EN

Stack Overflow用户
提问于 2015-02-21 19:25:24
回答 1查看 125关注 0票数 0

哈罗!我有个问题!

我有权限使用下面的代码吗?我想计算两个GPS坐标之间的距离。

你说呢?

代码语言:javascript
复制
public class ApiDirectionsAsyncTask extends AsyncTask<Double,Double,Double>
{

    double lat1, lng1, lat2,  lng2;


    ApiDirectionsAsyncTask(double lat1, double lng1, double lat2, double lng2)
    {
        this.lat1 = lat1;
        this.lng1 = lng1;
        this.lat2 = lat2;
        this.lng2 = lng2;
    }


    @Override
    protected Double doInBackground(Double... params) {
        StringBuilder stringBuilder = new StringBuilder();
        Double dist = 0.0;
        try {
            String url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + lat1 + "," + lng1 + "&destination=" + lat2 +","+lng2 + "&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;
    }

    @Override
    protected void onPostExecute(Double aDouble) {
        super.onPostExecute(aDouble);

    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-09-01 17:44:37

在你的main方法中

代码语言:javascript
复制
ApiDirectionsAsyncTask  task = new ApiDirectionsAsyncTask();
task.execute();

像这样修改你的代码

代码语言:javascript
复制
public class ApiDirectionsAsyncTask extends AsyncTask<String, Integer, String> {

    private static final String DIRECTIONS_API_BASE = "http://maps.googleapis.com/maps/api/distancematrix/json";

    @Override
    protected String doInBackground(String... params) {
        StringBuilder stringBuilder = new StringBuilder();
        String dist = "0 km";
        try {
            StringBuilder sb = new StringBuilder(DIRECTIONS_API_BASE);
            sb.append("?origins=" + params[0]);
            sb.append("&destinations=" + params[1]);

            HttpPost httppost = new HttpPost(sb.toString());

            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;
        try {

            jsonObject = new JSONObject(stringBuilder.toString());
            dist = String.valueOf( jsonObject.getJSONArray("rows").getJSONObject(0).getJSONArray("elements").getJSONObject(0).getJSONObject("distance").get("text")) ;

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return String.valueOf(dist);
    }


    @Override
    protected void onPostExecute(String s) {

        super.onPostExecute(s);
        Log.i("Dis", s);
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28645201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档