我有一個具有經度和緯度屬性的核心數據數據庫。有沒有辦法使用Core Location的getDistanceFrom:
方法來查找從GPS獲得的CLLocation
的五個最近位置?我是否必須使用核心數據加載所有對象並通過它們解析,每個使用getDistanceFrom:
還是有更簡單的方法?核心數據和核心位置
24
A
回答
28
你將有一個通過他們一個迭代;據我所知,沒有其他辦法可以做到這一點。
但是,當從核心數據獲取項目時,可以通過使用邊界框來提高效率 - 這將減少將要返回的對象的數量。
即喜歡的東西
float latMax = wantedLat + 1;
float latMin = wantedLat - 1;
float lngMax = wantedLng + 1;
float lngMin = wantedLng - 1;
NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"lat > %f and lat < %f and lng > %f and lng < %f",
latMin, latMax, lngMin, lngMax];
雖然,這取決於你有多少數據,以及如何接近它的間隔,你將要使用不同數量比1!
山姆
PS另外,我還沒有考慮到一個事實,即東經包裝!
2
您無法使用CoreData查找最近的對象,但可能希望通過使用邊界框來縮小查詢範圍。要找到最近的物體,您可能更願意簡單地使用緯度/長度的差異,這比計算實際距離快得多。
我有一個類似的問題:
+0
感謝您的鏈接。 – 2010-02-02 02:43:05
2
以下示例幾乎就是您要查找的內容。 它使用SQLite函數來計算ORDER BY子句(Haversine公式)中的距離。 問題是這個例子不直接使用Core-Data,而是使用SQLite API。
相關問題
- 1. 將核心位置數據保存到核心數據?
- 2. Iphone核心位置
- 3. 使用核心數據與核心圖
- 4. 核心位置和核心運動設備標題
- 5. MapKit從核心數據加載位置
- 6. iOS:在覈心數據中使用GCD和核心數據
- 7. 備份和恢復核心數據的SQLite(核心數據)
- 8. UITableView與核心數據和非核心數據源
- 9. 核心數據重置
- 10. 設置與核心數據
- 11. 核心服務,核心基礎和核心數據有什麼區別?
- 12. iPhone核心位置startMonitoringSignificantLocationChanges
- 13. 核心位置的警報
- 14. PHP核心文件位置
- 15. 核心位置返回00
- 16. 使用核心位置
- 17. 核心位置問題
- 18. 核心位置幫助!
- 19. UIAlertView中和核心數據
- 20. 核心數據,KVO和NSInternalInconsistencyException
- 21. 核心數據和NSOperation
- 22. 核心數據和CLGeocoder
- 23. UIManagedDocument和核心數據
- 24. 核心數據和NSManagedObject
- 25. 核心數據和關係
- 26. RestKit和核心數據
- 27. 核心數據和didSelectRowAtIndexPath
- 28. NSUserdefault和核心數據
- 29. 核心數據和JSON
- 30. 核心數據和@dynamic
看起來很有用的代碼,謝謝。 – 2010-02-02 02:43:37
感謝你們 - 我在我的應用中使用了類似的東西。但在我看來,這兩套< and >現在是錯誤的方式! – iPhoneDollaraire 2010-03-05 17:38:19
你說得對 - 哎呀! – deanWombourne 2010-03-06 09:41:09