根据坐标数组计算中心点

/// <summary>
/// 计算地图中心点
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
private string GetCenterByList(List<BmapPo> list)
{
var result = string.Empty;
var total = list.Count;
double X = 0;
double Y = 0;
double Z = 0;

foreach (BmapPo po in list)
{
var lng = Convert.ToDouble(po.x)*Math.PI/180;
var lat = Convert.ToDouble(po.y)*Math.PI/180;
double x, y, z;
x = Math.Cos(lat)*Math.Cos(lng);
y = Math.Cos(lat)*Math.Sin(lng);
z = Math.Sin(lat);
X += x;
Y += y;
Z += z;
}
X = X/total;
Y = Y/total;
Z = Z/total;

var Lng = Math.Atan2(Y, X);
var Hyp = Math.Sqrt(X*X + Y*Y);
var Lat = Math.Atan2(Z, Hyp);
result = Lng*180/Math.PI + "," + Lat*180/Math.PI;
return result;
}

 

传入坐标数组  输出以逗号分隔的中心点经纬度

转载于:https://www.cnblogs.com/eryang/p/5531650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值