GeoFirestore возвращает слишком много результатов - PullRequest
0 голосов
/ 01 января 2019

Я использую 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
}
...