Monday, February 4, 2013

Get bearing between two location using android.location.Location

android.location.Location provide bearingTo(Location dest) method the approximate initial bearing in degrees East of true North when traveling along the shortest path between this location and the given location. The shortest path is defined using the WGS84 ellipsoid. Locations that are (nearly) antipodal may produce meaningless results.

Example:
      //Get the current location
      Location startingLocation = new Location("starting point");
      startingLocation.setLatitude(myMap.getCameraPosition().target.latitude);
      startingLocation.setLongitude(myMap.getCameraPosition().target.longitude);
      
      //Get the target location
      Location endingLocation = new Location("ending point");
      endingLocation.setLatitude(<target>.latitude);
      endingLocation.setLongitude(<target>.longitude);
      
      //Find the Bearing from current location to next location
      float targetBearing = startingLocation.bearingTo(endingLocation);


1 comment:

Etienne said...

Thank you, this is very useful :-)
Would you please (in another article) give an example of using this data to display an arrow pointing to the correct direction ?
I guess this should use the compass data as well and compare them ?
Thank you for your great blog, it is always a pleasure to read your very useful articles :-)