经纬度和距离之间的转换

由于地球是圆形的当纬度升高.经纬度的格子会变小,距离也会变小, 这里计算可能会存在误差

// 将经纬度转换为米
double degreesToDistance(const double& degrees, const double& latitude)
{
    const double metersPerDegree = 111320;                              // 赤道上每度的米数
    double latitudeConversionFactor = std::cos(latitude * PI / 180.0);  // 转换系数,纬度越大越小
    return degrees * metersPerDegree * latitudeConversionFactor;        // 转换后的距离(米)
}

// 米 转为经纬度
double distancdToDegrees(const double& distanceInMeters, const double& latitude)
{
    // 纬度越大,转换系数会越小
    const double metersPerDegree = 111320;                                   // 赤道上每度的米数
    double latitudeConversionFactor = std::cos(latitude * PI / 180.0);       // 转换系数,纬度越大越小
    return distanceInMeters / (metersPerDegree * latitudeConversionFactor);  // 转换后的度数
}

你可能感兴趣的:(C++,算法,经纬度,距离)