66
69

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XcodeでiOSデバイスの位置情報をシミュレートする

Last updated at Posted at 2014-01-08

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に追加するだけで、シミュレーション用のデータとして認識されます。

Menubar_and_gpx_and_gpx_and_MBGPXTest_xcodeproj_—_MBAppDelegate_h-2.png

位置情報をシミュレーションする

アプリを実行すると地図が表示されます。

スクリーンショット 2014-01-08 15.58.40.png

Xcode内の下部ペインから矢印アイコン的なものをクリック。

MBGPXTest_xcodeproj_—_MBAppDelegate_h.png

先ほど登録したtokyo_to_yokohama.gpxが選択肢として表示されているはずです。tokyo_to_yokohamaをクリックするとシミュレーションが開始されます。

Pasted_Image_1_8_14__16_04-4.png

アプリのビューを確認すると、現在地が移動しているのがわかると思います。

Failed to upload スクリーンショット 2014-01-08 16.07.04.png: Monthly upload quota exceeded


注意点

位置情報はOS内で1つのみ扱われるので、 位置情報を取り扱うすべてのアプリに影響があります。 Movesや僕の来た道などのライフログ系アプリは、位置情報のシミュレーションを行うことによってログが汚染されるのでお気をつけください(何回か泣きました)。

66
69
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
69

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?