Utiliser des requêtes géospatiales

Vous pouvez effectuer des requêtes géospatiales dans Firestore pour créer des services géolocalisés. Par exemple, vous pouvez calculer la distance entre un utilisateur et les points d'intérêt à proximité, puis les trier du plus proche au plus éloigné.

Édition requise

La fonctionnalité de requête géospatiale nécessite une base de données Firestore Enterprise.

Avant de commencer

Pour effectuer une requête géospatiale, vous devez d'abord créer des index géospatiaux pour les champs dans lesquels vous devez effectuer une recherche.

Exécuter une requête géospatiale

Pour effectuer une requête géospatiale, utilisez l'expression geoDistance dans le paramètre query de l'étape search(...).

Seul l'opérateur "inférieur ou égal à" (<=) est accepté. La distance est mesurée en mètres.

Par exemple, la requête suivante recherche tous les restaurants situés à moins de 1 000 mètres du point géographique indiqué.

Version Web 9

firestore.pipeline().collection('restaurants')
  .search({
    query: field('location')
      .geoDistance(new GeoPoint(38.989177, -107.065076))
      .lessThan(1000 /* m */)
  });
iOS
firestore.pipeline().collection("restaurants")
    .search(
        query: Field("location")
            .geoDistance(GeoPoint(latitude: 38.989177, longitude: -107.065076))
            .lessThan(1000)
    )
Android
firestore.pipeline()
        .collection("restaurants")
        .search(new SearchOptions()
                .withQuery(field("location")
                        .geoDistance(new GeoPoint(38.989177, -107.065076))
                        .lessThan(1000 /* meters */)));
Node.js
firestore.pipeline().collection('restaurants')
  .search({
    query: field('location')
      .geoDistance(new GeoPoint(38.989177, -107.065076))
      .lessThan(1000 /* m */)
  });