Мониторинг основного региона
Кто-нибудь знает какие-либо знания об использовании этого:
- (void) startMonitoringForRegion:(CLRegion *)region desiredAccuracy:(CLLocationAccuracy)accuracy
Я пытаюсь внедрить его в свой проект, но:
- (void) locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
никогда не вызывается?
У кого-нибудь есть пример кода или знаете, почему это происходит?
Мой код выглядит следующим образом. Я создал такой метод в своем собственном классе LocationManager:
- (void) locationManagerStartMonitoringRegion:(CLRegion *)region withAccuracy:(CLLocationAccuracy)accuracy {
NSLog(@"Start Monitoring");
[locationManager startMonitoringForRegion:region desiredAccuracy:accuracy];
NSLog(@"Monitored Regions: %i", [[locationManager monitoredRegions] count]);
}
Я тогда называю это так:
CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(51.116261, -0.853758);
CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:coordinates radius:150 identifier:[NSString stringWithFormat:@"grRegion%i", value]];
[locationManager locationManagerStartMonitoringRegion:grRegion withAccuracy:kCLLocationAccuracyBest];
Я получаю NSLog's:
2011-01-30 19: 52: 26.409 Место тестирования [10858:307] Запуск мониторинга
2011-01-30 19:52:27.103 Место тестирования [10858:307] Контролируемые регионы:
Но никогда не получайте NSLog от:
- (void) locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
NSLog(@"Entered Region");
}
или же
- (void) locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error {
NSLog(@"monitoringDidFailForRegion: %@",error);
}
Спасибо
5 ответов
Вам нужно будет проделать довольно долгий путь, чтобы работали средства мониторинга региона. Его текущая гранулярность, кажется, основана на том, когда он передается от одной вышки сотовой связи к другой - в моем тестировании мне пришлось переместиться на милю или больше, чтобы он обнаружил, что окончательно покинул небольшую область, которую я установил.
Ответ:
- (void) startMonitoringForRegion:(CLRegion *)region desiredAccuracy:(CLLocationAccuracy)accuracy
устарела в ios 6.o. Вместо этого используйте `- (void) startMonitoringForRegion:(CLRegion *) регион.
Спасибо, Абдул
Ну, вы можете контролировать несколько регионов и моделировать местоположение в XCode (с панели над отладчиком), чтобы проверить, работает ли он или нет. Я проверил, и это работает довольно гладко.
Я должен был бы увидеть, где вы устанавливаете свой locationManager
пример. Но поскольку @Mark Adams пытается ускользнуть от вас, вам нужно установить текущий класс в качестве делегата для locationManager
поэтому он знает, в какой класс отправлять сообщения. Это так просто, как:
locationManager.delegate = self;