Does anyone know any knowledge of using this:
- (void) startMonitoringForRegion:(CLRegion *)region desiredAccuracy:(CLLocationAccuracy)accuracy
I am trying to implement it into my project but:
- (void) locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
is never being called?
Does anyone have any example code or know why this is happening?
My code is as follows. I created a method like this in my own LocationManager class:
- (void) locationManagerStartMonitoringRegion:(CLRegion *)region withAccuracy:(CLLocationAccuracy)accuracy {
NSLog(@"Start Monitoring");
[locationManager startMonitoringForRegion:region desiredAccuracy:accuracy];
NSLog(@"Monitored Regions: %i", [[locationManager monitoredRegions] count]);
}
I then call it like this:
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];
I get NSLog's of:
2011-01-30 19:52:26.409 TestingLocation[10858:307] Start Monitoring
2011-01-30 19:52:27.103 TestingLocation[10858:307] Monitored Regions:
But never get an NSLog from:
- (void) locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
NSLog(@"Entered Region");
}
or
- (void) locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error {
NSLog(@"monitoringDidFailForRegion: %@",error);
}
Thanks
Well you can monitor multiple regions and simulate location in Xcode (from the panel above the debugger) to check whether it's working or not. I've tested and it works pretty smooth.
The Accuracy is improved in ios 5.
The Answer is :
is deprecated in ios 6.o. Instead use `- (void) startMonitoringForRegion:(CLRegion *)region.
Thanks, Abdul`
You'll need to move rather a long way for the region-monitoring stuff to work. Its current granularity seems to be based on when it gets handed off from one cell tower to another—in my testing, I had to move a mile or more for it to register that I had definitively left a small region I'd set.
I'd have to see where you setup your
locationManager
instance. But as @Mark Adams is trying to elude to, you need to set your current class as the delegate forlocationManager
so it knows which class to send messages back to. It is as simple as:locationManager.delegate = self;