2016-11-20 70 views
1

我在汽车中的时间速度运行。我正在使用通常的位置管理员代码。位置管理器 - 每秒只能获得1次更新

viewDidLoad中

CLLocationManager *locMgr; 
if (locMgr == nil) 
    locMgr = [[CLLocationManager alloc] init]; 
[locMgr setDelegate:self]; 
[locMgr requestWhenInUseAuthorization]; 
[locMgr setDistanceFilter:kCLDistanceFilterNone]; 
[locMgr setDesiredAccuracy:kCLLocationAccuracyBestForNavigation]; 
[locMgr startUpdatingLocation]; 

DELEGATE

- (void)locationManager:(CLLocationManager *) manager didUpdateLocations:(NSArray<CLLocation *> *) locations 
{ 
(process update) 
} 

问题

即使我使用的是最精确的DistanceFilter和所需的精度,我只得到一个每秒更新,而汽车正在移动,即使在60英里。我检查了每秒返回给委托的位置数量,它总是一个。任何人都可以解释吗?在我看来,我应该在60英里每小时获得持续不断的更新。任何帮助将不胜感激。

谢谢。

+0

请参阅本文[关于如何使用NSTimer控制更新频率的答案](http://stackoverflow.com/a/7385397/1117968)。 –

+0

谢谢。我(1)在viewDidLoad中启动了一个计时器,(2)计时器每秒运行10次,只做了一次startUpdatingLocation,(3)didUpdateLocations在最后做了stopUpdatingLocation。由于didUpdateLocations每秒运行10次而不是一次,我以为我有一个解决方案,但似乎我只是每秒获得一个新的位置和速度。我认为答案在于如何在没有定时器的情况下快速移动的时候,弄清楚如何让didUpdateLocations更快地返回结果。在60英里时,我正在旅行〜90英尺/秒。我屈服于专家。 – Deems

回答

0

我刚刚开始iOS开发,因为我刚刚开始从Android移植我的速度计应用程序,并且此问题出现在搜索位置更新速率中。希望可以回答这个问题,但只是添加我从Android学到的信息。

因此,iOS可能会有所不同,但只要(例如)GPS服务获得新位置,Android就会发送位置更新,而根据经验,99.99%的Android手机和平板电脑具有每秒发送更新一次的传感器。如果Apple(idk)使用相同质量和能效的传感器,那么我认为1Hz的更新是最好的。

我的Android应用程序可以使用约10Hz的蓝牙GPS接收器,所以我希望我的应用程序在收到时报告最新的位置,因此计时器不会真正适用于我。

您的问题已帮助我,因为我现在知道位置更新时。