iOS. Приемы программирования
Шрифт:
switch (paramColor){
case MKPinAnnotationColorRed:{
result = REUSABLE_PIN_RED;
break;
}
case MKPinAnnotationColorGreen:{
result = REUSABLE_PIN_GREEN;
break;
}
case MKPinAnnotationColorPurple:{
result = REUSABLE_PIN_PURPLE;
break;
}
}
return result;
}
— (instancetype)initWithCoordinates:(CLLocationCoordinate2D)paramCoordinates
title:(NSString*)paramTitle
subTitle:(NSString*)paramSubTitle{
self = [super init];
if (self!= nil){
_coordinate = paramCoordinates;
_title = paramTitle;
_subtitle = paramSubTitle;
_pinColor = MKPinAnnotationColorGreen;
}
return self;
}
@end
Выполнив реализацию класса MyAnnotation, его нужно задействовать в приложении (в данном примере мы воспользуемся контроллером вида). Вот верхняя часть файла реализации контроллера вида:
#import «ViewController.h»
#import «MyAnnotation.h»
#import <MapKit/MapKit.h>
@interface ViewController <MKMapViewDelegate>
@property (nonatomic, strong) MKMapView *myMapView;
@end
@implementation ViewControllerРеализация в файле. m будет такой:
— (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id <MKAnnotation>)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;
/* Добавляем ее к нашему виду. */
Поделиться:
Популярные книги
Часограмма
5. Часодеи
Детские:
детская фантастика
9.43
рейтинг книги
Я не князь. Книга XIII
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Адептка второго плана
Попасть в историю
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Воплощение Похоти
1. Воплощение Похоти
Фантастика:
юмористическое фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Личный аптекарь императора. Том 4
4. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Старый, но крепкий 5
5. Культивация без насилия
Фантастика:
рпг
аниме
уся
фэнтези
5.00
рейтинг книги
Газлайтер. Том 29
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Отмороженный 12.0
12. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00
рейтинг книги
На границе империй. Том 7. Часть 3
9. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.40
рейтинг книги
Моров. Том 3
2. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Двойник короля 15
15. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Жут
Приключения:
вестерны
6.25
рейтинг книги
Личный аптекарь императора
1. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00