ユーザーがデモのために車を運転しているときにアプリケーションがどのように見えるかをシミュレートする必要があります。私は MKMapView を持っています。デモでは明らかに使用できない map.userLocation 機能を使用する、運転中のユーザーの外観をどのようにシミュレートできますか。
ありがとう!
ユーザーがデモのために車を運転しているときにアプリケーションがどのように見えるかをシミュレートする必要があります。私は MKMapView を持っています。デモでは明らかに使用できない map.userLocation 機能を使用する、運転中のユーザーの外観をどのようにシミュレートできますか。
ありがとう!
iPhoneシミュレーターでシミュレートする方法はありません。デバイスにロードして移動する必要があります。
まあ、私は何かを始めました、私はちょうど本質的にこれをしました
- (void)moveIcon:(MKAnnotationView*)locationView toLocation:(CLLocation*)newLoc
{
LocationAnnotation* annotation = [[[LocationAnnotation alloc] initWithCoordinate:newLoc.coordinate] autorelease];
[locationView setAnnotation:annotation];
[map setCenterCoordinate:newLoc.coordinate animated:YES];
}
次に、すべての頂点間のループでこの男を呼び出しますが、少し遅れます。かなり動作します。
私は iPhone 開発の専門家ではありませんが、マップ ビューはどのように座標を受け取りますか? CoreLocation API を呼び出す関数を使用する場合、特定の時間間隔で経度と緯度の値をランダムに生成する関数を作成し、代わりにマップ ビューにそこから座標を取得させることはできますか? ちょっとした考え。
より良い方法は、サブクラス化することであることがわかりましたMKUserLocation
:
class SimulatedUserLocation: MKUserLocation {
private var simulatedCoordinate = CLLocationCoordinate2D(latitude: 39, longitude: -76)
override dynamic var coordinate: CLLocationCoordinate2D {
get {
return simulatedCoordinate
}
set {
simulatedCoordinate = newValue
}
}
}
次に、それを注釈として追加しmapView.addAnnotation(SimulatedUserLocation())
ます。(最初に実際の場所を非表示にすることもできますmapView.showsUserLocation = false
)
iOS は、実際のユーザーの場所とまったく同じように注釈をレンダリングします。
dynamic
プロパティで使用されているため、座標を変更すると KVO がトリガーされ、マップ上で移動します。
また、CoreLocation を含む iPhone シミュレーターで iPhone でのみ利用可能ないくつかの機能をシミュレートできると主張するiSimulateを確認することもできます。私はこれを自分で試していないので、走行距離は異なる場合があります。
運転をシミュレートするには、次の 2 つの基本機能を確立する必要があります。
アーカイブからの CLLocations の読み取り (デバイスでのドライブ テスト中にログに記録します)。理想的には、場所のタイムスタンプに基づいてこれを行います。つまり、ドライブ テスト中に受信した正確に同じ場所の更新を再現します。
ログから読み取った場所に基づいて、マップ上の MKAnnotationView の位置を更新します。
パート 1 では、CLLocationDispatchを見てみましょう。これは、CLLocation のアーカイブ/アーカイブ解除を提供し、それらを 1 つ以上のリスナーに (CLLocationManagerDelegate プロトコルを使用して) ディスパッチする便利なクラスです。
パート 2 については、Moving-MKAnnotationView をご覧ください。
答えはノーだ。では、コードと MKMapKit の間に抽象化レイヤーを追加してみてはどうでしょうか? 目的の xUnit テストを実行できます。