如何通过两个地点的经纬度算出它们之间的直线距离?

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章