35 votes

Comment interroger les GeoPoints les plus proches d'une collection dans Firebase Cloud Firestore?

Le nouveau Firestore DB me permet de stocker des GeoPoints. Existe-t-il un moyen d'interroger en fonction de ces informations?

Par exemple, si chacun de mes documents de collections a obtenu un champ location du type geopoint . Comment obtenir les 10 documents les plus proches d'une coordonnée arbitraire?

La documentation ne semble pas couvrir cela. J'ai essayé des trucs comme ça:

 someRef.where('location', '>', geopoint).limit(10).get();
 

Évidemment, cela n'a pas beaucoup de sens, mais j'essaie juste quelques trucs ici

34voto

Mike McDonald Points 8728

Nous n'avons pas exposés geoqueries encore, donc, actuellement, il n'y a pas une façon de le faire.

Historiquement, la Firebase en temps réel de la Base de données utilisée geohashes dans une bibliothèque appelée GeoFire--mais étant donné que nous avons l'intention d'exposer réelle geoqueries dans un avenir proche, nous n'avons pas mis à jour la bibliothèque de Firestore. Pour apprendre à faire quelque chose de similaire de même, jetez un oeil à cette vidéo.

8voto

raiglstorfer Points 1118

Un nouveau projet a été introduit depuis l' @problemsofsumit d'abord de poser cette question. Le projet est appelé GEOFirestore.

Avec cette bibliothèque, vous pouvez exécuter des requêtes comme requête les documents à l'intérieur d'un cercle:

  const geoQuery = geoFirestore.query({
    center: new firebase.firestore.GeoPoint(10.38, 2.41),
    radius: 10.5
  });

Vous pouvez installer GeoFirestore via npm. Vous devrez installer Firebase séparément (parce que c'est un des pairs de la dépendance à GeoFirestore):

$ npm install geofirestore firebase --save

Vous pouvez faire un lien via cdn: https://cdn.jsdelivr.net/npm/geofirestore@2.2.2/dist/geofirestore.min.js

3voto

Troels Lenda Points 351

Vous pouvez laisser Algolia faire de la géo de la recherche et de rayon pour vous. Tout cela nécessiterait est de construire une fonction cloud qui déclenche sur votre voulais documents et de les synchroniser à Algolia.

Jetez un oeil à Geo Recherche https://www.algolia.com/doc/guides/searching/geo-search/

Aussi Firebase documentation annonce Algolia comme une solution à des recherches complexes ici https://firebase.google.com/docs/firestore/solutions/search

1voto

Nikhil Sridhar Points 677

Plutôt que d'utiliser des services tiers comme Algolia, j'utiliserais la nouvelle bibliothèque qui est sortie pour iOS et Android qui reproduit GeoFire pour Firestore. La nouvelle bibliothèque, appelée GeoFirestore , est entièrement documentée et bien testée. J'ai déjà utilisé cette bibliothèque dans de nombreux projets de démonstration et elle semble fonctionner parfaitement. Donner un coup de feu!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X