2013年7月23日火曜日

MapKit で現在地をマップ中心に表示し続ける



MacBookが手に入ったので早速マップ表示するiPhoneアプリを作ってみることにした。
とりあえず現在地表示。

やりかた

1.Xcodeプロジェクト作成

何はともあれ iPhoneアプリを作るのでXcode起動してプロジェクト作成。


どんなアプリケーションにするか聞いてくるので、今回はSingle View Applicationを選択。


プロジェクト名は適当にMapKitSampleとかにした。
「Use Storyboards」にチェック(画面レイアウトするのに使うっぽい)
「Use Automatic Reference Counting」にチェック(コンパイラがオブジェクトの管理してくれるっぽい)


プロジェクトフォルダ作る場所を適当に選んでCreate


プロジェクトできた。わーい。


とりあえず、SimulatorがiPadになってるからiPhoneに変更


2.必要なFrameworkの追加

画面中央の「Summary」のところを下にスクロールしていくと「Linked Frameworks and Libraries」があるので、「+」ボタンで追加。


今回必要なのはMapKitとCoreLocationってやつなので、順に追加する。


両方追加するとこんな感じ。


3.画面にMapViewを貼り付ける

MainStoryboard_iPhone.storyboardを選択して画面レイアウトを表示する。


右下の〜Viewとかがあるところを下にスクロールしていくとMapViewがあるのでドラッグドロップで貼り付ける。
これでもうマップ表示できるみたい。あら簡単。


4.コード書く

今回は現在地を表示するって決めたので、ちょっとだけコード書く。
ViewController.hを選択してソースを開く。
Frameworkを読み込むために下記コードを追加する。(なんかソースの表示がおかしくなっちゃう。)
#import 


良い感じに書けたら、その下のViewController.mを選択してソースを開く。
下記コードを追加する。
MKMapView *_mapView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 地図の表示
    _mapView = [[MKMapView alloc] init];
    _mapView.frame = self.view.bounds;
    _mapView.mapType = MKMapTypeStandard;
    _mapView.showsUserLocation = YES;
    [self.view addSubview:_mapView];
    [_mapView.userLocation addObserver:self
                            forKeyPath:@"location"
                               options:0
                               context:NULL];
}

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context {
    
    // 地図の中心座標に現在地を設定
    _mapView.centerCoordinate = _mapView.userLocation.location.coordinate;
    
    // 表示倍率の設定
    MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);
    MKCoordinateRegion region = MKCoordinateRegionMake(_mapView.userLocation.coordinate, span);
    [_mapView setRegion:region animated:YES];
}


これも良い感じに書けたら完成。
左上の再生ボタンを押すとiPhoneのSimulatorが起動して実行される。


とってもいい感じに出来ました。

Objective-Cは全然わかんないけどaideal.jpさんのお陰で出来ました。
http://aidealjp.blog.fc2.com/blog-entry-23.html

調べてるうちにわかったけど、MapKitとGoogleMapは違うんだね。
次はGoogle Maps SDK for iOSを使ってやってみようかな。

スポンサーリンク

Related Posts Plugin for WordPress, Blogger...