最近在做GPS的有关处理,很多东西都没法写上来,又到周六,不写博客手痒,就把经纬度的计算距离的代码贴上来,当然这个代码我也是网上抄来的,不过加了点自己的元素,不过我觉得相对于网上的,鄙人的还是容易懂一点。因为我加了注释了哈,而且一拿过去就可以编译,可以执行,所以厚颜发上来
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

const double EARTH_RADIUS = 6378137;
const double MATHPI = 3.141592653;

static double rad(double d)
{
     unsigned int    degree;
     double    cent;
    
     degree = (unsigned int)(d/100);
     cent     = (d-degree*100)/60;
     return (degree+cent) * MATHPI / 180.0;
}

static double GetDistanceWithdrift(double lng1,double lat1,double lng2,     double lat2)
{    
     double radLat1 = rad(lat1);
     double radLat2 = rad(lat2);
     double a = radLat1 - radLat2;
     double b = rad(lng1) - rad(lng2);
     double s = 2.0*asin(sqrt(pow(sin(a/2),2)+cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
     s = s * EARTH_RADIUS;
     return s;
}
int main()
{
      //经纬度按dddmm.mmmmm格式
      //比如12002.91622=========120度02分54.97320秒(0.91622*60)
      double jd1=12002.91622;//jd1=rad(jd1);
      double wd1=3030.60666;//wd1=rad(wd1);//杭州  
      double jd2=11623.56897;//jd2=rad(jd2);
      double wd2=3954.25364;//wd2=rad(wd2);//北京
  
      double distance=0.00;
      //返回的距离单位为m
      distance=GetDistanceWithdrift(jd1,wd1,jd2,wd2);
      printf( "distance = %f\n",distance);
      return 0;
}