You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
837 B
28 lines
837 B
using System;
|
|
|
|
namespace Justice.Helpers
|
|
{
|
|
public static class GeoHelper
|
|
{
|
|
public static double CalculateDistance(double lat1, double lon1, double lat2, double lon2)
|
|
{
|
|
const double EarthRadiusKm = 6371;
|
|
|
|
double dLat = DegreesToRadians(lat2 - lat1);
|
|
double dLon = DegreesToRadians(lon2 - lon1);
|
|
|
|
double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
|
|
Math.Cos(DegreesToRadians(lat1)) * Math.Cos(DegreesToRadians(lat2)) *
|
|
Math.Sin(dLon / 2) * Math.Sin(dLon / 2);
|
|
|
|
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
|
|
|
|
return EarthRadiusKm * c;
|
|
}
|
|
|
|
private static double DegreesToRadians(double degrees)
|
|
{
|
|
return degrees * Math.PI / 180;
|
|
}
|
|
}
|
|
}
|
|
|