以下为通过经纬度坐标值求取两点间距离的算法,计算通过c++实现,在计算过程中已考虑到地球的弧度,经验证算法正确可行,精度为0.001米。
#include "pch.h"
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
#include <iomanip>
using namespace std;
double Earth_Radius = 6378.137;
double OutDistance = 0;
double OutAzimuth = 0;
double Angle2Rad(double Angle)
{
return Angle * M_PI / 180.0;
}
double Rad2Angle(double Rad)
{
return Rad * 180.0 / M_PI;
}
/* Lat:纬度 Lng:经度 */
void GetDistance(double Lat1, double Lng1, double Lat2, double Lng2,double *P_OutDistance,double *P_OutAzimuth)
{
double RadLat1 = Angle2Rad(Lat1);
double RadLat2 = Angle2Rad(Lat2);
double RadLng1 = Angle2Rad(Lng1);
double RadLng2 = Angle2Rad(Lng2);
double Lat_Dif = RadLat1 - RadLat2;
double Lng_Dif = RadLng1 - RadLng2;
/**----------- Calculate Distance-----------**/
double Distance = 2 * a