firebaseは空間インデックスをサポートしていないので、私はここで誰かが助言するgeohashを使用します。 Geohashは文字を使用して近くを検索しています。文字列プレフィックスに一致するキーをFirebaseに照会する方法
だから私はfirebaseでw22qt4vhye1c
w99qt4vdf4vc
w22qt4vhzerct
ジオハッシュストアを持っていると私はw22qt4
に近いジオハッシュただけで照会するとしましょう。
どうすればよいですか?
私はfirebaseにstartAtがあることを知っています。私は試しましたが、仕事はしません。
root
- geohash
- w22qt4vhye1c3
- id
- z99qt4vdf4vc
- w22qt4vhzerct
JSONにので、ここで私の質問を
//Encode lat lng, result w22qt4vhye1c3
var geoHashLatLng = encodeGeoHash(lat,lng);
firebaseRef.child('/geohash/' + geoHashLatLng).set(id);
をfirebaseするジオハッシュを保存
UPDATE
。 私はちょうど文字から始まるgeohashを質問したいですw22qt4
。私たちは火の基盤でそれを行うことができますか?
UPDATE 2 startAt()
は
例...で始まる文字で問い合わせるないように思える:私は、次のコード
でgehashジオハッシュノード
geohash
- a123
- a333
- b123
- c123
- d123
を以下しています
var firebaseRef = new Firebase('https://test.firebaseio.com');
var query = firebaseRef.child('/geohash').startAt(null, 'a');
query.on('child_added', function(snapshot) {
console.log(snapshot.name());
});
が、これは26個のアルファベット順ではなく一致しないを照会します
startAt(null, 'a') //return a123, a333, b123, c123, d123
startAt(null, 'c123') //return c123, d123
startAt(null, 'd') //return d123
私の予想結果
startAt(null, 'a') //return a123, a333
startAt(null, 'c123') //return c123
startAt(null, 'd') //return d123
私の推測で、startAtを()の結果を得るだろう。 それで、私はfirebaseで何ができますか?私は上記の結果を得ることができますか?
私はより意味のあるフィードバックを提供できるように、あなたがしようとしているコードスニペットを提供できますか? –
@AndrewLeeこんにちは、私はちょうど私の質問を更新しました。 – vzhen
"endAt"を使用して特定のキーで終了することができます。下記の私の記事の編集を参照してください。 –