Utiliser la recherche géospatiale

Vous pouvez effectuer des requêtes géospatiales dans Cloud Firestore pour créer des services basés sur la localisation. Par exemple, vous pouvez trouver la distance entre un utilisateur et les points d'intérêt à proximité, en les triant du plus proche au plus éloigné.

Édition requise

La fonctionnalité de recherche géospatiale nécessite une base de données Firestore Enterprise Edition.

Avant de commencer

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

Pour effectuer une recherche 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 trouve tous les restaurants situés à moins de 1 000 mètres du géopoint indiqué.

Web

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 */)
  });