Я пытаюсь реализовать бесконечную прокрутку, увеличив радиус моего запроса GeoFire
на 5 км, чтобы я мог получить следующий набор ключей.Но мой GeoFire
запрос возвращает дубликаты, так как он собирает ключи, найденные в течение первых 5 км, в дополнение к следующим 5 км и т. Д. И т. Д. *
У меня сложилось впечатление, что ондолжен возвращать только новые ключи, найденные в обновленном радиусе, я что-то пропустил?
Вывод на консоль, показывающий дубликаты ключей, найденные на расстоянии 10 км, а затем радиус 15 км:
![enter image description here](https://i.stack.imgur.com/Q69tt.png)
My geoQuery
:
let geoQuery = GeoFire(firebaseRef: DB_BASE.child("venues-location")).query(at: CLLocation(), withRadius: 1)
My fetchVenueNearby
Функция:
func fetchVenueNearby(deviceLocation: CLLocation, radius: Double, handler: @escaping (Venue) -> ()) {
geoQuery.center = deviceLocation
geoQuery.radius = radius
geoQuery.observe(.keyEntered) { (key: String!, venueLocation: CLLocation!) in
print ("FOUND KEY: ", key)
self.REF_VENUES.child(key).observeSingleEvent(of: .value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String : Any] {
//parse snapshot code here….
}//end if-let
})//end observeSingleEvent
}//end geofire query observe
}//end func
Это мой loadMoreVenues
функционал, используемый в настоящее времядля тестирования моего Geo Query
func loadMoreVenus() {
radius += 5
print("radius = \(radius)")
DataService.run.fetchVenueNearby(deviceLocation: currentLocation, radius: radius) { (venue) in
print("venue: \(venue.venueID)")
}
}//end func