【发布时间】:2015-03-06 12:13:12
【问题描述】:
您好,我在 logcat 中收到以下错误,但不知道是什么问题:
(我已经添加了日志语句)
D/loop!﹕ rows
D/loop!﹕ elements
W/System.err﹕ org.json.JSONException: No value for distance
W/System.err﹕ at org.json.JSONObject.get(JSONObject.java:355)
W/System.err﹕ at org.json.JSONObject.getJSONObject(JSONObject.java:574)
W/System.err﹕ at info.tabsswipe.Results.getDistance(Results.java:279)
这是我的代码:
字符串距离 = getDistance(currentlatitude, currentlongitude, Double.parseDouble(latitude), Double.parseDouble(longitude));
然后
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;
}
感谢您的帮助!
【问题讨论】:
-
好吧,一定要在函数中添加一些日志语句,以确保它实际上按设计运行。我会测试我的 http 响应,确保它们是我想要的值。在我看来,嵌套 for 循环中的“return getdistance”正在造成麻烦。确保您的逻辑没有错误。
标签: android json google-maps google-api distance