|
楼主 |
发表于 2010-9-17 11:00:42
|
显示全部楼层
回复【6楼】7930435
-----------------------------------------------------------------------
我的也是从网上找的,拷出来大家看下吧
希望能有点小用处
//计算弧度
double rad(double d)
{
const double pi = 3.1415926535898;
return d * pi/ 180.0;
}
//从两个gps坐标点(经纬度)获得两点的直线距离,单位是米
int CalcDistance(float fLati1, float fLong1, float fLati2, float fLong2)
{
double s = 0,lambda1=0,lambda2=0,phi1=0,phi2=0,x1=0,x2=0,y1=0,y2=0,z1=0,z2=0,A=0,tmp;
int distance = 0;
const float EARTH_RADIUS = 6378.137;
phi1 = rad(fLati1);
lambda1 = rad(fLong1);
phi2 = rad(fLati2);
lambda2 = rad(fLong2);
x1 = cos(phi1)*cos(lambda1);
y1 = cos(phi1)*sin(lambda1);
z1 = sin(phi1);
x2 = cos(phi2)*cos(lambda2);
y2 = cos(phi2)*sin(lambda2);
z2 = sin(phi2);
tmp=(x1*x2+y1*y2+z1*z2);
A = acos(tmp);
s = A*EARTH_RADIUS;
distance = (int)(s * 1000);
return distance;
} |
|