gpt4 book ai didi

iphone - 无需更改即可调用函数“didUpdateToLocation”

转载 作者:行者123 更新时间:2023-12-01 19:16:53 24 4
gpt4 key购买 nike

我以这种方式初始化locationManager:

if (!self.locManager) 
{
self.locManager = [[CLLocationManager alloc] init];
self.locManager.delegate = self;
[locManager startMonitoringSignificantLocationChanges];
}

我的设备没有移动,并且每次仍在调用“didUpdateToLocation”。
可能是什么问题?
谢谢

最佳答案

didUpdateToLocation可能由于多种原因而更新,一种解决此问题的好策略是根据时间戳逐渐过滤结果,然后根据所需的准确性进行过滤。

苹果在LocateMe sample app中提供了一个很好的例子:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
// test the age of the location measurement to determine if the measurement is cached
// in most cases you will not want to rely on cached measurements
NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
if (locationAge > 5.0) return;

// test that the horizontal accuracy does not indicate an invalid measurement
if (newLocation.horizontalAccuracy < 0) return;

// test the measurement to see if it is more accurate than the previous measurement
if (self.bestEffortAtLocation == nil || self.bestEffortAtLocation.horizontalAccuracy > newLocation.horizontalAccuracy)
{
// store the location as the "best effort"
self.bestEffortAtLocation = newLocation;

// test the measurement to see if it meets the desired accuracy
//
// IMPORTANT!!! kCLLocationAccuracyBest should not be used for comparison with location coordinate or altitidue
// accuracy because it is a negative value. Instead, compare against some predetermined "real" measure of
// acceptable accuracy, or depend on the timeout to stop updating. This sample depends on the timeout.
//
if (newLocation.horizontalAccuracy <= locationManager.desiredAccuracy) {
// we have a measurement that meets our requirements, so we can stop updating the location
//
// IMPORTANT!!! Minimize power usage by stopping the location manager as soon as possible.
//
[self stopUpdatingLocation:NSLocalizedString(@"Acquired Location", @"Acquired Location")];
}
}
}

关于iphone - 无需更改即可调用函数“didUpdateToLocation”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12772672/

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