package com.tyczj.mapnavigator; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.LatLngBounds; public class Route { private ArrayList<LatLng> path = new ArrayList<LatLng>(); private ArrayList<Legs> legs = new ArrayList<Legs>(); private String totalDuration; private String totalDistance; private LatLng startLoc; private LatLng endLoc; private LatLngBounds bounds; private String startAddress; private String endAddress; public Route(JSONObject route){ parseRoute(route); } private void parseRoute(JSONObject obj3){ try{ if(!obj3.isNull("legs")){ JSONArray leg = obj3.getJSONArray("legs"); for(int i=0; i<leg.length();i++){ JSONObject obj = leg.getJSONObject(i); if(i == 0){ if(!obj.isNull("start_address")){ startAddress = obj.getString("start_address"); } if(!obj.isNull("end_address")){ endAddress = obj.getString("end_address"); } } legs.add(new Legs(obj)); } } if(!obj3.isNull("duration")){ JSONArray obj = obj3.getJSONArray("duration"); for(int i=0; i<obj.length();i++){ JSONObject obj2 = obj.getJSONObject(i); totalDuration = obj2.getString("text"); } } if(!obj3.isNull("distance")){ JSONArray obj = obj3.getJSONArray("distance"); for(int i=0; i<obj.length();i++){ JSONObject obj2 = obj.getJSONObject(i); totalDistance = obj2.getString("text"); } } if(!obj3.isNull("start_location")){ JSONArray pos = obj3.getJSONArray("start_location"); for(int i=0; i<pos.length();i++){ JSONObject obj = pos.getJSONObject(i); startLoc = new LatLng(obj.getDouble("lat"),obj.getDouble("lng")); } } if(!obj3.isNull("end_location")){ JSONObject pos = obj3.getJSONObject("end_location"); endLoc= new LatLng(pos.getDouble("lat"),pos.getDouble("lng")); } if(!obj3.isNull("bounds")){ JSONObject pos = obj3.getJSONObject("bounds"); LatLng southWest = null; LatLng northEast = null; if(!pos.isNull("southwest")){ JSONObject obj2 = pos.getJSONObject("southwest"); southWest = new LatLng(obj2.getDouble("lat"),obj2.getDouble("lng")); } if(!pos.isNull("northeast")){ JSONObject obj2 = pos.getJSONObject("northeast"); northEast = new LatLng(obj2.getDouble("lat"),obj2.getDouble("lng")); } if(southWest != null && northEast != null){ this.bounds = new LatLngBounds(southWest,northEast); } } for(Legs leg : legs){ for(Steps step : leg.getSteps()){ path.addAll(step.getSpetLinePoints()); } } }catch(JSONException e){ e.printStackTrace(); } } public String getDuration(){ return totalDuration; } public ArrayList<LatLng> getPath(){ return path; } public String getDistance(){ return totalDistance; } public String getStartAddress(){ return startAddress; } public String getEndAddress(){ return endAddress; } public ArrayList<Legs> getLegs(){ return legs; } public LatLngBounds getMapBounds(){ return bounds; } public LatLng getStartLocation(){ return startLoc; } public LatLng getEndLocation(){ return endLoc; } }