2016-02-23 15 views
5
-uniqueid1 
      latitude: 30.7188235 
      longitude: 76.810132 
-uniqueid2 
      latitude: 30.7188235 
      longitude: 76.810132 

firebaseが、私は特定の長にUniqueIDを最も近いを検索したい使用して緯度と経度/ lat.Iは、我々が実装するのですstartAt()およびENDAT()が、無success.Howを使用して開始しました条件節と複数queries.Theは、私がこれを行うには、組み込みの方法があるとは思わないです近く見つけるfirebase 1000件の、このようなレコードがある

SELECT uniqueids from table where (lon-specific_lon)^2+(lat-specific_lat)^2<CONSTANT. 

答えて

12

あなたが探しているものはFirebaseのGeofireライブラリの一部です。 Geohashesを使ってFirebaseの限界を巧みに回避し、単一の値だけを照会することができます。

Geohashesは、範囲のクエリに適した単一の値に経度と緯度を埋め込む方法です。

詳細については、Github repo for Geofireを参照してください。

+0

ありがとう、フランク。 –

+0

@Frankこれは私のものより良い答えのようです。私は私のものを削除すべきか、それともまだ役に立つかもしれないケースがあると思いますか? –

+0

あなたのことも面白かったと思っていましたので、残してください。より良い/より簡単な答えがあるという事実は、あなたを無効にしません。 OPはそれをアップボーティングすることによってそれを認めるかもしれない(現在のupvoteは私のものです)。 –

5

を探して問い合わせるが、一つの方法は、正方形のグリッドを作成するかもしれないとのそれぞれの場所を割り当てます領域 - たとえば、領域

{x: 2, y: 4}

enter image description here

次に、あなたのデータの呼び出しで調整することができ、特定の範囲内のすべてを返すことで、その領域の位置および隣接領域の全てを返すことができます。あなたが{x: 2, y: 4}の1領域内のすべてのものを返したい場合たとえば、あなたが戻ってくる:

{x: 1, y: 3} 
{x: 1, y: 4} 
{x: 1, y: 5} 
{x: 2, y: 3} 
{x: 2, y: 4} // The region you're in right now 
{x: 2, y: 5} 
{x: 3, y: 3} 
{x: 3, y: 4} 
{x: 3, y: 5} 

enter image description here

これは、お住まいの地域とその広場に場所のすべてを囲む四角形を返します。円形にする必要がある場合は、フロントエンドで選択をトリムすることができます。それは完璧な解決策ではありませんが、私はあなたが達成しようとしていると思うことを行う方法かもしれません。

関連する問題