iPhone:使用GPS行走时计算距离

时间:2012-03-13 13:12:44

标签: iphone xcode gps distance

我想计算用户在使用GPS行走时所覆盖的距离。例如,用户点击开始按钮并开始步行或跑步,而不是当他完成时他点击停止。为了获得不同的纬度,用户必须经过的最小距离是多少?

我们如何才能在IPhone中做到这一点,因为我们采用Lat,每隔0.3秒就比上一次我们有一个点列表?

1 个答案:

答案 0 :(得分:3)

你可以通过计算2点(纬度,经度)之间的距离来做到这一点:

(我还没有测试过):

-(double)distanceBetweenCoordinate:(CLLocationCoordinate2D)c1 andCoordinate:(CLLocationCoordinate2D)c2 {
    double long1 = degreesToRadians(c1.longitude);
    double lat1 = degreesToRadians(90 - c1.latitude);

    double long2 = degreesToRadians(c2.longitude);
    double lat2 = degreesToRadians(90 - c2.latitude);

    double gamma = fabs(long1 - long2);
    if (gamma > M_PI) {
        gamma = 2 * M_PI - gamma;
    }    

    double result = cos(lat2) * cos(lat1) + sin(lat2) * sin(lat1) * cos(gamma);
    return acos(result) * 6366.1977; // Kilometers
};

CGFloat degreesToRadians(CGFloat degrees) {
    return degrees * M_PI / 180;
};

更新:改为使用distanceFromLocation - Calculate distance between two points

相关问题