私が示唆している選択肢は、plistsにとどまりたい場合は、大きなplistを小さな領域をカバーする小さなものに分割することです。
オーストラリアの7州に分割すると、必要なパフォーマンスが得られる場合は問題ありません。しかし、私は代わりに、それぞれが一定のN度の角度をカバーする小さな領域(すべて長方形)を作成します。 Nは小さすぎてはいけませんが、大きすぎてはいけません(データを表示する現在の場所からどのくらい離れているかによって異なります)。
たとえば、あなたがこのような16件の地域(それは平方数である必要はありません)に単一のplistを破ることができます:
North
A B C D
West E F G H East
I J K L
M N O P
South
plistの「」と言う緯度のための注釈データが含まれています012〜50および51およびLon 100〜110.
Plist「B」は、Lat 50〜51およびLon 110〜120の注釈データを含みます。
Plist「E」は、Lat 49〜50およびLon 100〜110の注釈データを含みます
等
私はまた、アプリケーションが特定の座標がどのplistにあるのか、そのplistの隣人が何であるかを把握させる追加の「インデックス」plistを持っています。アプリケーションは、現在の場所が地域の端に近い場合に、現在の場所のplistおよびその隣人から注釈データを読み取ることができます。
インデックスのplistの構造は次のようになります。
PlistName NWCoordinate SECoordinate Neighbors
A 51,100 50,110 B, E, F
F 50,110 49,120 A, B, C, E, G, I, J, K
インデックスのplistは、アプリの起動時に一度読まれることになります。アプリは、現在の場所を持っていたら(あるいは、それはかなり十分に変化するたびに)
その後は、アプリは次の操作を行います:
- マップから既存の注釈を削除します。
- インデックスを使用して、新しいアノテーションを読み込むplistを特定します。現在の位置が49.25,112.3であるとします。インデックスを使用すると、アプリはF plistとその近傍を何らかの配列にロードします(一度に1つずつマップに直接は移動しません)。
addAnnotations
を使用して、配列内のアノテーションをワンショットで追加します。
大規模なplistをより小さな領域をカバーする小さなものに分解することが私の考えであると思います。現在の場所に基づいて、現在の場所またはその近くのplistだけをロードします。また、 "Xcode"は単なるIDEであり、IDEに関する問題ではありません。タグを「ios」に更新しました。 – Anna
途中のように聞こえるアンナに感謝します。したがって、特定の経度と緯度の間の領域に基づいて特定のplistを読み込むためにifステートメントを設定する必要がありますか?オーストラリアに7つの州があり、私は7つの声明を設定すべきだと言いますか? –