0

在我的 ios 应用程序中,我在计时器上使用核心位置管理器来获取当前位置。该应用程序是可配置的,因此我允许用户将其设置为低至 1 分钟。因此,即使应用程序在后台,也会每 1 分钟报告一次 gps 位置。

我不想对核心位置管理器进行重大更改,而是继续使用计时器,因为准确性会更好。

将计时器设置为低至 5 秒有任何可预见的问题吗?我这样做的原因是获取位置,将其保存在变量中,然后在 5 秒内再次获取它并将其与距离变量进行比较,然后确定用户是否移动了足够远,如果是则报告。

4

2 回答 2

0

您正在采用错误的方法来执行此操作。您需要使用AppleDelegates提供的来实现它。你在做什么,是完全错误的,如果它没有从最后一个位置改变,你为什么要在 5 秒后检查位置。

问题的解决方案:

您需要根据您的要求设置精度:

kCLLocationAccuracyBestForNavigation
kCLLocationAccuracyBest
kCLLocationAccuracyNearestTenMeters
kCLLocationAccuracyHundredMeters
kCLLocationAccuracyKilometer
kCLLocationAccuracyThreeKilometers

每当位置发生特定变化时,您都会收到委托方法的调用:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 

它将节省电池并提高性能,因为它将节省不必要的电话来一次又一次地获取位置。

于 2013-12-05T07:31:31.333 回答
0

获取位置取决于查找 WiFi 信号和 GPS 信号的难易程度。如果没有信号,无论您设置 1 分钟还是 1 秒。看这里的评论这里

于 2013-12-05T07:21:17.040 回答