Cálculo del área de polígono usando latitud y longitud

Estoy usando una solución que encontré en esta publicación:Cálculo del área de polígono utilizando latitud y longitud generadas a partir del espacio cartesiano y un archivo mundial

Hay algo mal porque los valores que obtengo no son reales. Por ejemplo, sabemos que un campo de fútbol debe tener alrededor de 5,300.00 metros cuadrados, ¿verdad? pero el cálculo está dando 5,759,154.21.

Este es el código:

    private static double CalculatePolygonArea(IList<Position> coordinates)
    {
        double area = 0;

        if (coordinates.Count > 2)
        {
            for (var i = 0; i < coordinates.Count - 1; i++)
            {
                Position p1 = coordinates[i];
                Position p2 = coordinates[i + 1];
                area += (ConvertToRadian(p2.Longitude) - ConvertToRadian(p1.Longitude)) * (2 + Math.Sin(ConvertToRadian(p1.Latitude)) + Math.Sin(ConvertToRadian(p2.Latitude)));
            }

            area = area * 6378137 * 6378137 / 2;
        }

        return Math.Abs(area);
    }

    private static double ConvertToRadian(double input)
    {
        return input * Math.PI / 180;
    }

¿Qué puede estar mal aquí? ¿Alguna ayuda?

Respuestas a la pregunta(1)

Su respuesta a la pregunta