2012-04-07 10 views
5

私は、ユーザの位置をリアルタイムで追跡し、コースをMKMapViewにプロットするiOS 5アプリケーションを作成しています。 GPSの読み込みが行われるたびに、現在の場所と古い場所の間にポリラインを描画し、最終的にユーザーが移動した場所のトラック(またはブレッドクラム)を作成します。MKPolylinesを拡張するか、複数のMKPolylinesを作成しますか?

私は以下のようなコードを使用して、私は事前にすべてのCLLocationCoordinate2D座標を持っていると仮定して、トラックを描画するMKPolylineMKPolylineViewを使用して快適午前:私だけCLLocationCoordinate2Dを取得しておりますので、

MKPolyline *route = [MKPolyline polylineWithCoordinates:coordinates count:[self.coordinateArray count]];   
[mapView addOverlay:route]; 

しかし、 (locationManager:didUpdateToLocation:fromLocation:デリゲートメソッドが呼び出されたとき)新しいポリラインを描画するための最良の方法がわかりません。

既存の行を拡張することができます(これはC言語の経験をあまり持っていないCベースのcoordinates配列に追加することができますか?これを行う方法がわかりません)。次の2つの座標の間に新しいポリラインを作成する必要がありますマップ上に個別のポリラインが多すぎると、パフォーマンスやメモリの使用に影響を与える可能性があると聞いています...)?

ありがとうございます。

+1

Appleサンプルアプリケーション[Breadcrumb](http://developer.apple.com/library/ios/#samplecode/Breadcrumb/Introduction/Intro.html)を見たことがありますか? – Anna

答えて

5

まず、how to update MKPolyline/MKPolylineView?、特にBreadcrumbサンプルコードへのリンクを参照してください。それはあなたが必要とするもののための良い出発点かもしれません。

しかし、そのCrumbPathオブジェクトの重要な部分がreallocの呼び出しであることがわかります。ですから、ポイントの配列を効率的に格納するには、Cスタイルの配列を管理する方法を知っておく必要があります。はい、これは簡単ではありません。はい、Cスタイルの配列操作はメモリリークの招待です。

パンくずサンプルは、reallocを使用して配列のサイズを変更します。アレイが使用するメモリをNSMutableDataタイプで割り当てることで、少し安全にすることができます。 Is it ok to use “classic” malloc()/free() in Objective-C/iPhone apps?への回答として推奨されます。他の解決策を読んで、同じ仕事をしている普通のC malloc()free()の機能を見てください。 NSMutableDataには非常に便利なincreaseLengthBy:メソッドがあります。

すべてのC学生がsizeof()を間違って使用しようとする理由とその使い方を理解すると、Cのメモリ管理について理解できます。

+0

あなたの返事をありがとう(そしてBreadcrumbのサンプルコードに私を向ける!)。 – Skoota

+1

ブレッドクラムサンプルリンクが壊れています。私は新しいリンクを見つけました:http://developer.apple.com/library/ios/#samplecode/Breadcrumb/Introduction/Intro.html –

関連する問題