Android - 沿着街道的2个位置之间的距离和时间

时间:2016-08-10 07:40:08

标签: android google-maps location

我正在开发一个简单的公共交通应用程序,包括公共汽车和停靠站。 公共汽车没有GPS。每个公共汽车站都是类型位置的对象。

我如何规划沿街道的每辆公共汽车的路线,这些路线是否符合道路标志(两个公共汽车站之间的距离)以及如何步行前往公交车站?

因为使用

 location1.distanceBetweenTo(location2)

在乌鸦飞过时返回距离。

是否可以在2个位置(公共汽车站)之间有时间?因为公共汽车公司没有每个站点和时间的计划,但从出发站和到站站点的仿制时间。

我已经创建了地图,在谷歌控制台上获取了api密钥,我想每个巴士站都可以用标记表示。

- 编辑 -

这段代码似乎有效但是如何创建结果?

final JSONObject json = new JSONObject(result);
JSONArray routeArray = json.getJSONArray("routes");
JSONObject routes = routeArray.getJSONObject(0);

JSONArray newTempARr = routes.getJSONArray("legs");
JSONObject newDisTimeOb = newTempARr.getJSONObject(0);

JSONObject distOb = newDisTimeOb.getJSONObject("distance");
JSONObject timeOb = newDisTimeOb.getJSONObject("duration");

Log.i("Distance :", distOb.getString("text"));
Log.i("Time :", timeOb.getString("text"));

我使用了一些jsonParser,但没有任何效果。如何从纬度和经度开始创建它?

我已经尝试过这种方式了。

String url =" https://maps.googleapis.com/maps/api/directions/json?origin=41.221298,16.286054&destination=41.217956,16.2988407&key="my api key"

此字符串传递给

 private String getResponseText(String stringUrl) throws IOException
     {
    StringBuilder response  = new StringBuilder();

    URL url = new URL(stringUrl);
    HttpURLConnection httpconn = (HttpURLConnection)url.openConnection();
    if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK)
    {
        BufferedReader input = new BufferedReader(new InputStreamReader(httpconn.getInputStream()),8192);
        String strLine = null;
        while ((strLine = input.readLine()) != null)
        {
            response.append(strLine);
        }
        input.close();
    }
    return response.toString();
}

但没有任何改变。

1 个答案:

答案 0 :(得分:1)

这种从url获取Json的方法适用于我

public JSONObject getJson(String url) {
    String responce = null;
    HttpURLConnection conn = null;
    try {
        URL jUrl = new URL(url);
        conn = (HttpURLConnection)jUrl.openConnection();
        InputStream is = (InputStream)conn.getContent();
        java.util.Scanner scanner = new java.util.Scanner(is).useDelimiter("\\A"); 
        responce = scanner.hasNext() ? scanner.next() : "";
        //log.debug( " responce " + responce);
        return new JSONObject(responce);
    } catch (IOException ex){
        String errTxt = "Internet access failure";
        if (conn != null && (ex instanceof java.io.FileNotFoundException))
            try{
                // Read the first line of err message the site possibly returned. Kind of
                // {"cod":401,"message":"Invalid API key. Please see http://openweathermap.org/faq#error401 for more info."}
                errTxt = (new BufferedReader(new InputStreamReader(conn.getErrorStream())))
                        .readLine();
                if (errTxt == null)
                    errTxt ="(Server provided no ErrorStream)";
            } catch (Exception ex2){
                log.error(errTxt + " when retrieving ErrorStream", ex2);
            }
        log.error(errTxt, ex);
    } catch (JSONException ex) {
        log.error("Invalid responce from " + url, ex);
    } catch (Exception ex){
        log.error("Failed to get responce from " + url, ex);
    }
    finally {
        if (conn != null)
            conn.disconnect();
    }
    return null;
}