为了账号安全,请及时绑定邮箱和手机立即绑定

获取谷歌地图中折线的长度

获取谷歌地图中折线的长度

呼唤远方 2021-09-15 10:40:58
我的主要目标是获得两点之间的距离。我正在尝试计算折线起点/终点之间的距离(以英里为单位)。使用下面的代码,我能够绘制多段线。但是,我不知道如何获得这条折线的总距离。private String getDirectionsUrl(LatLng origin,LatLng dest){    // Origin of route    String str_origin = "origin="+origin.latitude+","+origin.longitude;    // Destination of route    String str_dest = "destination="+dest.latitude+","+dest.longitude;    // Sensor enabled    String sensor = "sensor=false";    // Building the parameters to the web service    String parameters = str_origin+"&"+str_dest+"&"+sensor;    // Output format    String output = "json";    // Building the url to the web service    String url = "https://maps.googleapis.com/maps/api/directions/"+output+"?"+parameters;    return url;}private String downloadUrl(String strUrl) throws IOException{    String data = "";    InputStream iStream = null;    HttpURLConnection urlConnection = null;    try{        URL url = new URL(strUrl);        // Creating an http connection to communicate with url        urlConnection = (HttpURLConnection) url.openConnection();        // Connecting to url        urlConnection.connect();        // Reading data from url        iStream = urlConnection.getInputStream();        BufferedReader br = new BufferedReader(new InputStreamReader(iStream));        StringBuffer sb = new StringBuffer();        String line = "";        while( ( line = br.readLine()) != null){            sb.append(line);        }        data = sb.toString();        br.close();    }catch(Exception e){        Log.d("trDraw", e.toString());    }finally{        iStream.close();        urlConnection.disconnect();    }    return data;}由于我试图用折线计算两点的距离,因此使用distanceOf(Location1, Location2);可以给我最短距离的函数对我来说是无用的。由于我使用的是折线,所以这种方法根本行不通。
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

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

            JSONObject routes = array.getJSONObject(0);

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

            JSONObject steps = legs.getJSONObject(0);

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


            Log.i("trJSON", "Distance String: " + distanceD.toString());

            Double dist = Double.parseDouble(distanceD.getString("text").replaceAll("[^\\.0123456789]","") );

            Log.i("trJSON", "Distance Double: " + dist);

通过使用legs.getJSONObject(0),我可以从 获得距离或持续时间steps。因此,在获得以英里为单位的距离字符串后,我只需将其转换为Double.


查看完整回答
反对 回复 2021-09-15
?
PIPIONE

TA贡献1829条经验 获得超9个赞

@grant,所以 .forEach 会帮助你:)


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信