4

私のアプリでは、MKPolyline を使用してユーザーのパスを追跡します。時々 (常にではありませんが、私には理解できません)、新しいライン セグメントがマップに追加されると、ライン全体が点滅します。そうでない場合もあります。これは、行を追加するために使用されているコードです。

CLLocationCoordinate2D coords[2];

coords[0] = CLLocationCoordinate2DMake(newLocation.coordinate.latitude, newLocation.coordinate.longitude);

coords[1] = CLLocationCoordinate2DMake(oldLocation.coordinate.latitude, oldLocation.coordinate.longitude);

MKPolyline* line = [MKPolyline polylineWithCoordinates:coords count:2];

[mapView addOverlay:line];

何か不足していますか?

編集: これは通常、アプリがバックグラウンドへの送信から戻ったときに発生します。ただし、 mapView.overlays 配列全体を変更するのではなく、オーバーレイを追加するだけなので、その理由は正確にはわかりません。...右?

4

2 に答える 2

1

これは関係ないかもしれませんが、Apple は位置認識プログラミング ガイドの「マップのオーバーレイ オブジェクトの管理」セクションで述べています...

マップ ビューはインターフェイス アイテムであるため、配列に対するすべての変更は overlays同期され、アプリケーションのメイン スレッドで実行される必要があります。

于 2011-12-08T00:23:58.343 に答える
0

マップをユーザーに表示する前に、フラッシュを取り戻そうとするのが最善の策だと思います。

次のいずれかを試してください。

[mapView setNeedsDisplay];

また

if ([[mapView overlays] count] > 0){
    [[[mapView overlays] lastObject] setNeedsDisplay];
}

これらをAppDelegate.mの「viewWillAppear」メソッドまたは「applicationWillEnterForeground」メソッドのいずれかに配置します。

于 2011-12-08T00:09:25.653 に答える