
GeoFireXを使ってCloud Firestoreで位置情報の検索を行う
Cloud Firestore便利ですよね。
Cloud Firestoreで「半径〇km以内にあるスポットを検索する」みたいな実装をしたかったのでGeoFireXを使って実装してみました。
https://github.com/codediodeio/geofirex
Cloud Firestoreでの緯度経度の情報の取扱について
Cloud FirestoreにはGeoPoint型あって、緯度経度の情報はGeoPoint型として保存する必要があります。
|
|
geohashの設定について
GeoFireXを利用する場合は位置情報のデータだけじゃだめでGeohashも用意する必要があります。
https://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%AA%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5
僕の場合はngeohashを使ってhashを生成しました。
|
|
このようにGeoPoint,Geohashの両方を用意しないとGeoFireXを使って検索しても結果が取得出来ません。
GeoFireXを利用して検索を行う
半径〇キロ以内の検索にはGeoFireXを利用しました。
以下のサンプルコードを見てもらえればわかりますが、簡単に「半径〇km以内にあるスポットを検索する」みたいな実装ができます。
例: 半径100km以内のスポットを検索する。
|
|
検索時に取得条件、ソート、取得数などを設定する
collectionを取得する段階でwhere,orderBy,limitなどの指定ができます。
|
|
最後に
GeoFireXを使えばFirestoreでの緯度経度の検索は簡単に実装できるのでますね。
そこまでハマることも無いのでおすすめです。
ちなみに同じようなライブラリでgeofirestore-jsもありますが、GeoFireXのほうが簡単に実装できる印象があります。
ただ、リアルタイムに位置情報が変わっていくのを反映したい場合にはgeofirestore-jsのほうが良さそうです。