Code如下:
参数含义:
lat1:A点的纬度值
lng1:A点的经度值
lat2:B点的纬度值
lng2:B点的经度值
#define _USE_MATH_DEFINES
#define EARTH_RADIUS 6378137.0 /* 地球半径 单位:米 */
#include <math.h>
double get_great_circle_distance(double lat1, double lng1, double lat2, double lng2)
{
double radlat1 = lat1 * M_PI / 180.0;
double radlat2 = lat2 * M_PI / 180.0;
double radlng1 = lng1 * M_PI / 180.0;
double radlng2 = lng2 * M_PI / 180.0;
double a = radlat1 - radlat2;
double b = radlng1 - radlng2;
double s = 2 * asin(sqrt( pow(sin(a / 2), 2) + cos(radlat1) * cos(radlat2) * pow(sin(b / 2), 2) ));
s = s * EARTH_RADIUS;
s = floor(s * 10000 + 0.5) / 10000.0;
return s;
}