代码拉取完成,页面将自动刷新
// main.c
// Distance
// gcc location2distance.c -lm
//
#include <stdio.h>
#include <math.h>
#define PI 3.1415926
#define EARTH_RADIUS 6378137 // 地球近似半径 m
double radian(double d);
double get_distance(double lat1, double lng1, double lat2, double lng2);
// 求弧度
double radian(double d)
{
return d * PI / 180.0; //角度1˚ = π / 180
}
//计算距离
double get_distance(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = radian(lat1);
double radLat2 = radian(lat2);
double a = radLat1 - radLat2;
double b = radian(lng1) - radian(lng2);
double dst = 2 * asin((sqrt(pow(sin(a / 2), 2) + cos(radLat1) * cos(radLat2) * pow(sin(b / 2), 2))));
dst = dst * EARTH_RADIUS;
dst = round(dst * 10000) / 10000;
return dst;
}
int main(int argc, const char* argv[])
{
double localtion1[] = { 22.562283, 113.942343 }; // 纬度1, 经度1
double localtion2[] = { 22.562274, 113.943067 }; // 纬度2, 经度2
double dst = get_distance(localtion1[0], localtion1[1], localtion2[0], localtion2[1]);
printf("dst = %f m\n", dst); // 74.433500 m
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。