# Calculating Distance from GPS Coordinates

I’ve been carrying this equation around forever and a day and thought I would share it. With this equation you can calculate the distance between GPS coordinates. I tend to use SI units, but you should be able to easily adjust it for units of your choosing.

```
using System;
using System.Device.Location;

namespace J2i.Net.GPS
{
public static class DistanceCalculator
{

public const double EarthRadiusInMiles = 3956.0;
public const double EarthRadiusInKilometers = 6367.0;

public static double ToRadian(double val) { return val * (Math.PI / 180); }
public static double ToDegree(double val) { return val * 180 / Math.PI; }

public static double CalcDistance(GeoCoordinate p1, GeoCoordinate p2)
{
return CalcDistance(p1.Latitude, p1.Longitude, p2.Latitude, p2.Longitude, EarthRadiusInKilometers);
}

public static Double Bearing(GeoCoordinate p1, GeoCoordinate p2)
{
return Bearing(p1.Latitude, p1.Longitude, p2.Latitude, p2.Longitude);
}

public static double CalcDistance(double lat1, double lng1, double lat2, double lng2, double radius)
{
}

public static Double Bearing(double lat1, double lng1, double lat2, double lng2)
{
{
var dLat = lat2 - lat2;
var dLon = lng2 - lng1;
var dPhi = Math.Log(Math.Tan(lat2 / 2 + Math.PI / 4) / Math.Tan(lat1 / 2 + Math.PI / 4));
var q = (Math.Abs(dLat) > 0) ? dLat / dPhi : Math.Cos(lat1);

if (Math.Abs(dLon) > Math.PI)
{
dLon = dLon > 0 ? -(2 * Math.PI - dLon) : (2 * Math.PI + dLon);
}
//var d = Math.Sqrt(dLat * dLat + q * q * dLon * dLon) * R;
var brng = ToDegree(Math.Atan2(dLon, dPhi));
return brng;
}
}
}
}
```

This site uses Akismet to reduce spam. Learn how your comment data is processed.