MKMapView не обновляет изображение позиции пользователя
Мой MKMapView показывает мою позицию при запуске, но тогда изображение никогда не следует за мной. Местоположение обновляется, и экран следит за мной, но исходное изображение «Местоположение пользователя» остается позади.
Вот несколько фрагментов кода:
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { static NSString* AnnotationIdentifier = @"Annotation"; MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier]; if(!pinView) { MKPinAnnotationView *customPinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease]; if(annotation == mapView.userLocation) customPinView.image = [self rotate:[UIImage imageNamed:@"myCar.png"] orientation:UIImageOrientationUp]; else customPinView.image = [UIImage imageNamed:@"randomPin.png"]; customPinView.animatesDrop = NO; customPinView.canShowCallout = YES; return customPinView; } else { pinView.annotation = annotation; } return pinView; } -(void)locationUpdate:(CLLocation *)location { CLLocationCoordinate2D loc = [location coordinate]; if(isFollowing) [myMapView setCenterCoordinate:loc];//Works }
и в моем viewDidLoad
я вызываю: [myMapView setShowsUserLocation:YES];
который работает.
- Загрузка MKMapview в фоновом режиме, чтобы избежать проблем с задержкой
- Настроить аннотацию MkMapView
- Попробуйте загрузить созданную карту в MKMapView
- MKMapView не может загружать фрагменты с ошибкой HTTP 410
- Ошибка при NSRangeException не может удалить наблюдателя для "заголовка"
Так что в основном где-то я пренебрегаю обновлением своей позиции или, что наиболее вероятно, где я рисую новое изображение для моей текущей позиции.
Может ли кто-нибудь увидеть, чего я не вижу или что-то не так, чтобы он не следил за обновлениями моего местоположения?
Благодарю.
- iOS: MapView Аннотации, не отображаемые для контактов
- Как сделать анимацию в пользовательском знаке аннотации при обновлении аннотации
- MKMapView: следить за текущим местоположением с текущим уровнем масштабирования
- MKMapView - Настройка showUserLocation на NO вызывает сбой
- Как получить координаты местоположения центра изображения карты
- Уровень масштабирования MkMapView
- Отображение пользовательских изображений iOS MKMapView в верхнем левом углу
- Пользователь, создающий поле в MKMapView
Неясно, если это проблема, но метод viewForAnnotation выглядит неправильно.
Изображение аннотации устанавливается только при создании аннотационного представления. Если представление повторно используется, свойство аннотации обновляется, но не изображение. Возможно, что повторно используемый вид предназначен для аннотации другого типа, требующего другого изображения.
Метод должен выглядеть примерно так:
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { static NSString* AnnotationIdentifier = @"Annotation"; MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier]; if (!pinView) { pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease]; pinView.animatesDrop = NO; pinView.canShowCallout = YES; } else { pinView.annotation = annotation; } if (annotation == mapView.userLocation) pinView.image = [self rotate:[UIImage imageNamed:@"myCar.png"] orientation:UIImageOrientationUp]; else pinView.image = [UIImage imageNamed:@"randomPin.png"]; return pinView; }