位置管理器 - 每秒只获得1次更新

时间:2016-11-20 04:45:30

标签: ios cllocationmanager

我正在计时车速。我正在使用通常的位置管理器代码。

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和Desired Accuracy,我也只能在汽车行驶时每秒进行一次更新,即使是60英里/小时。我检查了每秒返回给代表的位置数量,它总是一个。有谁能解释一下?在我看来,我应该以每小时60英里的速度获得不断的更新。任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

我刚接触iOS开发,因为我刚开始从Android移植我的车速表应用程序,这个问题在我搜索位置更新率时出现了。希望我能回答这个问题,但只是添加我从Android学到的信息。

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

我的Android应用程序可以使用~10Hz的蓝牙GPS接收器,因此我希望我的应用程序在收到时报告最新位置,因此计时器对我来说不会真正起作用。

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