Итак, я создал 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;
Что мне здесь не хватает?