三蔵開発メモ

Web開発やインフラ関連のメモを共有します

MapKitでMKMapViewを表示し、任意の場所にピンを立てる。

MapKitの使い方で少々苦労したのでメモ

まず、「Linked Frameworks and Libraries」というところに「MapKit.framework」を追加。
xcodeの「Build Settings」などが選択できるページの「General」タブの下部にある)

MainViewController.m

#import <MapKit/MapKit.h>

@interface MainViewController ()<MKMapViewDelegate>

@property (storng, nonatomic)MKMapView *mapView

@end

@implementation MainViewController

- (id)init
{
    self = [super init];
    if (self) {
        
    }
    return self;
}

-(void)viewDidLoad
{
   //Map表示(画面いっぱい)
   //大きさを指定して初期化
    self.mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
    self.mapView.delegate = self;
    [self.view addSubview:self.mapView];

    //緯度と経度を設定(これは東京タワー)
    double latitude = 35.65858;
    double longitude = 139.745433;
    //Mapの表示を指定
    MKCoordinateRegion region = self.mapView.region;
    region.span.latitudeDelta = 0.05;    //緯度の倍率
    region.span.longitudeDelta = 0.05; //経度の倍率
    region.center = CLLocationCoordinate2DMake(latitude, longitude); //表示位置の緯度と経度
    [self.mapView setRegion:region animated:YES];
    
    //Pin表示
    MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
    annotation.coordinate = CLLocationCoordinate2DMake(latitude, longitude); //ピンをたてる位置を指定
    [self.mapView addAnnotation:annotation];
}

@end

MKMapViewを理解する上で大事なのが、
MKCoordinateRegionとMKPointAnnotation。
ほかのUIパーツのようにパーツそのもののプロパティに色々設定するのではなく、
mapviewはただ表示だけさせる。
regionというオブジェクトでどの位置に表示させて、倍率等をどうするか指定。
pinはannotationというオブジェクトで位置などを指定。
それぞれをmapviewにセットする。

絶対に挫折しない iPhoneアプリ開発「超」入門【iOS7対応】増補改訂版

絶対に挫折しない iPhoneアプリ開発「超」入門【iOS7対応】増補改訂版