2010-12-05 16 views
0

私は今特別なものを開発している時点でObjective Cに問題があります。ユーザの位置に基づいてMKMapViewのアノテーションを表示

MKMapViewを初期化してユーザーの位置を表示した後、ユーザーの位置の隣にある注釈を表示する方法を実装したいと思います。私はSQLiteデータベースに必要なすべてのポイントを特別なテーブルに保存しました。私は2つのフィールドを持っています - すなわちlonlat - 私はそれが何を意味するのかはっきりしていると思います。

画面に表示されているアノテーションをできるだけパフォーマンスの高いものにする方法を誰かに知ってもらえますか?ユーザーがスクロールマップの後 - それは、

があなたの助けを事前にどうもありがとうございました...ようする必要がある他の点もある天気をデータベースにルックアップするために、再びメソッドを呼び出す必要があり

種類:

ドミニク

+0

私は必要なものを受け取ることができました。あなたの役に立つインプットのために 'nevan'と' deanWombourne'をありがとう! – thedom

答えて

1

あなたはいくつかのことをする必要があります。

1)あなたの地図の中心を取得する - あなたのMKMapView

2のcenterCoordinateプロパティを使用)、地図の中心から一定の距離内のすべての項目のデータベースを確認して下さい。

3)それらを

それは、(2)それはトリッキー一つだのディスプレイ - あなたが持っている緯度LNGに近く、すべてのアイテムを返します方法を必要とします。

This linkが役に立てば幸い

:)ことを行う方法の便利な実装があります。ポイントの

+0

あなたのリンクをありがとう!私の解決策はそれに基づいていると思う:)。私はそれをすべて解決する方法を明確にしたときに再び投稿します。 – thedom

1

カップル:あなたはiOS4をを使用している場合、それは自動的にのみ表示画面が表示されている注釈を作成することによって、メモリを節約するように

、のMapViewの動作が変更されました。

第2に、何千ものセルを持つテーブルビューを作成してもスムーズにスクロールできるのと同じように、オフスクリーンの注釈はパフォーマンスにあまり影響しません。注釈を非常に小さくしておくと、メモリを大量に消費しないようにする必要があります。注釈ビューは、メモリを占有するビューです。

ユーザーがズームアウトして同時に注釈ビューが多すぎると、問題が発生します。ズームインすると、画面外の注釈についてあまり心配する必要はありません。

+0

あなたの答えをありがとう!はい、私はiOS 4を使用しています - これは今のところ利点です:))。しかし、私は、たとえばユーザーの位置に最も近い4つの点を示し、その領域に基づいてすべてを再調査する方法が必要です。だから私は少し推測しなければなりません。 – thedom

+0

あなたのポイントをループして、それぞれを 'CLLocationCoordinate2D'に変換し、' distanceFromLocation'メソッドを使って距離を見つけるのが最も簡単です。 4つの最小距離を保つ。またはHaversine数式を検索して自分で作ることができます。ディーンのリンクは、私が使ったリンクです。 –