У меня есть приложение, которое использует MKMapView, и в какой-то момент в приложении мне нужно удалить все текущие контакты на карте, используя
[mapView removeAnnotations:mapView.annotations]
И затем я хочу снова показать текущее местоположение пользователя
mapView.showUserLocation = YES
Но я могу только сделать так, чтобы он снова отображался как обычный вывод, потому что класс представления userLocation не является общедоступным, поэтому я не могу вернуть представления этого типа.Вот мой код
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id<MKAnnotation>)annotation
MKPinAnnotationView* annView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"currentloc"];
if (!annView) {
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
annView.pinColor = MKPinAnnotationColorRed;
annView.animatesDrop=TRUE;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
if ([annotation isKindOfClass:[DraggableAnnotationAM class]] ) annView.draggable =YES;
return annView;
}
else {
if ([annotation isKindOfClass:[DraggableAnnotationAM class]] ) annView.draggable = YES;
annView.annotation = annotation;
return annView;
}
Кроме того, благодаря отражению я обнаружил, что
MKUserLocationView
- это класс, используемый для отображения текущего местоположения, но поскольку он не является общедоступным, его небезопасноиспользовать, и мое приложение продолжает падать, и я уверен, что есть более простой способ.
Можно ли делать то, что я хочу, или я просто никогда не должен удалять аннотацию местоположения пользователя mapView?
Спасибозаранее