[英]How to parse Directions API Response from my middleware in android?
[英]How to parse “steps” from the google directions API to java (android)
我是一個完整的初學者,尤其是談到JSON解析時。
我一直在使用谷歌路線圖API來制作一個基本的導航應用,該應用可以從兩個位置繪制路線,這一切都很棒。 但是,嘗試了幾個小時從API解析“步驟”之后,我仍然無法使其正常工作。
我已使用此示例https://github.com/hiepxuan2008/GoogleMapDirectionSimple解析JSON來繪制路線。
這在下面的代碼中完成。 (在github“ Directionfinder.java”上的完整代碼)
private void parseJSon(String data) throws JSONException {
if (data == null)
return;
List<Route> routes = new ArrayList<Route>();
JSONObject jsonData = new JSONObject(data);
JSONArray jsonRoutes = jsonData.getJSONArray("routes");
for (int i = 0; i < jsonRoutes.length(); i++) {
JSONObject jsonRoute = jsonRoutes.getJSONObject(i);
Route route = new Route();
JSONObject overview_polylineJson = jsonRoute.getJSONObject("overview_polyline");
JSONArray jsonLegs = jsonRoute.getJSONArray("legs");
JSONObject jsonLeg = jsonLegs.getJSONObject(0);
JSONObject jsonDistance = jsonLeg.getJSONObject("distance");
JSONObject jsonDuration = jsonLeg.getJSONObject("duration");
JSONObject jsonEndLocation = jsonLeg.getJSONObject("end_location");
JSONObject jsonStartLocation = jsonLeg.getJSONObject("start_location");
route.distance = new Distance(jsonDistance.getString("text"), jsonDistance.getInt("value"));
route.duration = new Duration(jsonDuration.getString("text"), jsonDuration.getInt("value"));
route.endAddress = jsonLeg.getString("end_address");
route.startAddress = jsonLeg.getString("start_address");
route.startLocation = new LatLng(jsonStartLocation.getDouble("lat"), jsonStartLocation.getDouble("lng"));
route.endLocation = new LatLng(jsonEndLocation.getDouble("lat"), jsonEndLocation.getDouble("lng"));
route.points = decodePolyLine(overview_polylineJson.getString("points"));
routes.add(route);
}
listener.onDirectionFinderSuccess(routes);
}
以下是JSON通常的外觀。 http://pastebin.com/czYkBWWU
我需要解析“操縱”,“起點位置”,“距離”,“起點位置”以及給定路線每一步的位置。
解析它似乎很容易,但是我不知道如何。
任何幫助將不勝感激!
這是完整的代碼。 我在我的設備上運行它並獲得成功結果。 如果您遇到問題,請告訴我。
try {
List<Route> routes=new ArrayList<Route>();
JSONObject mainJSON=new JSONObject(jsonJ);
JSONArray jarray1=mainJSON.getJSONArray("routes");
JSONObject jobj1=jarray1.getJSONObject(0);
JSONArray jarray2=jobj1.getJSONArray("legs");
JSONObject jobj2=jarray2.getJSONObject(0);
JSONArray stepArray=jobj2.getJSONArray("steps");
for (int i=0;i<stepArray.length();i++){
Route route=new Route();
JSONObject jobj5=stepArray.getJSONObject(i);
JSONObject disOBJ=jobj5.getJSONObject("distance");
JSONObject durOBJ=jobj5.getJSONObject("duration");
JSONObject endOBJ=jobj5.getJSONObject("end_location");
JSONObject polOBJ=jobj5.getJSONObject("polyline");
JSONObject startOBJ=jobj5.getJSONObject("start_location");
route.startAddress=jobj2.getString("start_address");
route.endAddress=jobj2.getString("end_address");
if (jobj5.has("maneuver")){
route.maneuver=new Maneuver(jobj5.getString("maneuver"));
}
route.distance=new Distance(disOBJ.getString("text"),disOBJ.getString("value"));
route.duration=new Duration(durOBJ.getString("text"),durOBJ.getString("value"));
route.startLocation=new LatLng(startOBJ.getDouble("lat"),startOBJ.getDouble("lng"));
route.endLocation=new LatLng(endOBJ.getDouble("lat"),endOBJ.getDouble("lng"));
route.points=decodePoluLine(polOBJ.getString("points"));
routes.add(route);
}
} catch (JSONException e) {
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.