GPS Objective-C Xcode アプリ開発

経度緯度の2点間の距離を計算して返す

経度と緯度を取得して2点間の距離を計算します。
MkMapViewなどの目的地までの距離を求める方法として役に立ちます。

//------------------------------------------------------------------------------
// 二点間の距離を計算する(m)
//------------------------------------------------------------------------------
-(int)locationDistance:(CLLocationCoordinate2D)loc1 to:(CLLocationCoordinate2D)loc2
{
    // 2点の緯度の平均
    double latAvg = (( loc1.latitude + ((loc2.latitude - loc1.latitude)/2) ) / 180) * M_PI;
    // 2点の緯度差
    double latDifference = (( loc1.latitude - loc2.latitude ) / 180) * M_PI;
    // 2点の経度差
    double lonDifference = (( loc1.longitude - loc2.longitude ) / 180) * M_PI;
    double curRadiusTemp = 1 - 0.00669438 * pow(sin(latAvg), 2);
    // 子午線曲率半径
    double meridianCurvatureRadius = 6335439.327 / sqrt(pow(curRadiusTemp, 3));
    // 卯酉線曲率半径
    double primeVerticalCircleCurvatureRadius = 6378137 / sqrt(curRadiusTemp);
    // 2点間の距離
    double distance = pow(meridianCurvatureRadius * latDifference, 2)
    + pow(primeVerticalCircleCurvatureRadius * cos(latAvg) * lonDifference, 2);
    distance = sqrt(distance);
    int distanceInt = (int)round(distance);
    return distanceInt;
}

-GPS, Objective-C, Xcode, アプリ開発
-, , ,

Copyright© LAPTURE , 2020 All Rights Reserved.