XcodeではGPXファイルを使用することで iOSシミュレータおよびiOSデバイス実機 の位置情報をシミュレートすることが出来ます。このエントリではGPXファイルの説明および作成方法、Xcodeでの使用方法について解説しています。
GPXファイルを作る
GPXファイルとは
位置情報を取り扱うファイル形式の一つで、Garminのトレッキング用デバイスやYahoo! ルートラボなどで経由地(=ルート)を表現するために使われているメジャーな形式です。実体はXMLが記述されたテキストファイルで、waypoint形式のサンプルは次のようなデータになっています。
<?xml version="1.0"?>
<gpx version="1.1" creator="drive.py coded by basuke">
<wpt lat="35.681507" lon="139.765581">
<name>Tokyo Station, 1 Chome-9 Marunouchi, Chiyoda, Tokyo, Japan</name>
</wpt>
<wpt lat="35.681507" lon="139.765581"/>
<!-- 中略 -->
<wpt lat="35.466046" lon="139.623581"/>
<wpt lat="35.466046" lon="139.623581">
<name>Yokohama Station, 2 Chome-16 Takashima, Nishi Ward, Yokohama, Kanagawa Prefecture, Japan</name>
</wpt>
</gpx>
GPXはwpt(ウェイポイント), rte(ルート), trk(トラックポイント)の3種が存在しますが、wpt, trkを確認したところXcodeはwptのみ対応しているようです。
GPXファイルの作り方
いくつか方法があります。
- GarminなどのGPSデバイスから生成したファイルを使う
- ルートラボから適当なデータをダウンロードする
- 自作する
テストでいくつかのバリエーションを試すには自作が良いでしょう。id:basuke作のdrive.py
(iOSシミュレータで使えるGPXファイルジェネレータ)を使うとGoogle Direction Serviceを使用したルートデータをGPXファイルにすることが出来ます。
先のURLに書かれているpythonスクリプトをdrive.py
という名称で保存して、次のようにコマンドを実行します。
$ python drive.py "東京駅" "横浜駅" > tokyo_to_yokohama.gpx
これで東京駅から横浜駅までのルートデータをtokyo_to_yokohama.gpx
というGPXファイルとして作成されました。
Xcodeでシミュレーション
位置情報を使ったアプリケーションを作る
テスト用のアプリを作ったので利用してください!
GPXファイルをプロジェクトに登録する
作成したGPXファイルをプロジェクトに登録します。Xcodeに追加するだけで、シミュレーション用のデータとして認識されます。
位置情報をシミュレーションする
アプリを実行すると地図が表示されます。
Xcode内の下部ペインから矢印アイコン的なものをクリック。
先ほど登録したtokyo_to_yokohama.gpx
が選択肢として表示されているはずです。tokyo_to_yokohama
をクリックするとシミュレーションが開始されます。
アプリのビューを確認すると、現在地が移動しているのがわかると思います。
注意点
位置情報はOS内で1つのみ扱われるので、 位置情報を取り扱うすべてのアプリに影響があります。 Movesや僕の来た道などのライフログ系アプリは、位置情報のシミュレーションを行うことによってログが汚染されるのでお気をつけください(何回か泣きました)。