2011-10-17 2 views
10

GPXルートまたはトラックを使用してXcode 4.2の動作に依存する位置認識アプリケーションをテストするのに成功した人はいますか? GPXファイルで単一のウェイポイントを使用したり、一連のウェイポイントを繰り返し処理したりすることもできましたが、スピードとコース情報を提供する方法でトラックを追跡することはできませんでした。私は、ドライブ、手作りのルートとトラック、およびTrailrunnerで作られたルートから記録されたトラックを試しました。Xcode 4.2でGPXルートまたはトラックを使用してテストする

この機能は利用できないかもしれませんが、アップルはシミュレータで高速ドライブを提供している可能性があります。私は、デバイス上と私が指定できる場所で同様のことをやりたいと思っています。誰も思考を持っていますか?

+0

を使用して互換性のGPXファイルに変換することができます。私はあなたに合っていれば、すでにWWDC開発ツールのKickoff Video(17:44)に表示されているようになっていますか?これは、記録されたルート(たとえば、everytrial.comからダウンロードしたもの)を使用しても問題なく動作します。どの高速道路ドライブを参照していますか? – brainray

+0

シミュレータには、Appleが提供しているいくつかの定義済みのトラックから選択できるメニューがあります。スピードとコースの情報は私が欲しいものです。シミュレータで定義済みのトラックを使用すると表示されますが、自分のトラックを使用すると、デバイスやシミュレータでは機能しません。 – RPeck

答えて

4

最も良い方法は、ファイルを読み込んでCLLocationイベントを生成する独自のシミュレータクラスを作成して、完全に制御できるようにすることです。 GPXファイルには速度と見出しが含まれていないため、あなた自身で計算する必要があります。私が使用した基本的なシミュレーションループは次のとおりです。

Simulate{ 
    if (!eof) { 
    Read the next waypoint 
    Calculate distance, dt (delta time), bearing and speed (distance/dt) from the previous waypoint 

    Generate a CLLocation object and call the didUpdateToLocation delegate method 
    Peek at the next waypoint and calculate next_dt 
    Scale next_dt // as desired for faster playback (e.g. dt/2 would be 2x) 
    Start an NSTimer with next_dt as the duration 
    } 
} 

When the timer fires, call Simulate again 

注:CLLocationは不変で、initメソッドは、スピードと見出しを設定する方法がありませんでしたので、最近まで、合成CLLocationsはやや問題がありました。これはiOS 4.2で修正されました。

+0

私はおそらくスピードと見出しがGPX拡張でサポートされていると思ったが、私が見つけた唯一のもの(GarminとHumminbirdのもの)はそうではない。もし誰かが別のことを知っているなら、私は訂正します。 –

+0

これは、デバイス自体で発生する唯一の方法と思われます。 GPX形式では、コースとスピードタグが使用できますが、あなたが確認したように、GPSで記録されているとは限りません。しかし、いくつかのアプリはこの情報を記録します。シミュレータについては、Steve Madsenの議論のように、同様の方法を使ってシミュレーションファイルを生成することができます。 – RPeck

4

Freewayドライブは、/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreLocation.framework/Support/SimulationScenarios/Freeway Drive.plistの1.6 MBファイルで定義されているようです。 2つのキー、OptionsLocationsを持つ辞書です。 Options自体は2つのキーを持つ辞書であり、リバースエンジニアリングされている可能性があります。一方、Locationsは、NSDataの大きな配列(2240項目)であり、それぞれ約724バイトです。最初の8バイトは "bplist00"にデコードされるので、これらはそれぞれplistです。私はディスクに書きましたが、Xcodeのプロパティリストエディタは、それが壊れていると主張しています。

このファイルが存在するディレクトリは、その他の缶詰の場所とルートも存在します。私はファイルの1つを複製してシミュレータを再起動し、新しいファイルが[デバッグ]メニューに表示されました。

あなた自身のファイルを追加する上での最大の問題は、将来のXcodeアップデートがそれらを消去する可能性があることです。しかし、オリジナルをどこかに置いておくことはそれほど重要ではありません。

+0

私はまだこれを発見していませんでした。それらのbplist00行のそれぞれがCLLocationオブジェクトのアーカイブであるように見えます。おそらくGPXトラックから同様のファイルを生成するためのツールを書くことができますが、それはシミュレータでのみ利用可能です。私は本当にデバイスでこれを行うことができるようにしたいと思います。 – RPeck

+0

アップルは、Wi-Fi、セルタワー、GPSの組み合わせで位置測定をネイティブにサポートしているため、アップルがデバイス上の位置の変化をシミュレートする方法を提供するのではないかと疑います。場所の更新を偽装するために、独自のコードをロールバックする必要があります。 –

+2

アップルは、単一の場所をサポートし、デバイスのgpxファイル内の一連のポイントをサイクリングします。コースやスピードでデータを移動することはサポートされていないようです。 – RPeck

0

Googleマップを使用して、複雑なルートをプロットし、その後、私はスピードやコース情報があるかどうかわからないんだけどhttps://mapstogpx.com/mobiledev.php

関連する問題