の空間インデックスデータ構造の王様を実装したいと思いMKAnnotations
ます。現在、距離基準に基づいてそれらをフィルタリングしようとすると、ひどく遅くなります(3〜4kの場所、現在は単純なダブルで非常に遅いfor
...)。
MKAnnotations
のクラスターを作成して、別のクラスターに近いかどうかを判断したいと思います。また、これらの場所はある程度(作成)の順序であり、「前」/「次」の機能が「ジャンプ」するために必要になります(これは必須ではありません)。kd-tree
と構造について読んだことがr-tree
あり、どちらもフィルタリング/クラスタリングの高速距離/隣接取得オプションを満たしているようですが、どちらが私に最適か、または他のオプションもあるかどうかはわかりません。どのアルゴリズム/データ構造を使用する必要がありますか?
更新:これらの場所をCore Dataデータベースに保存します。これらは、パスを表します。マップを開くと、それらは配列にフェッチされ、距離の計算と注釈の作成にその配列を使用します。ユーザーがマップを移動/ズームするとき、私はそれらをループして、マップ上で何を変更する必要があるかを決定するので、全体が少し静的です。私が理解したように、私が木を使用している場合、そこに場所を保存することができ、ズーム/移動が発生したときに、それを検索して新しい領域の場所を取得するだけです。これは本当ですか ?
動的な場合でも、この配列に新しい場所を追加できる場合、それは1回の挿入であり、ほとんど発生しません。