【发布时间】:2016-11-20 04:45:29
【问题描述】:
我正在计时汽车中的速度。我正在使用通常的位置管理器代码。
viewDidLoad
CLLocationManager *locMgr;
if (locMgr == nil)
locMgr = [[CLLocationManager alloc] init];
[locMgr setDelegate:self];
[locMgr requestWhenInUseAuthorization];
[locMgr setDistanceFilter:kCLDistanceFilterNone];
[locMgr setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
[locMgr startUpdatingLocation];
代表
- (void)locationManager:(CLLocationManager *) manager didUpdateLocations:(NSArray<CLLocation *> *) locations
{
(process update)
}
问题
即使我使用了最精确的距离过滤器和所需的准确度,我也只能在汽车行驶时每秒获得一次更新,即使以 60 英里/小时的速度行驶也是如此。我检查了每秒返回给代表的位置数量,它始终是一个。谁能解释一下?在我看来,我应该以 60 mph 的速度获得源源不断的更新。任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
谢谢。我 (1) 在 viewDidLoad 中启动了一个计时器,(2) 计时器每秒运行 10 次,并且只执行了 startUpdatingLocation 和 (3) didUpdateLocations 在最后执行了 stopUpdatingLocation。由于 didUpdateLocations 每秒运行 10 次而不是一次,我认为我有一个解决方案,但似乎我每秒只能获得一个新的位置和速度。我认为答案在于弄清楚当我在没有计时器的情况下快速移动时如何让 didUpdateLocations 更频繁地返回结果而不是每秒一次。以 60 英里/小时的速度行驶,我的行驶速度约为 90 英尺/秒。我屈服于专家。
标签: ios cllocationmanager