ユーリMatatov:
私のAndroidアプリケーションでは、私はからのユーザーとリストを取得する必要がありFirestore使用範囲内でGeoFireStoreを。
私はこれから得たすべての情報はリンク。
依存:
implementation 'com.github.imperiumlabs:GeoFirestore-Android:v1.1.1'
リポジトリ:
maven { url 'https://jitpack.io' }
コード:
CollectionReference geoFirestoreRef =
FirebaseFirestore.getInstance().collection("Users");
GeoFirestore geoFirestore = new GeoFirestore(geoFirestoreRef);
GeoQuery geoQuery = geoFirestore.queryAtLocation(new GeoPoint(32.848971, 35.0920935), 30);
geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
@Override
public void onDocumentEntered(DocumentSnapshot documentSnapshot, GeoPoint location) {
}
@Override
public void onDocumentExited(DocumentSnapshot documentSnapshot) {
}
@Override
public void onDocumentMoved(DocumentSnapshot documentSnapshot, GeoPoint location) {
}
@Override
public void onDocumentChanged(DocumentSnapshot documentSnapshot, GeoPoint location) {
}
@Override
public void onGeoQueryReady() {
}
@Override
public void onGeoQueryError(Exception exception) {
}
});
私はしませんでしたので、私は、関数を呼び出すことはできません。
@Override
public void onDocumentEntered(DocumentSnapshot documentSnapshot, GeoPoint location) {
}
これだけの機能が呼び出されます。
@Override
public void onGeoQueryReady() {
}
ロレンツォCalisti:
私がコメントを追加することはできませんので、私は答えとしてこれを追加しています。
だから、何あなたがやろうとしているのは、すべてが取得されDocumentSnapshots
、このコードが正しいことのために一定の半径内、あなたが新しい作成GeoFirestore
使用してインスタンスをCollectionReference
、次にあなたが欲しい場所を問い合わせます。
問題があるということ、あなたのデータベースに現在存在しない無位置データ GeoFirestoreで使用できるが、あなたがすることによってこれを解決することができますが、データベースに文書を追加するときに「位置データ」を追加します。
implementation 'com.github.imperiumlabs:GeoFirestore-Android:v1.2.0'
/*
* You have to do this only one time for document
* so the best is after the document upload to Firestore.
*/
//The id of the document you want to add the location
String documentId = documentReference.id;
GeoPoint point = new GeoPoint(/*lat,long of your point*/);
geoFirestore.setLocation(documentId, point);
あなたは、公式ドキュメントを見つけることができるここに。
最後のヒントとして、私は地理ハッシュアルゴリズムが変更され、あなたがkotlin機能を利用することができますので、あなたが正しいバージョン(1.2.0)にライブラリを更新示唆しています。