Android Get And Parse Google Directions
Solution 1:
I found this example on the web I'll try to use it. polyline decoding example
private List<GeoPoint> decodePoly(String encoded) {
List<GeoPoint> poly = new ArrayList<GeoPoint>();
intindex = 0, len = encoded.length();
int lat = 0, lng = 0;
while (index < len) {
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;
shift = 0;
result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;
GeoPoint p = new GeoPoint((int) (((double) lat / 1E5) * 1E6),
(int) (((double) lng / 1E5) * 1E6));
poly.add(p);
}
return poly;
}
Solution 2:
I was also trying to use the Direction Api of Google in Android. So I made an open source project to help doing that. You can find it here:https://github.com/MathiasSeguy-Android2EE/GDirectionsApiUtils
How it works, definitly simply:
publicclassMainActivityextendsActionBarActivityimplementsDCACallBack{
/**
* Get the Google Direction between mDevice location and the touched location using the Walk
* @parampoint
*/privatevoidgetDirections(LatLng point) {
GDirectionsApiUtils.getDirection(this, startPoint, endPoint, GDirectionsApiUtils.MODE_WALKING);
}
/*
* The callback
* When the directions is built from the google server and parsed, this method is called and give you the expected direction
*/@OverridepublicvoidonDirectionLoaded(List<GDirection> directions) {
// Display the direction or use the DirectionsApiUtilsfor(GDirection direction:directions) {
Log.e("MainActivity", "onDirectionLoaded : Draw GDirections Called with path " + directions);
GDirectionsApiUtils.drawGDirection(direction, mMap);
}
}
Solution 3:
I've tweaked urobo's answer above (very slightly) to give you LatLngs which you'll want for Google Maps for Android V2:
private List<LatLng> decodePoly(String encoded) {
List<LatLng> poly = new ArrayList<LatLng>();
intindex = 0, len = encoded.length();
int lat = 0, lng = 0;
while (index < len) {
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;
shift = 0;
result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;
LatLng p = new LatLng((double) lat / 1E5, (double) lng / 1E5);
poly.add(p);
}
return poly;
}
Solution 4:
you might want to have a quick view of the route that will be created by the waypoint_polyline and the coordinate list directly. For this google have release decoding api "Interactive Polyline Encoder Utility"
You can paste the waypoint_polyline value to Encoded Polyline text field at address Interactive Polyline Encoder Utility
Post a Comment for "Android Get And Parse Google Directions"