如何计算Swift中的“纯粹”移动距离?

时间:2016-05-09 10:49:51

标签: ios swift core-location distance

我写了计算总行驶距离的应用程序。但是我希望这个值更准确。

我的问题是,当我不移动时,位置管理员总是更新位置,并且每秒增加〜 1 ... 2米水平精度10.0 。如果我留下/步行/停留,这个距离将增加60到100米每个“站立”分钟。这对我不好。

我可以使用Core Motion框架停止更新位置,并使用CMMotionManager检测更改x,y,z轴。当我走路时这将是一个例子。但是当我开车时,设备不会改变x,y,z轴。

如何计算“纯粹的”移动距离?

1 个答案:

答案 0 :(得分:0)

为pedomter

声明属性
@property (nonatomic, strong) CMPedometer *pedometer;

像这样初始化它 这些功能目前在包含运动传感器芯片的iphone 5s及更高版本的设备中得到支持

 if ([CMPedometer isStepCountingAvailable]) {

            self.pedometer = [[CMPedometer alloc] init];
        }
        else {

            UIAlertView * alertView=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Distance calculation is not available on this device!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
            [alertView show];
        }

最后获取此处理程序中的数据

[self.pedometer startPedometerUpdatesFromDate:[NSDate date]
                                             withHandler:^(CMPedometerData *pedometerData, NSError *error) {
                                                dispatch_async(dispatch_get_main_queue(), ^{

                                                   NSLog(@"data:%@, error:%@", pedometerData, error);
                                                   NSLog(@"distance:%@, pedometerData.distance);
                                                    NSLog(@"Steps:%@", pedometerData.numberOfSteps);

                                                });
                                             }];

别忘了导入coremotion框架