Note that there are some explanatory texts on larger screens.

plurals
  1. POProblems Trying to Find User Location in MKMapView
    primarykey
    data
    text
    <p>I am having problems trying to get the user's current position to display on an MKMapView. Here is the relevant code:</p> <p><em>Header:</em></p> <pre><code>// ParkingMapViewController.m #import &lt;UIKit/UIKit.h&gt; #import &lt;MapKit/MapKit.h&gt; @interface ParkingMapViewController : UIViewController &lt;MKMapViewDelegate, CLLocationManagerDelegate&gt; { MKMapView *mapView; CLLocationManager *locationManager; } @property (nonatomic, retain) IBOutlet MKMapView *mapView; @property (nonatomic, retain) CLLocationManager *locationManager; -(void)loadAnnotations; -(void)showCurrentLocationButtonTapped:(id)sender; @end </code></pre> <p><em>Implementation(partial):</em></p> <pre><code>// ParkingMapViewController.m - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:100 target:self action:@selector(showCurrentLocationButtonTapped:)]; [self loadAnnotations]; CLLocationCoordinate2D centerCoord = { UCD_LATITUDE, UCD_LONGITUDE }; [mapView setCenterCoordinate:centerCoord zoomLevel:13 animated:NO]; //from "MKMapView+ZoomLevel.h" } - (void)showCurrentLocationButtonTapped:(id)sender { NSLog(@"Showing current location."); //[self.mapView setShowsUserLocation:YES]; //mapView.showsUserLocation = YES; //[sender setEnabled:NO]; //TODO: Uncomment and test locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m [locationManager startUpdatingLocation]; } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { [mapView setCenterCoordinate:newLocation.coordinate]; if ([mapView showsUserLocation] == NO) { [mapView setShowsUserLocation:YES];//when this line is commented, there is no problem } [mapView setCenterCoordinate:newLocation.coordinate zoomLevel:13 animated:YES]; } - (void)viewDidUnload { [super viewDidUnload]; [mapView setShowsUserLocation:NO]; } - (void)dealloc { [locationManager release]; [mapView release]; [super dealloc]; } </code></pre> <p>When running the application, the map view displays just fine with the annotations and everything, but when the current location button is pressed, the map re-centers to its new location(slight move) and a fraction of a second later, it crashes. When I comment out <code>[mapView setShowsUserLocation:YES];</code> there is no problem, but otherwise it spits out this error in the console:</p> <pre><code>2010-11-30 22:57:20.657 Parking[53430:207] -[MKUserLocation annotationType]: unrecognized selector sent to instance 0x78427f0 2010-11-30 22:57:20.659 Parking[53430:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MKUserLocation annotationType]: unrecognized selector sent to instance 0x78427f0' *** Call stack at first throw: ( 0 CoreFoundation 0x0266ab99 __exceptionPreprocess + 185 1 libobjc.A.dylib 0x027ba40e objc_exception_throw + 47 2 CoreFoundation 0x0266c6ab -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 3 CoreFoundation 0x025dc2b6 ___forwarding___ + 966 4 CoreFoundation 0x025dbe72 _CF_forwarding_prep_0 + 50 5 Parking 0x00003ddb -[ParkingMapViewController mapView:viewForAnnotation:] + 64 6 MapKit 0x023a8130 -[MKAnnotationContainerView _addViewForAnnotation:] + 175 7 MapKit 0x023a2b2a -[MKAnnotationContainerView _addViewsForAnnotations:animated:] + 251 8 MapKit 0x0239e657 -[MKAnnotationContainerView showAddedAnnotationsAnimated:] + 137 9 MapKit 0x0237837c -[MKMapView _showAddedAnnotationsAndRouteAnimated:] + 102 10 MapKit 0x02376a88 -[MKMapViewInternal delayedShowAddedAnnotationsAnimated] + 191 11 Foundation 0x000571c9 __NSFireTimer + 125 12 CoreFoundation 0x0264bf73 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19 13 CoreFoundation 0x0264d5b4 __CFRunLoopDoTimer + 1364 14 CoreFoundation 0x025a9dd9 __CFRunLoopRun + 1817 15 CoreFoundation 0x025a9350 CFRunLoopRunSpecific + 208 16 CoreFoundation 0x025a9271 CFRunLoopRunInMode + 97 17 GraphicsServices 0x02f4900c GSEventRunModal + 217 18 GraphicsServices 0x02f490d1 GSEventRun + 115 19 UIKit 0x002cfaf2 UIApplicationMain + 1160 20 Parking 0x000020e0 main + 102 21 Parking 0x00002071 start + 53 ) terminate called after throwing an instance of 'NSException' </code></pre> <p>Googling has indicated that this is most likely an IB problem but I have not been able to spot it. Here is a screen of my set up in IB:</p> <p><img src="https://i.stack.imgur.com/hnlpX.png" alt="alt text"></p> <p>Any help whatsoever will be very much appreciated. Thanks!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload