title: iOS startMonitoringForRegion, didExitRegion, didEnterRegion, didStartMonitoringForRegion. Methods not firing properly
body: <p>I run my code in the iPhone simulator, and from the simulator menu, I choose:
  "Debug, Location, Apple" to set my current location at Apple's Cupertino location.  </p>
  
  <p>Then I choose from the simulator menu:  "Debug, Location, Freeway Drive".  The current location properly updates along the 280 freeway.</p>
  
  <p>My code should create a "geo-fence" of 1500 meters.  Every time the device reaches the boundary - it drops a pin and draws a circle.</p>
  
  <p>Problems.....</p>
  
  <ol>
  <li>"didExitRegion" is not being called at the proper distance, it's being called several miles down the freeway.</li>
  <li>"didStartMonitoringForRegion" is never called.</li>
  </ol>
  
  <p>Any help is appreciated!!  Thanks!!</p>
  
  <p>Here is my code:</p>
  
  <p>ViewController.h</p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  #import &lt;CoreLocation/CoreLocation.h&gt;
  #import &lt;MapKit/MKMapView.h&gt;
  #import &lt;MapKit/MapKit.h&gt;
  
  @interface ViewController : UIViewController &lt;CLLocationManagerDelegate, MKMapViewDelegate&gt;
  
  @property(nonatomic,strong) CLLocationManager *locationManager;
  @property(nonatomic,strong) MKMapView *myMapView;
  
  @end
  </code></pre>
  
  <p>ViewController.m</p>
  
  <pre><code>#import "ViewController.h"
  #import "POI.h"
  
  @implementation ViewController
  
  @synthesize locationManager;
  @synthesize myMapView;
  
  - (void)viewDidLoad
  {
      [super viewDidLoad];
  
      locationManager = [[CLLocationManager alloc] init];
      [locationManager setDelegate:self];
      [locationManager setDistanceFilter:kCLDistanceFilterNone];
  
      if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized)
          [locationManager startUpdatingLocation];
  
      myMapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
  
      [myMapView setMapType:MKMapTypeStandard];
      [myMapView setDelegate:self];
      [myMapView setShowsUserLocation:YES];
      [self.view addSubview:myMapView];
  
  }
  
  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  {return NO;}
  
  #pragma mark CLLocationManagerDelegate methods
  
  -(void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error
  {    NSLog(@"%@: %@", @"monitoring failed", error.description); }
  
  -(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
  {    NSLog(@"%@", @"monitoring succeeded"); }
  
  -(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
  {    NSLog(@"%@: %@", @"region entered", region.identifier);}
  
  -(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
  {
      NSLog(@"%@: %@", @"region exited", region.identifier);
  
      [locationManager startUpdatingLocation];
  }
  
  -(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
  {
      if(status == kCLAuthorizationStatusAuthorized)
          [locationManager startUpdatingLocation];
  }
  
  - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
  {
      NSLog(@"%@", @"New Location");
  
      [locationManager stopUpdatingLocation];
  
      NSInteger radius = 1500;
  
      CLRegion *reg = [[CLRegion alloc] initCircularRegionWithCenter:newLocation.coordinate radius:radius identifier:@"userLocation"];
      [locationManager startMonitoringForRegion:reg desiredAccuracy:25];
  
      NSDateFormatter *df = [[NSDateFormatter alloc] init];
      [df setDateStyle:NSDateFormatterShortStyle];
      [df setTimeStyle:NSDateFormatterShortStyle];
  
      POI *poi = [[POI alloc] init];
      [poi setCoordinate:newLocation.coordinate];
      [poi setTitle:[df stringFromDate:[NSDate date]]];
      [myMapView addAnnotation:poi];
  
      MKCircle *circle = [MKCircle circleWithCenterCoordinate:newLocation.coordinate radius:radius];
      [myMapView addOverlay:circle];
  }
  
  // Called when there is an error getting the location
  - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
  {    NSLog(@"%@: %@", @"get location failed", error.description);   }
  
  #pragma mark MKMapViewDelegate methods
  
  -(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id&lt;MKOverlay&gt;)overlay
  {
      MKCircleView *circleView = [[MKCircleView alloc] initWithCircle:overlay];
  
      circleView.fillColor = [UIColor blueColor];
      circleView.alpha = 0.25;
  
      return circleView;
  }
  
  -(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id&lt;MKAnnotation&gt;)annotation
  {
      if([annotation isKindOfClass:[MKUserLocation class]])
          return nil;
  
      static NSString *annotationIdentifier = @"annotationIdentifier";
      MKPinAnnotationView *newAnnotation = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
  
      if(newAnnotation == nil)
          newAnnotation = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
  
      [newAnnotation setAnimatesDrop:YES];
      [newAnnotation setCanShowCallout:YES];
  
      return newAnnotation;
  }
  
  @end
  </code></pre>
  
  <p>POI.h</p>
  
  <pre><code>#import &lt;Foundation/Foundation.h&gt;
  #import &lt;MapKit/MapKit.h&gt;
  
  @interface POI : MKPointAnnotation
  {
      NSString *subtitle;
      NSString *title;
      NSInteger tag;
      MKPinAnnotationColor pinColor;
  }
  
  @property(nonatomic,strong) NSString *subtitle;
  @property(nonatomic,strong) NSString *title;
  @property(nonatomic,assign) NSInteger tag;
  @property(nonatomic,assign) MKPinAnnotationColor pinColor;
  
  @end
  </code></pre>
  
  <p>POI.m</p>
  
  <pre><code>#import "POI.h"
  @implementation POI
  @synthesize tag, title, subtitle, pinColor;
  @end
  </code></pre>