mkmapviewでルートを運転するユーザーをシミュレートする方法は?
-
18-09-2019 - |
質問
ユーザーがデモのために運転しているときにアプリケーションがどのように見えるかをシミュレートする必要があります。 mkmapviewがあります。マップを使用するユーザーの運転の外観をシミュレートするにはどうすればよいですか。
ありがとう!
解決 2
さて私は何かが起こった、私は本質的にこれをしただけです
- (void)moveIcon:(MKAnnotationView*)locationView toLocation:(CLLocation*)newLoc
{
LocationAnnotation* annotation = [[[LocationAnnotation alloc] initWithCoordinate:newLoc.coordinate] autorelease];
[locationView setAnnotation:annotation];
[map setCenterCoordinate:newLoc.coordinate animated:YES];
}
次に、この男をすべての頂点の間のループで、わずかな遅延で呼びます。非常にQellを動作させます。
他のヒント
iPhoneシミュレーターでシミュレートする方法はありません。デバイスにロードして移動する必要があります。
私はiPhone開発者の専門家ではありませんが、マップビューはどのように座標を受信しますか? Corelocation APIを呼び出す関数を使用している場合、特定の時間間隔で経度と緯度の値をランダムに生成し、マップビューに代わりに座標を引っ張らせる関数を書くだけですか?ちょっとした考え。
チェックアウトすることもできます イジメル iPhoneシミュレーターのiPhoneでのみ利用可能ないくつかの機能をシミュレートできると主張しているのは、Corelocationを含む。私はこれを自分で試したことがないので、あなたの走行距離は異なるかもしれません。
運転をシミュレートするには、2つの基本的な機能を確立する必要があります。
アーカイブからのcllocationsを読み取ります(ドライブテスト中にデバイスを使用してログに記録します)。理想的には、場所のタイムスタンプに基づいてこれを行うこと、つまり、ドライブテスト中に受信したまったく同じ場所の更新を再現します。
ログから読み取られた場所に基づいて、マップ上のmkannotationViewの位置を更新します。
パート1については、ご覧ください CllocationDispatch, 、cllocationのアーカイブ/アーカイブを提供し、1人以上のリスナーに派遣する便利なクラス(CllocationManagerDelegateプロトコルを使用)。
パート2については、ご覧ください moving-mkannotationView.
私はサブクラスにもっと良い方法だと思いました 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
コンピューターで使用されているため、Codsinateの変更はKVOをトリガーし、マップ上で移動します。
答えはノーだ。では、コードとMKMAPKITの間に抽象化レイヤーを追加してみませんか?目的のためにXunitテストを行うことができます。