Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculating the distance between two latitude and longitude points in android [closed]

Tags:

How can i find the distance between two latitude & longitude points


For one of the latitude & longitude points i have it in database & another one i want to use current position of the mobile

Which one should i need to use them among below::

  • android location provider
  • Google API
  • Mathematical Calculation

note:: Any demo code sample will be useful

like image 552
Devrath Avatar asked Mar 22 '14 11:03

Devrath


People also ask

How do you find the distance between two latitude longitude points?

For this divide the values of longitude and latitude of both the points by 180/pi. The value of pi is 22/7. The value of 180/pi is approximately 57.29577951. If we want to calculate the distance between two places in miles, use the value 3, 963, which is the radius of Earth.


2 Answers

You can use the built in algorithm:

Location locationA = new Location("point A");      locationA.setLatitude(latA);  locationA.setLongitude(lngA); Location locationB = new Location("point B"); locationB.setLatitude(latB);  LocationB.setLongitude(lngB); distance = locationA.distanceTo(locationB) ; 

update: (I don't have any error with this)

LatLng latLngA = new LatLng(12.3456789,98.7654321); LatLng latLngB = new LatLng(98.7654321,12.3456789);  Location locationA = new Location("point A"); locationA.setLatitude(latLngA.latitude); locationA.setLongitude(latLngA.longitude); Location locationB = new Location("point B"); locationB.setLatitude(latLngB.latitude); locationB.setLongitude(latLngB.longitude);  double distance = locationA.distanceTo(locationB); 
like image 148
David Avatar answered Sep 19 '22 07:09

David


You can use the Haversine algorithm. Another user has already coded a solution for this:

public double CalculationByDistance(double initialLat, double initialLong,                             double finalLat, double finalLong){ int R = 6371; // km double dLat = toRadians(finalLat-initialLat); double dLon = toRadians(finalLong-initialLong); lat1 = toRadians(lat1); lat2 = toRadians(lat2);  double a = Math.sin(dLat/2) * Math.sin(dLat/2) +         Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);  double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));  return R * c; }  public double toRadians(deg) {   return deg * (Math.PI/180) } 

Source: https://stackoverflow.com/a/17787472/3449528

like image 41
Emilio Avatar answered Sep 21 '22 07:09

Emilio