Мониторинг основного региона - PullRequest
6 голосов
/ 30 января 2011

Кто-нибудь знает какие-либо знания по использованию этого:

- (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 ]

5 голосов
/ 31 января 2011

Вам нужно проделать довольно долгий путь, чтобы работали средства мониторинга региона.Его текущая гранулярность, кажется, основана на том, когда он передается от одной вышки сотовой связи к другой - в моем тестировании мне пришлось переместиться на милю или больше, чтобы он обнаружил, что окончательно покинул небольшую область, которую я установил.

1 голос
/ 11 марта 2015

Ну, вы можете контролировать несколько регионов и моделировать местоположение в XCode (с панели над отладчиком), чтобы проверить, работает он или нет.Я проверил, и это работает довольно гладко.

1 голос
/ 15 июля 2013

Ответ:

- (void) startMonitoringForRegion:(CLRegion *)region desiredAccuracy:(CLLocationAccuracy)accuracy

устарела в ios 6.o. Вместо этого используйте `- (void) startMonitoringForRegion: (CLRegion *) region.

Спасибо, Abdul`

1 голос
/ 13 сентября 2011

Точность улучшена в ios 5.

0 голосов
/ 31 января 2011

Мне нужно посмотреть, где вы настраиваете свой экземпляр locationManager. Но, поскольку @Mark Adams пытается ускользнуть, вам нужно установить текущий класс в качестве делегата для locationManager, чтобы он знал, в какой класс отправлять сообщения обратно. Это так же просто, как:

locationManager.delegate = self;

...