2010年10月12日火曜日

CoreLocation - [2] マップに表示する

[前回] Cocoaの日々: CoreLocation - [1] 現在地の緯度経度を取得する

今回は現在位置を地図上にピンを立てて表示してみる。

実装


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で地図を表示する | エンタープライズ | マイコミジャーナル

0 件のコメント:

コメントを投稿