Jestem całkiem nowy w pracy z Firebase i jego biblioteką lokalizacji, GeoFire. Obecnie napotykam pewien problem podczas strukturyzacji moich danych.Zapytanie GeoFire na temat lokalizacji użytkownika
W tej chwili mój db jest coś takiego:.
users
facebook:xxxxx
displayName: xx
firstName: xx
lastName: xx
location:
g: xxxx
l:
0: xxx
1: xxx
facebook:yyyyy
displayName: yy
firstName: yy
lastName: yy
location:
g: yyyy
l:
0: yyy
1: yyy
Chciałbym zapytać użytkowników, które są w pobliżu mojego bieżącego zalogowanego użytkownika Aby to zrobić nie mogę zrozumieć, co mam na tor sprecyzować.
Obecnie robię tak (ale nie działa):
zapisywania aktualnej lokalizacji
let root = Firebase(url: "myapp.firebaseio.com")
let usersRoot = root.childByAppendingPath("users")
geoFire = GeoFire(firebaseRef: usersRoot.childByAppendingPath(root.authData.uid))
geoFire.setLocation(currentLocation, forKey: "location") { (error) in
if (error != nil) {
print("An error occured: \(error)")
} else {
print("Saved location successfully!")
}
}
przy pobieraniu innych użytkowników w pobliżu
let geoFire = GeoFire(firebaseRef: Firebase(url: "myapp.firebaseio.com").childByAppendingPath("users"))
let query = geoFire.queryAtLocation(currentLocation, withRadius: radius)
query.observeEventType(GFEventTypeKeyEntered, withBlock: {
(key: String!, location: CLLocation!) in
print("+ + + + Key '\(key)' entered the search area and is at location '\(location)'")
self.userCount++
self.refreshUI()
})
UPDATE
oszczędność bieżąca lokalizacja
let root = Firebase(url: "myapp.firebaseio.com")
geoFire = GeoFire(firebaseRef: root.childByAppendingPath("locations"))
geoFire.setLocation(currentLocation, forKey: root.authData.uid) { (error) in
if (error != nil) {
print("An error occured: \(error)")
} else {
print("Saved location successfully!")
}
}
pobierania inni użytkownicy pobliżu
let geoFire = GeoFire(firebaseRef: Firebase(url: "myapp.firebaseio.com").childByAppendingPath("locations"))
let query = geoFire.queryAtLocation(currentLocation, withRadius: radius)
query.observeEventType(GFEventTypeKeyEntered, withBlock: {
(key: String!, location: CLLocation!) in
print("+ + + + Key '\(key)' entered the search area and is at location '\(location)'")
self.userCount++
self.refreshUI()
})
Dzięki! Próbuję teraz, ale nadal nie działa. Próbowałem w ten sposób (biorąc pod uwagę strukturę db): niech geoFire = GeoFire (firebaseRef: root.childByAppendingPath ("user_locations")) let query = geoFire.queryAtLocation (currentLocation, withRadius: 10) query.observeEventType (GFEventTypeKeyEntered, withBlock: { (klucz: String !, location: CLLocation!) w print ("+ + + + klawisz" \ (klucz) "wprowadzono w obszar wyszukiwania i znajduje się w lokalizacji" \ (lokalizacja) "") }) – giacavicchioli
Rozwiązano problem z ustawieniem centrum zapytań. Dzięki. – giacavicchioli
Firebase geofire-js: jak uzyskać listę kluczy w pobliżu lokalizacji statycznych (stałych): http://stackoverflow.com/questions/43632746/firebase-geofire-js-how-to-get-list-of-keys -of-near-by-staticfixed-lokalizacje –