Google maps 使用纬度和经度计算多边形的面积

Google maps 使用纬度和经度计算多边形的面积,google-maps,polygon,latitude-longitude,area,Google Maps,Polygon,Latitude Longitude,Area,我有这样的代码,用这个:和这个: 公共静态双计算多边形区域(IList坐标) { 双面积=0; 如果(坐标数>2) { 对于(变量i=0;i

我有这样的代码,用这个:和这个:

公共静态双计算多边形区域(IList坐标)
{
双面积=0;
如果(坐标数>2)
{
对于(变量i=0;i
以下是我的测试代码:

[Fact]
    public void GpsPolygonAreaTest()
    {
        var poly = new List<GpsLocation>();
        var p1 = new GpsLocation(0, 0);
        poly.Add(p1);
        var p2 = GpsHelper.CreateLocationBasedOnBearingDistance(p1, 5, 100);
        poly.Add(p2);
        var p3 = GpsHelper.CreateLocationBasedOnBearingDistance(p2, 95, 100);
        poly.Add(p3);
        var p4 = GpsHelper.CreateLocationBasedOnBearingDistance(p3, 185, 100);
        poly.Add(p4);
        poly.Add(p1);

        var area = GpsHelper.CalculatePolygonArea(poly);

        area.Should().Be(10000);
    }
[事实]
public void GpsPolygonAreaTest()
{
var poly=新列表();
var p1=新的GpsLocation(0,0);
poly.Add(p1);
var p2=GpsHelper.CreateLocationBasedOnBearingDistance(p1,5100);
poly.Add(p2);
var p3=GpsHelper.CreateLocationBasedOnBearingDistance(p2,95,100);
poly.Add(p3);
var p4=GpsHelper.CreateLocationBasedOnBearingDistance(P3185100);
poly.Add(p4);
poly.Add(p1);
var面积=GpsHelper.CalculatePolygonArea(多边形);
面积应为(10000);
}
我确认我的多边形是100mx100m,请参见图片:

我的测试结果是:预期值为10000,但发现1.28153883377486E+48


你知道我的代码有什么问题吗?

我很肯定这句话:

area = area * R * R / 2;
应该放置在顶点上的循环之后,而不是在每次迭代中重复

area = area * R * R / 2;