Xamarin.Forms : Calculate distance between locations

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;
        }