MKMapView dostaje swoje poglądy pin od sposobu jej delegata mapView:viewForAnnotation: Więc trzeba:
- Ustaw kontroler widoku za delegata mapy.
- Implementacja mapView: viewForAnnotation: w kontrolerze.
Ustaw kontroler jako delegat
@interface MapViewController : UIViewController <MKMapViewDelegate>
Mark interfejs z protokołem delegata. To pozwala ci ustawić kontroler jako delegata MKMapView w Interface Builder (IB). Otwórz plik .xib zawierający mapę, kliknij prawym przyciskiem myszy MKMapView i przeciągnij wylot delegate
do kontrolera.
Jeśli wolisz używać kodu zamiast IB, dodaj self.yourMapView.delegate=self;
w metodzie viewDidLoad kontrolera. Wynik będzie taki sam.
Wdrożenie MapView: viewForAnnotation:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
// this part is boilerplate code used to create or reuse a pin annotation
static NSString *viewId = @"MKPinAnnotationView";
MKPinAnnotationView *annotationView = (MKPinAnnotationView*)
[self.mapView dequeueReusableAnnotationViewWithIdentifier:viewId];
if (annotationView == nil) {
annotationView = [[[MKPinAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:viewId] autorelease];
}
// set your custom image
annotationView.image = [UIImage imageNamed:@"emoji-ghost.png"];
return annotationView;
}
Czy możesz wskazać mi przykład, jak to zrobić? Jestem nowy w stosunku do celu c. Dzięki – 3sl