How To Get Total Distance And Duration Between Two Location Along With Waypoint In Google Map
i want to get total duration and distance between two location along with waypoints. the methodwhich i'm using is giving me distance and duration but without waypoints. so can any
Solution 1:
publicvoidparseJson(JSONObject jObject) {
List<List<HashMap<String, String>>> routes = newArrayList<>();
JSONArray jRoutes;
JSONArray jLegs;
JSONArray jSteps;
JSONObject jDistance = null;
JSONObject jDuration = null;
long totalDistance = 0;
int totalSeconds = 0;
try {
jRoutes = jObject.getJSONArray("routes");
/* Traversing all routes */for (int i = 0; i < jRoutes.length(); i++) {
jLegs = ((JSONObject) jRoutes.get(i)).getJSONArray("legs");
/* Traversing all legs */for (int j = 0; j < jLegs.length(); j++) {
jDistance = ((JSONObject) jLegs.get(j)).getJSONObject("distance");
totalDistance = totalDistance + Long.parseLong(jDistance.getString("value"));
/** Getting duration from the json data */
jDuration = ((JSONObject) jLegs.get(j)).getJSONObject("duration");
totalSeconds = totalSeconds + Integer.parseInt(jDuration.getString("value"));
}
}
double dist = totalDistance / 1000.0;
Log.d("distance", "Calculated distance:" + dist);
int days = totalSeconds / 86400;
int hours = (totalSeconds - days * 86400) / 3600;
int minutes = (totalSeconds - days * 86400 - hours * 3600) / 60;
int seconds = totalSeconds - days * 86400 - hours * 3600 - minutes * 60;
Log.d("duration", days + " days " + hours + " hours " + minutes + " mins" + seconds + " seconds");
} catch (JSONException e) {
e.printStackTrace();
}
}
JSONObject jObject = new JSONObject(result);
parseJson(jObject);
Solution 2:
Try below code to draw way point on Map Fragment and ArrayList points = which you get from api response points arrayList
PolylineOptions rectOptions = new PolylineOptions();
LatLng polLatLng = null;
if (points.size() > 0) {
ArrayList<LatLng> pathPoint = new ArrayList<LatLng>();
for (int k = 0; k < points.size(); k++) {
double polLat = points.get(k).latitude;
double polLng = points.get(k).longitude;
pathPoint.add(new LatLng(polLat, polLng));
polLatLng = new LatLng(polLat, polLng);
}
double startLatitude = points.get(0).latitude;
double startLongitude = points.get(0).longitude;
double endLatitude = points.get(points.size() - 1).latitude;
double endLongitude = points.get(points.size() - 1).longitude;
LatLng start = new LatLng(startLatitude, startLongitude);
LatLng end = new LatLng(endLatitude, endLongitude);
mMap.addMarker(new MarkerOptions().position(start).title("start"));
mMap.addMarker(new MarkerOptions().position(end).title("end"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(polLatLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(10));
rectOptions.addAll(pathPoint);
rectOptions.width(10);
rectOptions.color(Color.BLUE);
mMap.addPolyline(rectOptions);
mMap is the object of GoogleMap.
Solution 3:
This method will help you to get the distance from two points
Location.distanceBetween(double startLatitude, double startLongitude
,double endLatitude, double endLongitude, float[] results);
Post a Comment for "How To Get Total Distance And Duration Between Two Location Along With Waypoint In Google Map"