【问题标题】:location manager - only getting 1 update per second位置管理器 - 每秒仅获得 1 次更新
【发布时间】: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) 在 vi​​ewDidLoad 中启动了一个计时器,(2) 计时器每秒运行 10 次,并且只执行了 startUpdatingLocation 和 (3) didUpdateLocations 在最后执行了 stopUpdatingLocation。由于 didUpdateLocations 每秒运行 10 次而不是一次,我认为我有一个解决方案,但似乎我每秒只能获得一个新的位置和速度。我认为答案在于弄清楚当我在没有计时器的情况下快速移动时如何让 didUpdateLocations 更频繁地返回结果而不是每秒一次。以 60 英里/小时的速度行驶,我的行驶速度约为 90 英尺/秒。我屈服于专家。

标签: ios cllocationmanager


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    相关资源
    最近更新 更多