我有一个使用startUpdatingLocation运行的位置管理器的应用程序。但是,如果它没有移动,那么我将stopUpdatingLocation,将当前位置标记为区域,并将startMonitoringForRegion标记为:
[locationManager stopUpdatingLocation];
CLRegion* region = [[CLRegion alloc] initCircularRegionWithCenter:self.currentLocation.coordinate radius:25 identifier:@"last_loc"];
[self.locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[region release];
当应用程序完全关闭并退出该区域时,会调用locationManager:didExitRegion并继续我喜欢这样的方式:
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
[self.locationManager stopMonitoringForRegion:region];
[locationManager startUpdatingLocation];
}
但是,如果应用程序在后台或前台运行,则应用程序将不响应locationManager:didExitRegion。我错过了什么?
答案 0 :(得分:1)
确保初始化坐标属性。如果您希望坐标是用户的当前位置,请使用[your location manager].location.coordinate.latitude
和[your location manager].location.coordinate.longitude
作为初始化属性。如果您需要海拔高度,请添加[your location manager].location.altitude
,[your location manager].location.horizontalAccuracy
,[your location manager].location.verticalAccuracy
和[your location manager].location.timeStamp
。如果没有此信息,则创建一个没有坐标但仍然存在的区域。从本质上讲,它有一个名称,但没有真正的信息。