Итак, я создал CLLocationManager, вызвал его, чтобы начать обновление, установил для mapView.showsUserLocation значение YES и вернул nil для аннотации userLocation. Вот несколько фрагментов моего кода в UIMapViewController:
- (void)viewDidLoad
{
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
CLLocationCoordinate2D userCoordinate = locationManager.location.coordinate;
[map setCenterCoordinate:userCoordinate animated:YES];
[map setShowsUserLocation:YES];
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
MKAnnotationView *mapIconView = (MKAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:@"mapIconView"];
// Don't mess with the user location annotation
if (annotation == mapView.userLocation)
return nil;
// etc.
}
Все это кажется довольно простым. Все работает нормально - карта приближается к моему местоположению должным образом, и я подтвердил, что все методы вызываются должным образом, но без синей точки. Не могу получить синюю точку на всю жизнь, независимо от того, где и сколько раз я говорю
mapView.setUserLocation = YES;
Что мне здесь не хватает?