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