Utiliser des requêtes géospatiales

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 requête géospatiale nécessite une base de données Firestore Enterprise Edition.

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