我正在使用 GeoFirestore 对我的 Firebase Firestore 运行地理查询。它似乎通常可以工作,但是一旦我在半径超过 25 英里的情况下进行测试,它就会返回比它应该更多的结果。我的 Firestore 中最近的位置距离我正在测试的位置 103 英里。我以 25 英里为增量进行了测试。25 英里不返回任何位置,50 英里返回最近的位置,75 英里返回最近的位置,100 英里返回我的所有三个测试位置。知道我做错了什么吗?
func getFacilites() {
self.facilities = [[String: Any]]()
let currentLatitude = self.currentLocation.coordinate.latitude
let currentLongitude = self.currentLocation.coordinate.longitude
let geoFireStore = Constants.geoFirestore
let circleQuery = geoFireStore.query(withCenter: GeoPoint(latitude: currentLatitude, longitude: currentLongitude), radius: milesToKilometers())
let _ = circleQuery.observeReady {
print("All initial data has been loaded and events have been fired!")
}
let _ = circleQuery.observe(.documentEntered, with: { (key, location) in
Constants.firestore.collection("facilities").document(key!).getDocument { (document, error) in
if let document = document, document.exists {
self.facilities?.append(document.data()!)
self.addFaciltiesToMap()
} else {
print("Document does not exist.")
}
}
})
}
func milesToKilometers() -> Double {
// self.searchDistance is a Double value
return self.searchDistance * 1.60934
}