Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2012
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.43 KB | None | 0 0
  1. public static class GeoCodeCalc
  2.     {
  3.         public const double EarthRadiusInMiles = 3956.0;
  4.         public const double EarthRadiusInKilometers = 6367.0;
  5.         public static double ToRadian(double val) { return val * (Math.PI / 180); }
  6.         public static double DiffRadian(double val1, double val2) { return ToRadian(val2) - ToRadian(val1); }
  7.         /// <summary>
  8.         /// Calculate the distance between two geocodes. Defaults to using Miles.
  9.         /// </summary>
  10.         public static double CalcDistance(double lat1, double lng1, double lat2, double lng2)
  11.         {
  12.             return CalcDistance(lat1, lng1, lat2, lng2, GeoCodeCalcMeasurement.Miles);
  13.         }
  14.         /// <summary>
  15.         /// Calculate the distance between two geocodes.
  16.         /// </summary>
  17.         public static double CalcDistance(double lat1, double lng1, double lat2, double lng2, GeoCodeCalcMeasurement m)
  18.         {
  19.             double radius = GeoCodeCalc.EarthRadiusInMiles;
  20.             if (m == GeoCodeCalcMeasurement.Kilometers) { radius = GeoCodeCalc.EarthRadiusInKilometers; }
  21.             return radius * 2 * Math.Asin(Math.Min(1, Math.Sqrt((Math.Pow(Math.Sin((DiffRadian(lat1, lat2)) / 2.0), 2.0) + Math.Cos(ToRadian(lat1)) * Math.Cos(ToRadian(lat2)) * Math.Pow(Math.Sin((DiffRadian(lng1, lng2)) / 2.0), 2.0)))));
  22.         }
  23.     }
  24.     public enum GeoCodeCalcMeasurement : int
  25.     {
  26.         Miles = 0,
  27.         Kilometers = 1
  28.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement