【问题标题】:How calculate "pure" moving distance in Swift?如何在 Swift 中计算“纯”移动距离?
【发布时间】:2016-05-09 10:49:50
【问题描述】:

我编写了计算总行驶距离的应用程序。但我想让这个值更不准确。

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

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

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

【问题讨论】:

  • 朋友,你走错了方向。我也尝试过这个逻辑,但惨遭失败,尝试使用专门为此目的制作的苹果核心运动框架。检查我的答案

标签: ios swift core-location distance


【解决方案1】:

为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 框架

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-12-24
  • 2017-03-07
  • 1970-01-01
  • 2022-06-14
  • 2020-07-08
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多