MKMapView получает свои виды выводов из метода делегата mapView: viewForAnnotation: Так что вам необходимо:
- Установить контроллер представления в качестве делегата карты.
- Реализация mapView: viewForAnnotation: в вашем контроллере.
Установите ваш контроллер в качестве делегата
@interface MapViewController : UIViewController <MKMapViewDelegate>
Отметьте интерфейс с помощью протокола делегата.Это позволяет вам установить контроллер как делегат MKMapView в Интерфейсном Разработчике (IB).Откройте файл .xib, содержащий вашу карту, щелкните правой кнопкой мыши MKMapView и перетащите выход delegate
на свой контроллер.
Если вы предпочитаете использовать код вместо IB, добавьте self.yourMapView.delegate=self;
в методе viewDidLoad контроллера.Результат будет таким же.
Реализация 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;
}