您的位置首页百科问答

经纬度计算距离

问题补充说明:为啥我用下面的公式计算出的距离和在地图上量的距离相差几倍??下面的公式里的λ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;

privatestaticdoublerad(doubled360问答)

{

returnd*Math.PI/180.0;

}

publicsta装油进班ticdoubleGetDistance(doublelat1,doublelng1,doublelat2,doublelng2)

{

doubleradLat1=rad(lat1);

doubleradLat2=rad(lat2);

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(Mat推福似父路际第突女h.Sin(b/2),2)));

s=s*EARTH_RADIUS;

s=Math.Round(s*10000)/10000;

returns;

}