El uso de consultas GeoFire en Swift no proporciona resultados útiles

Estoy bastante desesperado en este momento porque estoy tratando de usar GeoFire en mi base de datos Firebase para encontrar usuarios cercanos. Estoy bastante atrapado por dos días ahora. Busqué mucho en Google y stackoverflow e intenté todo lo que encontré allí, pero sin ningún éxito. Ahora mi última esperanza es crear este hilo yo mismo y espero que alguien pueda ayudarme.

Mi base de datos se ve más o menos así:

users
    user_id1
        email: [email protected]
        username: xxx
    user_id2
        email: [email protected]
        username: yyy
users_locations
    user_id1
        location
            g: xxxx
            l
                0: 30.0000
                1: 5.0000
    user_id2
        location
            g: yyyy
            l
                0: 30.0010
                1: 5.0010

No sé si es necesario guardar los datos de ubicación separados de los usuarios, pero también intenté guardarlos así con los mismos resultados, así que creo que no importa:

users
    user_id1
        email: [email protected]
        username: xxx
        location
            g: xxx
            l
                0: 30.0000
                1: 5.0000

Ahora el código que estoy usando:

Para escribir la ubicación en la base de datos, uso lo siguiente, que funciona bien:

let user = FIRAuth.auth()?.currentUser
let uid = user?.uid

let ref = FIRDatabase.database().reference()
let geofireRef = ref.child("users_locations")
let geoFire = GeoFire(firebaseRef: geofireRef.child(uid!))

geoFire?.setLocation(myLocation, forKey: "location")

Ahora trato de usar una consulta GeoFire para mostrarme a todos los usuarios en un radio definido que no imprime nada para este:

let ref = FIRDatabase.database().reference()
let geofireRef = ref.child("users_location")
let geoFire = GeoFire(firebaseRef: geofireRef)

let circleQuery = geoFire?.query(at: center, withRadius: 10)
circleQuery?.observe(.keyEntered, with: { (key: String?, location: CLLocation?) in
         print("Key '\(key!)' entered the search are and is at location '\(location!)'")
    })

Me di cuenta de que obtengo un resultado si voy con mi hijo uid real. Luego imprime la ubicación y la clave de mis usuarios reales, pero eso no es lo que quiero tener.

let geoFire = GeoFire(firebaseRef: geofireRef.child(uid!))

Entonces, quiero que GeoFire busque a través de mis UID en 'users_locations' y me devuelva todos los UID que estén en mi radio definido.

Para mí, parece que solo está buscando el niño llamado 'ubicación' en el niño definido en mi Referencia (ubicación_usuarios -> usuario_uid) y si intento consultar sobre 'ubicación_usuarios', no obtengo nada.

¿Qué estoy haciendo mal? ¿Cómo puedo hacer que la consulta busque referencia secundaria y devolverme el uid?

Respuestas a la pregunta(2)

Su respuesta a la pregunta