Я пытаюсь заменить синюю точку currentLocation пользовательской аннотацией. Этот код работает хорошо (я просто реализую viewForAnnotation и перебираю его, заменяя аннотацию Class MKUserLocation пользовательским изображением).
Однако после замены аннотации текущее местоположение пользователя перестает обновляться. Все связанные функции (например, didUpdateUserLocation), таким образом, перестают вызываться. Это вызывает много проблем. Я пытался реализовать различные блоки кода в MKUserLocation Custom View, не двигаясь! , но я не мог заставить его работать. После тщательного поиска в Google и поиска в стеке я ничего не нашел.
У кого-нибудь есть решение этой проблемы?
Вот код для метода viewForAnnotation:
_userDot - это переменная экземпляра в MapScreen.m (место, где находится весь этот код). Он размещен в viewDidLoad и имеет тип MKAnnotationView. По сути, я не мог просто избавиться от аннотации, поэтому я хотел установить вместо нее невидимое изображение (в настоящее время 1x1 для отладки).
- (MKAnnotationView *)mapView:(MKMapView *)newMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]]) {
//Initialize a new MKAnnotationView using the current userLocation annotation
//Then make it invisible (because we are cheap like that)
//TODO: Make it actually invisible (right now it is 1x1 for debugging)
if (_userDot)
{
_userDot.annotation = annotation;
_userDot.image = [UIImage imageNamed:@"mister_taco"];
_userDot.frame = CGRectMake(1, 1, 1, 1);
return _userDot;
}
else
return nil;
}
else {*/
return nil;
//}
}
Спасибо,
Brian