如何通過兩個地點的經緯度算出它們之間的直線距離?

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

 

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