Android Google API距离矩阵,距离没有值

Android Google API距离矩阵,距离没有值,android,json,google-maps,google-api,distance,Android,Json,Google Maps,Google Api,Distance,您好,我在日志中收到以下错误,我不知道问题出在哪里: (我添加了日志语句) 这是我的密码: 字符串距离=getDistance(currentlatitude、Current经度、Double.parseDouble(纬度)、Double.parseDouble(经度)) 然后 private String getDistance(Double lat1, Double lon1, double lat2, double lon2) { String getdistance = "";

您好,我在日志中收到以下错误,我不知道问题出在哪里:

(我添加了日志语句)

这是我的密码:

字符串距离=getDistance(currentlatitude、Current经度、Double.parseDouble(纬度)、Double.parseDouble(经度))

然后

private String getDistance(Double lat1, Double lon1, double lat2, double lon2) {

    String getdistance = "";
    String url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + Double.toString(lat1) + "," + Double.toString(lon1) + "&destinations=" + Double.toString(lat2) + "," + Double.toString(lon2) + "&mode=driving&language=en-EN&units=metric&key=somethinghere";
    HttpGet httpGet = new HttpGet(url);
    HttpClient httpClient = new DefaultHttpClient();
    HttpResponse httpResponse;

    try {
        httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        String line = EntityUtils.toString(httpEntity);

        JSONObject rootObject = new JSONObject(line);
        JSONArray rows = rootObject.getJSONArray("rows"); // Get all JSONArray rows

        for (int i = 0; i < rows.length(); i++) { // Loop over each each row
            Log.d("loop!", "rows");
            JSONObject row = rows.getJSONObject(i); // Get row object
            JSONArray elements = row.getJSONArray("elements"); // Get all elements for each row as an array
            for (int j = 0; j < elements.length(); j++) { // Iterate each element in the elements array
                Log.d("loop!", "elements");
                JSONObject element = elements.getJSONObject(j); // Get the element object
                JSONObject distance = element.getJSONObject("distance"); // Get distance sub object
                getdistance = String.valueOf(distance.getInt("value")/1000);
            }

        }

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

    return getdistance;
}
private String getDistance(双lat1、双lon1、双lat2、双lon2){
字符串getdistance=“”;
字符串url=”https://maps.googleapis.com/maps/api/distancematrix/json?origins=“+Double.toString(lat1)+”,“+Double.toString(lon1)+”和destinations=“+Double.toString(lat2)+”,“+Double.toString(lon2)+”&mode=driving&language=en&en&units=metric&key=somethinghere”;
HttpGet HttpGet=新的HttpGet(url);
HttpClient HttpClient=新的DefaultHttpClient();
HttpResponse HttpResponse;
试一试{
httpResponse=httpClient.execute(httpGet);
HttpEntity HttpEntity=httpResponse.getEntity();
String line=EntityUtils.toString(httpEntity);
JSONObject rootObject=新的JSONObject(行);
JSONArray rows=rootObject.getJSONArray(“rows”);//获取所有JSONArray行
对于(inti=0;i

谢谢你的帮助

我发现了我的问题。我把我的log语句放到输入流结果中,发现我的原始地址(GPS坐标)是0,0。因此距离没有价值

try {
            InputStream is = null;
            httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();


            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                jsonn = sb.toString();
            } catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
            }

            // try parse the string to a JSON object
            try {
                jObj = new JSONObject(jsonn);
                Log.d("results:", jsonn); //To See Results
            } catch (JSONException e) {
                Log.e("JSON Parser", "Error parsing data " + e.toString());
            }

            JSONArray rowsArray = jObj.getJSONArray("rows");
            JSONObject rows = rowsArray.getJSONObject(0);
            //JSONArray rows = rootObject.getJSONArray("rows"); // Get all JSONArray rows


            JSONArray elementsArray = rows.getJSONArray("elements"); // Get all elements for each row as an array
            JSONObject newDisTimeOb = elementsArray.getJSONObject(0);

            JSONObject distOb = newDisTimeOb.getJSONObject("distance");
            getdistance = String.valueOf(distOb.getDouble("value") / 1000);
            Log.d("Distance text&value :", distOb.getString("text") + getdistance);

        } 

当然,一定要在函数中添加一些日志语句,以确保它实际按照设计运行。我会测试我的http响应,确保它们是我想要的值。在我看来,嵌套for循环中的“return-getdistance”是造成问题的原因。确保你的逻辑没有错误。
try {
            InputStream is = null;
            httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();


            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                jsonn = sb.toString();
            } catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
            }

            // try parse the string to a JSON object
            try {
                jObj = new JSONObject(jsonn);
                Log.d("results:", jsonn); //To See Results
            } catch (JSONException e) {
                Log.e("JSON Parser", "Error parsing data " + e.toString());
            }

            JSONArray rowsArray = jObj.getJSONArray("rows");
            JSONObject rows = rowsArray.getJSONObject(0);
            //JSONArray rows = rootObject.getJSONArray("rows"); // Get all JSONArray rows


            JSONArray elementsArray = rows.getJSONArray("elements"); // Get all elements for each row as an array
            JSONObject newDisTimeOb = elementsArray.getJSONObject(0);

            JSONObject distOb = newDisTimeOb.getJSONObject("distance");
            getdistance = String.valueOf(distOb.getDouble("value") / 1000);
            Log.d("Distance text&value :", distOb.getString("text") + getdistance);

        }