Я реализую приложение iOS7 с помощью карт Google Maps SDK для iOS & Мониторинг области структуры CoreLocation. После регистрации области мониторинга, вызывая метод requestStateForRegion, но у меня нет реакции на метод didDetermineState: forRegion на устройстве (iOS7.0.4, iPhone5S).CLLocationManager: didDetermineState: forRegion не называется
можно получить сделалUpdateLocation способ, поэтому, думаю, процесс делегирования работает нормально. В симуляторе метод didDetermineState: forRegion называется правильно.
Что мне делать, чтобы исправить эту проблему? код инициализации выглядит следующим образом.
Любые советы, оцененные. Заранее спасибо.
- (void)viewDidLoad
{
if (locManager == nil) {
locManager = [CLLocationManager new];
}
locManager.delegate = self;
CLLocationCoordinate2D targetCenter;
targetCenter.latitude = LATITUDE_CENTER;
targetCenter.longitude = LONGITUDE_CENTER;
CLLocationDegrees radius = TARGET_RADIUS;
if (locManager.maximumRegionMonitoringDistance < TARGET_RADIUS){
radius = locManager.maximumRegionMonitoringDistance;
}
self.targetRegion = [[CLCircularRegion alloc]
initWithCenter:targetCenter
radius:radius
identifier:@"TargetRegion"];
BOOL monitoringAvailability = [CLLocationManager isMonitoringAvailableForClass:[self.targetRegion class]];
if(monitoringAvailability) {
if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) {
[locManager startMonitoringForRegion:self.targetRegion];
}
}
[locManager requestStateForRegion:self.targetRegion];
}
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
if (state == CLRegionStateInside){
NSLog(@"is in target region");
self.isInTargetRegion = YES;
}else{
NSLog(@"is out of target region");
self.isInTargetRegion = NO;
}
}
Мне не нравится, если startMonitoringForRegion не удалось, поэтому я проверил locManager.monitoredRegions, после чего я нашел правильно начатый мониторинг. – kinamin