Я использую NavigationController для отображения списка геозон, доступных пользователю. Вверху есть глобальный переключатель включения/выключения, который я хотел бы использовать для отключения любых ограждений, зарегистрированных с помощью CoreLocation -startMonitoringForRegion.
Кажется, что мои заборы регистрируются нормально и работают по большей части, но независимо от того, сколько раз я отключаю заборы по отдельности, я все равно получаю фиолетовую стрелку местоположения, указывающую, что система все еще отслеживает мое местоположение и/или заборы.
Когда я отключаю свои заборы по отдельности, я делаю это так.
CLLocationCoordinate2D coord;
coord.latitude = [[settingsData valueForKey:@"latitude"] doubleValue];
coord.longitude = [[settingsData valueForKey:@"longitude"] doubleValue];
CLLocationDistance radius = [[settingsData valueForKey:@"radius"] intValue];
CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:coord radius:radius identifier:[settingsData valueForKey:@"name"]];
// remove this fence from system monitoring
[locationManager stopMonitoringForRegion:region];
[region release];
Я просмотрел всю документацию Apple по CoreLocation и использованию этих методов, и я в конце концов.
Я пытался вызвать [locationManager monitoredRegions];, но он возвращает только активное ограждение и только тогда, когда у меня загружено подробное представление. Я не могу вызвать его в любом другом месте в моей программе и заставить его возвращать какие-либо из моих заборов, хотя я знаю, что они должны быть активны. Если у кого-то есть какие-либо советы, куда идти дальше, я весь слушаю.