地図上に緯度・経度をプロットする
前回から始まった「移動ログアプリ」作りは、GPS機能を使って現在地の緯度・経度の情報を取得するところまで進めました。今回はiPhone上に地図を表示して、前回取得した緯度・経度を、その上にプロット(座標を用いて図示)していきたいと思います。
鍵となるのが、iPhoneに搭載されている「マップ・キット(Map Kit)」というフレームワークです。これを利用することで簡単に地図が表示できるほか、地図上にピンを追加したり、経路探索してその結果を表示したり、線や円などの図形が書けたりできるようになります。地図情報を扱うアプリ作成には必須といえるマップ・キットを使って、自分が通った地点を一定間隔で地図上にピンで表示していく機能を追加しましょう。
通い慣れた道でも、地図の上で見ると、今まで気がつかなかった抜け道があったりなど、意外な発見があるものです。散歩やサイクリングのお供に、自分で作った移動ログアプリをiPhoneにインストールして、お出かけをしてみましょう。
【STEP 1】プロジェクトを作ろう
Xcodeで前回作ったプロジェクトを開きましょう。まずは左側のナビゲータ領域から、青いアイコンの[Walk Memory]と書かれたプロジェクト名の部分を選択します。
画面中央上部の[General]タブを選択します。そして、画面中央下にある[Linked Frameworks and Libraries]の欄の[+]ボタンを押しましょう。
表示された画面から[MapKit.framework]を選んで、[Add]ボタンを押して追加します。これでアプリの中でマップ・キットのフレームワークが利用できるようになります。
【STEP 2】マップビューの追加
画面左側のナビゲータ領域で[Main.storyboard]を選択し、右下のオブジェクト・ライブラリから地図のアイコンの[MKMapView]をドラッグして、iPhoneのビューの上に追加します。これでiPhoneの画面上に地図が表示されるようになります。
追加したMapビューを選択して、Xcodeのメニューから[Editor]→[Resolve Auto Layout Issues]→[Reset to Suggested Constraints]を実行してください。こうすることで、どんなサイズのiPhoneでも地図が画面全体に表示されるように調整されます。
【STEP 3】スウィフトのコードを書く
(1)画面左側のナビゲータ領域で[ViewController.swift]を選択して、プログラムのコードを書いていきます。
(2)まずはプログラムの先頭にマップ・キットのためのimport文を1行追加します。こうすることで、プログラムの中からマップ・キットの機能が使えるようになります。
(3)位置管理と位置ラベルの変数の下に、地図のビューを参照するための変数と、時刻の表示方法を設定するための変数を追加しましょう。時刻表示は、ピンに名前を付けるときに使います。
(4)これらの変数を初期化するためのコードを、viewDidLoad()メソッドの最後に追加します。先ほど貼り付けたマップビューを「地図ビュー」に取得し、日本標準時で時間を短く表示するように時刻表示の設定を行います。
(5)最後に、GPSの位置情報が取得されるたびに呼び出されるメソッドの一番下に、新しいピンを作って取得した緯度・経度を設定し、その名前に現在時刻を設定した上でマップビューにピンを追加するコードを書きます。下の2行で、追加したピンを選択して常に新しいピンが画面に表示されるようにしています。このメソッドはおよそ10メートル歩くたびに呼ばれるようになっていますので、一定間隔でピンが追加されていきます。
(6)このアプリを自分のiPhoneにインストールして、大阪の街をあちこち歩き回ったときの様子です。皆さんも、自分のアプリを持ち歩いてデバッグしてみてください!
【まとめ】
今回は位置情報を取得して表示するアプリを作成しました。このアプリはシミュレータ上でも動かせますし、iPhoneにインストールして歩き回ると、いろんな場所の緯度・経度を計測できます。
次回のテーマ
移動ログアプリを作ってみよう③(移動距離を計算してツイート)
※今回のソースコードはMac Fan WEB上の本連載記事内に記載されたURLよりダウンロードできます。こちらを参照して、ぜひXcodeにチャレンジしてみましょう。
●サンプルコードURL●
https://goo.gl/bZv2bp
【冒険記】
スウィフトのプログラミングをしていると、コード上に赤や黄色のビックリマークのアイコンが出てくることがあります。赤いアイコンは「エラー」で、修正しないと実行できない重要なものですが、黄色いアイコンは「警告」で、修正しなくても実行できる軽度な問題を知らせています。
【冒険記】
黄色の「警告」アイコンは、軽度だからといっていくつも放置しておくと、思わぬところで予想外の動作が出て困ってしまうことがあります。赤いアイコンの問題も黄色いアイコンの問題も、ひとつひとつ丁寧に取り除いて、常に問題がゼロになることを目指しましょう。
Dr.さざめき(aka.沼田哲史)
1978年1月生まれ。某大学でプログラミングを教えつつ、ふらっとヨーロッパ旅行に出かけて美味しいものを食べ歩いたり、時折、iOSプログラミングの本を出したり。Mac歴16年。いつかアメリカ西海岸でお昼から美味しいIPAビールを飲みながらプログラミングするのが夢です。Twitter @sazameki