Utiliser la recherche géospatiale

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