今回は現在位置を地図上にピンを立てて表示してみる。
実装
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