2016-11-11 8 views
0

私はプロジェクトでFirebaseを使用していますが、クエリの仕組みについて頭を悩ませています。私は現在のユーザーの場所の特定の半径内にある他のユーザーを照会して見つけようとしています。Geofire-js:瞬時の場所がgeoQueryと一致するすべてのキーを返します

私はgeoQueryを作成できますが、半径の範囲内にあるユーザーの場所を返す方法がわかりません。

key_enteredは、DB内の場所が変更された場合にのみトリガーされるようです。私のすべての場所は一度設定されるとすべて静的なので、クエリを実行して、瞬間的な場所がクエリの半径内にあるすべてのユーザーを返します。

これはGeofireで可能ですか?

私の位置情報は、次のようにFirebaseに保存されます。

users { 
    uid: { 
     location: { 
      g: 'GeoHash', 
      l: [lat, long] 
     } 
     } 
    } 

は、ここに私のクエリです:

let geoQuery = geoFire.query({ 
       center: [currentUser.location.l[0], currentUser.location.l[1]], 
       radius: 1000 
      }); 
+0

'key_entered'は、場所が静的な値であっても変更されていなくても、実際に起動されます。 Firebaseの 'value'イベントが初期値で一度起動されるのと同様に、' GeoQuery'が最後に変更された後に作成されたとしても、 'GeoQuery'に一致するすべての値に対して' key_entered'が発生します。 – jwngr

答えて

0

問題は、私は、geoFireのsetメソッドを使用して場所を保存することがなかったということでしたgeoHashは決して作成されず、geoFireには何も問いません。ヘルプ@ジャコブありがとう!

+0

Javascriptでも可能ですか?ファイヤーベースデータストアにあらかじめ追加されている静的(固定)の位置によってキー(キーのリスト)を検索します。 注: 'key_entered'は新規または位置が更新されたときにのみ起動されるため、 'key_entered'は使用しません。以前に追加された位置はどのくらいですか? どうすれば可能ですか? –

+0

@AnkitMaheshwari解決策を見つけましたか? –

+0

@YoloYoloまだ! –

関連する問題