首页 > 解决方案 > 使用androidstudio中的纬度和经度从谷歌自动完成中选择的两点之间的距离和持续时间

问题描述

我正在尝试获取点之间的距离,因为这些地方没有路线名称,所以它不起作用。

这是我正在使用的代码

 private void getPrice(String mLocation, String mDestination) {
     String requestUrl= null;
     try {
         requestUrl = "https://maps.googleapis.com/maps/api/directions/json?"
           + "mode=driving&"
           +"transit_routing_preference=less_driving&"
           + "origin="+mLocation+"&"
           +"destination="+mDestination+"&"
           +"key="+getResources().getString(R.string.google_browser_key);
         Log.e("LINK",requestUrl);
         mService.getPath(requestUrl).enqueue(new Callback<String>() {
             @Override public void onResponse(Call<String> call, Response<String> response) {
                 try {
                     JSONObject jsonObject = new JSONObject(response.body().toString());
                     JSONArray routes = jsonObject.getJSONArray("routes");
                     JSONObject object = routes.getJSONObject(0);
                     JSONArray legs = object.getJSONArray("legs");

                     JSONObject legsObject = legs.getJSONObject(0);

                     JSONObject distance = legsObject.getJSONObject("distance");
                     String distance_text = distance.getString("text");

                     Double distance_value = Double.parseDouble(distance_text.replaceAll("[^0-9\\\\.]+",""));

                     JSONObject time = legsObject.getJSONObject("duration");
                     String time_text = time.getString("text");
                     Integer time_value = Integer.parseInt(time_text.replaceAll("\\D+",""));

                     String final_calculate = String.format("%s + %s = $%.2f",distance_text,time_text,
                       Common.getPrice(distance_value,time_value));

                     txtCalculate.setText(final_calculate);

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

             @Override
             public void onFailure(Call<String> call, Throwable t) {
                 Log.e("ERROR",t.getMessage());
             }
         });
     }
     catch (Exception ex) {
         ex.printStackTrace();
     }
 }

标签: javascriptjsongoogle-mapsandroid-studiodistance

解决方案


推荐阅读