问题补充说明:为啥我用下面的公式计算出的距离和在地图上量的距离相差几倍??下面的公式里的λA和ΦA,λB和ΦB,用的是啥格式呀??地球赤道上环绕地球一周走一圈共 40075.04公里, 而@一圈分成360°,而每1°(度)有60', 每一度一秒在赤道上的长度计算如下: 40075.04km/360°=111.31955km 111.31955km/60'=1.8553258km=1855.3m 而每一分又有60秒, 每一秒就代表 1855.3m/60=30.92m 任意两点距离计算公式为 d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB—λA)]} 其中A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离。
从googlemaps的脚本里扒了段代码,没准啥时会用上。大家一块看看是怎么算的。
privateconstdoubleEARTH_RADIUS=6378.137;
pr来自ivatestaticdoublerad(doubled)
{
returnd*Math.PI/180.0;
}
publicstaticdoubleGetDistance(doublelat1,doublelng1,doublelat2,doublelng2)
{
doubleradLat1=rad(lat1);
doubleradLat2=rad(lat2360问答);
doublea=radLat1-radLat2;
doubleb=rad(lng1)-rad(lng2严);
doubles=2*Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2称道艺件宣),2)+
Math.Cos(radLat1)*Math.C妈纸湖担汉终拉委较亚os(radLat2)*Math.Pow(Math.Sin(b/2),2)));
s=s*EARTH_RADIUS;
s=Math.Round(探罗仅都防建频五s*10000)/1皇次另级0000;
returns;
}
标签:经纬度,距离,计算