プログラマでありたい

おっさんになっても、プログラマでありつづけたい

iPhoneでカレログを作ろう その3 地図の表示

 前回までのコーディングで、位置情報の取得ならびにDBへの格納が出来ました。今回はそのデータを使って地図を表示しようと思います。
 地図を使ったサンプルは沢山ありますが、DB連携というところでWeatherMap、経路の描画にKMLViewerを参考にします。ちなみにKMLというのは地図データのファイル形式の規格の一つですが、名前の由来はKeyhole Markup Language。Google Earthの元となったKeyholeから来ているようです。会社はGoogleに買収されましたが名前は規格として残り続けたんですね、Keyhole。横道にそれましたが。
Map Kit Framework Reference
KMLViewer
WeatherMap


 まずはMapKit.frameworkを追加しましょう。地図を表示するコントロールビューを作りましょう。今回はMapViewControllerとして作成しています。ヘッダーにMapKit/MapKit.hを追加し、IBOutletのMKMapViewの変数を宣言します。nibファイルのviewにMapViewを配置して、先ほどのmap変数と結びつけます。これだけで、ひとまず地図が表示出来るようになります。

@interface MapViewController : UIViewController<MKMapViewDelegate> {
    id  _delegate;
    IBOutlet MKMapView *map;
    
}
@property (nonatomic, assign) id delegate;
@property (nonatomic, retain) MKMapView *map;


 次は、現在の位置を元に地図を表示するように変更してみます。
MKCoordinateRegionのcenterで、中心地の経度・緯度を設定します。
縮尺度はspanで設定しますが、ちょっとややこしいです。
ここで設定する値は画面の上端と下端の緯度の差並びに、
画面左端と右端の経度の差になります。
 ということで、最大の緯度から最小の緯度を引いたものと
最大の経度から最小の経度を引いたものをセットしておけばよいでしょう。
画面に余裕を持たせたければ、それぞれ適当な値を掛けておけばよいと思います。

- (void)viewDidLoad
{
    [super viewDidLoad];
    MKCoordinateRegion region;
    region.center.latitude = 34.6760065320036; // 緯度
    region.center.longitude = 135.50026706781; // 経度
    region.span.latitudeDelta = 0.0042742764933;
    region.span.longitudeDelta = 0.0073050094;
    
    [self.map setRegion:region animated:NO];
}


 少し長くなったので、今回はこのあたりにします。
次回は地図の上に、移動した経路の表示を重ねあわせるようにします。
enjoy!!


目次
iPhoneでカレログを作ろう その1 位置情報の取得
iPhoneでカレログを作ろう その2 DBへのデータ格納
iPhoneでカレログを作ろう その3 地図の表示


Google Maps Hacks 第2版 ―地図検索サービスをもっと活用するテクニック
Rich Gibson Schuyler Erle
オライリー・ジャパン
売り上げランキング: 127779