Skip to content

Instantly share code, notes, and snippets.

@Volcanoscar
Forked from syndarin/gist:66e418925e53593c47be
Last active August 29, 2015 14:26
Show Gist options
  • Save Volcanoscar/1f91dce66bb18baaf691 to your computer and use it in GitHub Desktop.
Save Volcanoscar/1f91dce66bb18baaf691 to your computer and use it in GitHub Desktop.
Java function to calculate distance between two geo points. More info look at http://www.kobzarev.com/programming/calculation-of-distances-between-cities-on-their-coordinates.html
package main;
public class Main {
private static double getDistanceKm(double lat1, double lon1, double lat2, double lon2){
double latRad1 = lat1 * Math.PI / 180;
double lonRad1 = lon1 * Math.PI / 180;
double latRad2 = lat2 * Math.PI / 180;
double lonRad2 = lon2 * Math.PI / 180;
double cosLat1 = Math.cos(latRad1);
double cosLat2 = Math.cos(latRad2);
double sinLat1 = Math.sin(latRad1);
double sinLat2 = Math.sin(latRad2);
double delta = Math.abs(lonRad2 - lonRad1);
double cosDelta = Math.cos(delta);
double sinDelta = Math.sin(delta);
double y = Math.sqrt(Math.pow(cosLat2 * sinDelta, 2) + Math.pow(cosLat1 * sinLat2 - sinLat1 * cosLat2 * cosDelta, 2));
double x = sinLat1 * sinLat2 + cosLat1 * cosLat2 * cosDelta;
double ad = Math.atan2(y, x);
return (ad * 6372795)/1000;
}
public static void main(String[] args){
double lat1 = 47.992986;
double lon1 = 37.900500;
double lat2 = 48.003267;
double lon2 = 37.898504;
double distance = getDistanceKm(lat1, lon1, lat2, lon2);
System.out.println(String.format("Distance - %.2f", distance));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment