我写了计算总行驶距离的应用程序。但是我希望这个值更准确。
我的问题是,当我不移动时,位置管理员总是更新位置,并且每秒增加〜 1 ... 2米,水平精度10.0 。如果我留下/步行/停留,这个距离将增加60到100米每个“站立”分钟。这对我不好。
我可以使用Core Motion框架停止更新位置,并使用CMMotionManager检测更改x,y,z轴。当我走路时这将是一个例子。但是当我开车时,设备不会改变x,y,z轴。
如何计算“纯粹的”移动距离?
答案 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框架