今回は現在位置を地図上にピンを立てて表示してみる。
実装
MKMapView を使うにはまず MapKit.framework をプロジェクトへ追加する。
そして必要なヘッダをインポートする。
#import <MapKit/MapKit.h>
続いてコントローラにアウトレットとアクションを追加する。
@interface CoreLocationSampleViewController : UIViewController{ CLLocationManager* locationManager_; MKMapView* mapView_; }
Interface Builder を開き MKMapView を配置した後、コントローラのアウトレットへ接続しておく。また "reload"ボタンを配置してやはりコントローラをターゲットとしておく。
次に MKAnnotationプロトコルを実装したクラスをひとつ用意する。
@interface SimpleAnnotation : NSObject <MKAnnotation>{ CLLocation* location_; } @property (nonatomic, copy) CLLocation* location; @end
@implementation SimpleAnnotation @synthesize location = location_; #pragma mark - #pragma mark MKAnnotation - (CLLocationCoordinate2D)coordinate { return self.location.coordinate; } - (NSString*)title { return @"Hello!"; } @end
これをコントローラで "reload"ボタンが押された時に MKMapView へ追加する。
#pragma mark - #pragma mark Event - (IBAction)reload:(id)sender { SimpleAnnotation* annotation = [[[SimpleAnnotation alloc] init] autorelease]; annotation.location = self.locationManager.location; [self.mapView addAnnotation:annotation]; }
実行
さて実行してみよう。
実行直後は大西洋を中心とした世界地図が表示される。
reloadボタンを押した後、日本を探すと...あった。
拡大。
ピンをクリックすると -[MKAnnotation title] の文字列が噴出しで表示される。
ソースコード
GitHubからどうぞ。
CoreLocationSample at 2010-10-12 from xcatsan's iOS-Sample-Code - GitHub
参考情報
【コラム】実践! iPhoneアプリ開発 (16) ロギングアプリの作り方 (2) - Map Kitで地図を表示する | エンタープライズ | マイコミジャーナル
Responses
Leave a Response