我想爲我的MKAnnotations
實現一些空間索引數據結構之王。 目前,當我嘗試根據距離標準(位置3-4k,目前極其緩慢,使用簡單雙for
...)對其進行過濾時,速度非常慢。我應該使用什麼空間索引算法?
我想創建MKAnnotations
的集羣,以確定它是否接近另一個集羣。此外,這些位置處於某種程度上(創建)的順序,並且需要「前」/「後」功能來「跳躍」(這不是必須的)。 我讀過kd-tree
和r-tree
結構,它們都似乎滿足過濾/聚類的快速距離/鄰居獲取選項,但我不確定哪個對我最好,或者是否還有其他選項。 我應該使用什麼算法/數據結構?
更新:我將這些位置存儲在覈心數據數據庫中,它們表示路徑。當地圖打開時,它們被提取到一個數組中,然後我使用該數組進行距離計算和註記創建。 當用戶移動/縮放地圖時,我會遍歷它們並決定在地圖上需要更改哪些內容,因此整個內容都是靜態的。據我瞭解,如果我使用樹,我可以在那裏存儲位置,當發生縮放/移動時,我只需搜索它並獲取新區域中的位置。這是真的 ?
即使在動態的情況下,當我可以添加新的位置到這個數組時,它將是一個插入,它很少發生。
請參閱上面的我的使用模式編輯。我不想使用網格狀散列,它們看起來不太好,對我而言,它們不適合。我現在將檢查R *樹。 – Templar
如果您的數據是靜態的,則批量加載R樹(批量加載的R和R *之間沒有區別,因爲它們僅在插入時有所不同)也是一個選項,請嘗試排序分塊遞歸。 –
請注意,對於網格狀哈希,我只是指您的數據結構,而不是用戶的可視化表示。如果組織屬於同一個網格單元格,您只需*組織*對象。在顯示中,您只能掃描需要顯示的單元格。一棵樹幾乎可以做得更好。 –