2016-10-25 5 views
0

は私が前にGeoFireで働いてきた、とあなたはGeoFire内のsetLocationを使用して場所を保存するとき、私は、覚えているから、Firebase構造が多少このようなものです:Geofireを使用すると、非従来のノード構造でどのようにクエリを作成しますか?

{ 
    "3f7892b2-f304-4129-8416-0dc7216c2188" : { 
    "g" : "9qc9p66045", 
    "l" : { 
     0 : 37, 
     1 : -120 
    } 
    } 
} 

問題がある、私はすでに、リアルタイムを持っていますデータベースの起動および実行、そしてそれは、この構造を有する:

{ 
    "3f7892b2-f304-4129-8416-0dc7216c2188" : { 
    "username" : "bobby123", 
    "name" : "john", 
    "bio" : " I like dogs", 
    "location" : { 
     "lon" : 37, 
     "lat" : -120 
    } 
    } 
} 

だから、(私は現在CLLocationを使用して保存し、ちょうど子供値を更新していた)場所以外にも、そこに他のデータを持っています。

私の質問は、GeoFireクエリを実行する最も実際的な方法は何でしょうか?私はちょうどsetLocationを使用することができ、ユーザーIDでIDを持っていることを理解し、後で私はtableviewにユーザーを読み込んでいるときに参照を行うが、私のデータにGFQueryを実行することが可能である場合、それは現在設定されています。私はあなたが言及した最初の構造を使用する必要がありますし、知っていることから、

答えて

0

その後、ユーザーの場所をしたいとき:

geoFireRef!.getLocationForKey(userID, withCallback: { (location, error) in 
} 

か、あなたの参照を呼ぶものは何でも。そのあなたがusersRef.childでキーとそのためのユーザーを取得する(キー).observeSingleEvent(ので

let locationQuery = geoFireRef!.query(at: location, withRadius: 100) 
locationQuery?.observe(GFEventType.init(rawValue: 0)!, with: {(key, location) in 
} 

: は、あなたがその場所(例えば、100キロ半径)でクエリを実行呼び出す.VALUE 、と:{

でスナップショットなど

私は、これがGeoFireための固定構造で読んだものから、

関連する問題