因此,当设备移动 50 米或更多时,我需要使用新位置更新我的代表。这是我正在学习的一本书中章节测验的一部分。
这是我的代码:
- (id)initWithCoder:(NSCoder *)aDecoder //we're overriding the superclasses (UIViewController) initialiser
{
self = [super initWithCoder:aDecoder];
if (self){
//create location manager object
locationManager = [[CLLocationManager alloc] init];
//there will be a warning from this line of code
[locationManager setDelegate:self];
//and we want it to be as accurate as possible
//regardless of how much time/power it takes
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
//set the amount of metres travelled before location update is made
[locationManager setDistanceFilter:50];
//tell our manager to start looking for its location immediately
[locationManager startMonitoringSignificantLocationChanges];
}
return self;
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
{
NSLog(@"%@", [locations lastObject]);
}
我已将距离过滤器设置为 50(我希望对应于 50 米)。然后当打印到控制台时,我调用了数组中的最后一个对象,我希望它是最近更新的位置。
然后我构建并运行并将初始位置打印到控制台。然后我点击debug > location > city run
我的 iOS 模拟器菜单。我想这需要超过 50 米的位置,因为城市跑步肯定会超过 50 米。位置再次更新。我尝试通过单击高速公路驱动器再次更新位置,但没有任何反应。
在文档中它指出:“它不依赖 distanceFilter 属性中的值来生成事件。连续多次调用此方法不会自动导致生成新事件”
这正是我正在经历的。我可以更改一次位置并将新位置打印到控制台。但是再次更改位置不会导致任何更改。
我认为-locationManager:didUpdateLocations:
每次更新时更新控制台都会显示新位置。我需要以其他方式执行此操作吗?
希望你能帮助亲切的问候