gpt4 book ai didi

iphone - 停止 CLLocationManager?

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:25 26 4
gpt4 key购买 nike

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

Method_001:

[locationManager startUpdatingLocation];
[self performSelector:@selector(stopUpdatingLocation:) withObject:@"TimedOut" afterDelay:30];
  • 可能会浪费电池生命周期,因为总是运行 30 秒
  • 如果网络慢可能无法及时获得准确位置
  • 感觉是一种非常简洁的实现超时的方法。

Method_002:

[locationManager startUpdatingLocation];

然后在里面:-locationManager:didUpdateToLocation:fromLocation: 添加:

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 次(或更少)尝试中找到准确的位置。
  • CLLocationManager 可能不会返回 4 个结果,我们永远不会超时。
  • 更好地延长电池生命周期,因为我们会立即停下来获得良好的结果。

只是好奇?

最佳答案

不确定您要做什么,但我认为 CLLocationManager 会在内部处理这些情况。只需这样配置它:

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

然后在回调中 didUpdateToLocation:fromLocation: 如果你有一个正符号,

 [locManager stopUpdatingLocation];  // stop GPS

编辑:添加符号位

if (signbit(newLocation.horizontalAccuracy)) {
// Negative accuracy means an invalid or unavailable measurement, so punt.
} else {
// this is a usable measurement.
}

关于iphone - 停止 CLLocationManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com