У меня есть приложение, которое использует 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?
заранее спасибо