首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止CLLocationManager?

阻止CLLocationManager?
EN

Stack Overflow用户
提问于 2011-03-30 17:10:57
回答 3查看 5K关注 0票数 3

我想征求关于停止CLLocationManager -startUpdatingLocation的建议。目前,我正在考虑两种方法,但我不确定使用哪种方法,并想知道其他人是如何做到这一点的:

Method_001:

代码语言:javascript
复制
[locationManager startUpdatingLocation];
[self performSelector:@selector(stopUpdatingLocation:) withObject:@"TimedOut" afterDelay:30];

  • 可能会浪费电池寿命,就像每次运行30秒的
  • 一样,如果网络运行速度慢,可能无法及时得到准确的位置,
  • 觉得这是实现超时的一种相当整洁的方法。

Method_002:

代码语言:javascript
复制
[locationManager startUpdatingLocation];

然后在内部:-locationManager:didUpdateToLocation:fromLocation:添加:

代码语言:javascript
复制
static int timeOut = 0;
timeOut++;

// Other code that checks for and stops
// when a suitable result, accuracy, age etc is found.

if(timeOut >= 4) {
    [[self locationManager] stopUpdatingLocation];
    timeOut = 0;
    return;
}

在4次(或更少)的尝试中,timeout.

  • Better

  • 可能无法解决精确的位置问题。

  • 4的结果可能不会为CLLocationManager返回,而且我们永远不会对电池的续航时间进行限制,因为我们会立即停止对好结果的处理。

只是好奇?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-30 18:25:17

嗯,我想我更喜欢第一个。我不知道我们是否能够确定didUdpateToLocation:方法被调用的频率。我认为暂停时间更可靠。

票数 2
EN

Stack Overflow用户

发布于 2011-03-30 17:40:02

不确定您到底想做什么,但我认为CLLocationManager内部处理这些情况。只需将其配置如下:

代码语言:javascript
复制
locManager.desiredAccuracy = 2000.0f;   // 2 kilometers - hope for accuracy within 2 km.
locManager.distanceFilter  = 1000.0f;   // one kilometer - move this far to get another update

然后在回调

代码语言:javascript
复制
 [locManager stopUpdatingLocation];  // stop GPS

编辑:添加小数

代码语言:javascript
复制
if (signbit(newLocation.horizontalAccuracy)) {
        // Negative accuracy means an invalid or unavailable measurement, so punt.
} else {
        // this is a usable measurement.
    }
票数 3
EN

Stack Overflow用户

发布于 2014-01-27 17:18:09

为什么不把这两种方法结合起来,并给出第三种(我最好的结果并没有在一定的时间内改善)

我在这上面写了一个GIT,您可以自由使用https://github.com/xelvenone/M6GPSLocationManager

如果结果的准确性比

  • 好,那么如果我们在发生时得到了更新,我们等待maximumWaitTimeForBetterResult得到更好的更新--如果没有这样的更新,我们就完成了,如果我们不断地得到更新,超过maximumAttempts,我们就会得到最好的
  • ,如果我们在30秒内没有得到任何其他更新,我们就完成了(可能没有其他任何更新)

F 210

代码

代码语言:javascript
复制
- (void)scopeToCurrentLocationWithAcceptableAccuracy:(CLLocationAccuracy)acceptableAccuracy
                  maximumWaitTimeForBetterResult:(NSTimeInterval)maximumWaitTimeForBetterResult
                                 maximumAttempts:(NSInteger)maximumAttempts
                                    onCompletion:(M6GPSLocationManagerCompletion)completion;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5489662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档