以下のコードは、一意のピンと 1 つの注釈に対して完全に機能します。あまり多くの変更を加えずに、より多くのピン、場所、注釈を表示できるようにしたいと考えています。
MyAnnotationPins
次の行で呼び出されるクラスがあります。
MyAnnotationPins.h
@interface MyAnnotationPins : NSObject < MKAnnotation>
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, readonly, copy) NSString *title;
@property (nonatomic, readonly, copy) NSString *subtitle;
-(id)initWithCoordinate:(CLLocationCoordinate2D)annotCoordinate title:(NSString*)annotTitle subtitle:(NSString*)annotSubtitle;
MyAnnotationPins.m
@synthesize coordinate;
@synthesize subtitle;
@synthesize title;
-(id)initWithCoordinate:(CLLocationCoordinate2D)annotCoordinate title:(NSString*)annotTitle subtitle:(NSString*)annotSubtitle
{
self = [super init];
if (self)
{
coordinate = annotCoordinate;
subtitle = [[NSString alloc] initWithString:annotSubtitle];
title = [[NSString alloc] initWithString:annotTitle];
}
return self;
}
そしてView Controllerで次のコード:
SecondViewController.h
import "MyAnnotationPins.h"
@interface SecondViewController : UIViewController < MKMapViewDelegate >
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (strong, nonatomic) MyAnnotationPins* biblioAnnotation;
SecondViewController.m での実装:
- (void)viewDidLoad
{
[super viewDidLoad];
mapView.delegate = self;
MKCoordinateRegion mapRegion;
mapRegion.center.latitude=-18.924129;
mapRegion.center.longitude=-48.283963;
mapRegion.span.latitudeDelta=0.2;
mapRegion.span.longitudeDelta=0.2;
[mapView setRegion:mapRegion animated:YES];
///// This is just for One annotaion/Pin on Map /////
CLLocationCoordinate2D parliamentLocation = CLLocationCoordinate2DMake(-18.924129, -48.283963);
biblioAnnotation = [[MyAnnotationPins alloc]
initWithCoordinate:parliamentLocation
title:@"Ponto Biblioteca"
subtitle:@"Taxi proximo"];
[mapView addAnnotation:biblioAnnotation];
複数のピンと注釈が必要な場合は、以下の CLLocation インスタンスをコピーし、次の属性を変更します
CLLocationCoordinate2D secondLocation = CLLocationCoordinate2DMake(another latitude, another longitude);
secondAnnotation = [[MyAnnotationPins alloc]
initWithCoordinate:secondLocation
title:@"Second Title"
subtitle:@"Second subtitle"];
[mapView addAnnotation:secondAnnotation]; <code>
3 番目、4 番目、5 番目などについても同様です。SecondViewController.h の最初のプロパティと同様に、View Controller で secondLocation プロパティを作成し、SecondViewController.m ファイルで @synthesize secondAnnotation プロパティを作成することを忘れないでください。
@property (strong, nonatomic) MyAnnotationPins* secondAnnotation;