Utiliser des requêtes géospatiales

Vous pouvez effectuer des requêtes géospatiales dans Firestore pour créer des services basés sur la localisation. Par exemple, vous pouvez rechercher la distance entre un utilisateur et des 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 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 */)
  });