【问题标题】:iPhone CLLocationManager updates every 0.5 secondsiPhone CLLocationManager 每 0.5 秒更新一次
【发布时间】:2011-05-23 23:19:53
【问题描述】:

对于从 GPS 进行大量计算的应用,我需要每 0.5 秒获取一次纬度/经度和速度,以非常准确并避免延迟。

我正在使用:

  • [locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
  • - locationManager:didUpdateToLocation:fromLocation: 函数将值存储在 3 个变量中:newLatitudenewLongitudenewSpeed
  • 每 0.5 秒调用一次函数的 NSTimer 对象。

请参见下面由 Excel 生成的表示 18 秒内纬度值的图表:

我们可以清楚地看到,我们每秒钟都会更新一次位置,而不是像希望的那样每 0.5 秒更新一次。我在办公室周围开车做样品,所以我的速度在 0 到 65 英里/小时之间变化。因此,当我以 50 英里/小时的速度行驶时,我应该每 0.5 秒从 iPhone 获得不同的纬度/经度/速度值,对吗?

如果您知道 CLLocationManager 对象的准确性,请告诉我如何每 0.5 秒获取一次这些位置更新。

谢谢!

【问题讨论】:

  • CoreLocation 服务决定何时向您发送位置更新,您不能只是调用它并立即获得价值。 GPS 三角测量非常昂贵且速度慢,该设备使用许多技巧来节省电池并提高准确性。

标签: iphone cllocationmanager


【解决方案1】:

您无法告诉位置管理员您想要更新的频率,但只有在它选择为您提供更新时才会回复。无法指望获取更新的时间,这取决于查找 WiFi 信号和 GPS 信号的难易程度。

【讨论】:

  • 谢谢@nevan,我就是这么想的。我通常每秒都会收到更新,至少效果很好。我只是想尝试在 0.5 秒内更准确,但不幸的是我无法决定这一点,只能等待代表接收更新。
【解决方案2】:
[self.locationManager startUpdatingLocation];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self     selector:@selector(myTimerFunc) userInfo:nil repeats:YES];

- (void)myTimerFunc
{
    CLLocation location = self.locationManager.location;
    // do work here //
}

 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    // do nothing here //
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 2017-11-27
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    相关资源
    最近更新 更多