iPhone:使用 GPS 计算步行距离

标签 iphone xcode gps distance

我想计算用户使用 GPS 行走时走过的距离。例如,用户点击开始按钮并开始行走或运行,完成后点击停止。用户需要移动多少距离才能获得不同的经度?

我们如何在 iPhone 中做到这一点,假设我们每隔 0.3 秒获取纬度,比最后一次我们有一个点列表?

最佳答案

您可以通过计算两点(纬度、经度)之间的距离来实现此目的:

(我没有测试过):

-(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相反

关于iPhone:使用 GPS 计算步行距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684633/

相关文章:

iphone - 如何在 DataClass 的整个应用程序中使用某种文本?

iphone - 在 iPhone 中使用 OpenCV 从图像创建视频

objective-c - 图像缩放时禁用滚动

objective-c - 如何在 mac os View 或其 subview 获得焦点时处理事件?

android - 如何为 Android 编写自己的 LocationService?

ios - UIScrollView 不适用于从选项卡栏 Controller 调用的自动布局

ios - 自动布局和同心较小的嵌套 UIImageView

php - 限制MySQL查询中GPS位置的数量

android - requestLocationUpdates 从未调用过

iphone - 在 objective-C (iphone) 中,如何管理 '@protocol' 引用的内存?