#import «ViewController.h»

#import «MyAnnotation.h»

#import 

@interface ViewController () 

@property (nonatomic, strong) MKMapView *myMapView;

@end

@implementation ViewControllerРеализация в файле. m будет такой:

— (MKAnnotationView *)mapView:(MKMapView *)mapView

viewForAnnotation:(id )annotation{

MKAnnotationView *result = nil;

if ([annotation isKindOfClass: [MyAnnotation class]] == NO){

return result;

}

if ([mapView isEqual: self.myMapView] == NO){

/* Мы собираемся обработать это событие только для того Map View,

который мы создали ранее. */

return result;

}

/* Сначала приводим тип той аннотации, для которой этот Map View

запустил данное сообщение делегата. */

MyAnnotation *senderAnnotation = (MyAnnotation *)annotation;

/* С помощью метода класса, определенного в нашем собственном

классе аннотаций, попытаемся сделать многоразовый идентификатор

для того маркера, который сейчас создаем. */

NSString *pinReusableIdentifier =

[MyAnnotation

reusableIdentifierforPinColor: senderAnnotation.pinColor];

/* Пользуясь идентификатором, полученным ранее, попытаемся

повторно применить маркер в отправляющем Map View. */

MKPinAnnotationView *annotationView = (MKPinAnnotationView *)

[mapView

dequeueReusableAnnotationViewWithIdentifier: pinReusableIdentifier];

if (annotationView == nil){

/* Если нам не удастся повторно использовать имеющийся маркер,

создадим новый. */

annotationView = [[MKPinAnnotationView alloc]

initWithAnnotation: senderAnnotation

reuseIdentifier: pinReusableIdentifier];

/* Убеждаемся, что видны выноски поверх каждого маркера в случае,

если мы присвоили каждому маркеру заголовок и/или подзаголовок. */

[annotationView setCanShowCallout: YES];

}

/* Теперь (независимо от того, использовали мы многоразовый маркер

или создали новый) убеждаемся, что цвет маркера совпадает с цветом

аннотации. */

annotationView.pinColor = senderAnnotation.pinColor;

result = annotationView;

return result;

}

— (void)viewDidLoad {

[super viewDidLoad];

/* Создаем карту такого же размера, как и наш вид. */

self.myMapView = [[MKMapView alloc]

initWithFrame: self.view.bounds];

self.myMapView.delegate = self;

/* Задаем для карты тип Standard. */

self.myMapView.mapType = MKMapTypeStandard;

self.myMapView.autoresizingMask =

UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleHeight;

/* Добавляем ее к нашему виду. */

[self.view addSubview: self.myMapView];

/* Это просто один образец местоположения. */

CLLocationCoordinate2D location;

location.latitude = 50.8219 16929 07181;

location.longitude = -0.13 81176 71012 87842;

Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Похожие книги