Today I will show you, how simple distance calculation with Xamarin.Forms works. All you need are 2 GPS coordinates, called Location in Xamarin.Forms. The first class calculates the distance between two locations. The second one calculates the total distance between a list of locations.
private static double DegreesToRadians(double degrees) { return degrees * Math.PI / 180.0; } public static double CalculateDistance(Location location1, Location location2) { double circumference = 40000.0; // Earth's circumference at the equator in km double distance = 0.0; //Calculate radians double latitude1Rad = DegreesToRadians(location1.Latitude); double longitude1Rad = DegreesToRadians(location1.Longitude); double latititude2Rad = DegreesToRadians(location2.Latitude); double longitude2Rad = DegreesToRadians(location2.Longitude); double logitudeDiff = Math.Abs(longitude1Rad - longitude2Rad); if (logitudeDiff > Math.PI) { logitudeDiff = 2.0 * Math.PI - logitudeDiff; } double angleCalculation = Math.Acos( Math.Sin(latititude2Rad) * Math.Sin(latitude1Rad) + Math.Cos(latititude2Rad) * Math.Cos(latitude1Rad) * Math.Cos(logitudeDiff)); distance = circumference * angleCalculation / (2.0 * Math.PI); return distance; } public static double CalculateDistance(params Location[] locations) { double totalDistance = 0.0; for (int i = 0; i < locations.Length - 1; i++) { Location current = locations[i]; Location next = locations[i + 1]; totalDistance += CalculateDistance(current, next); } return totalDistance; }