Geospatiale Suche verwenden

Sie können in Cloud Firestore raumbezogene Abfragen ausführen, um standortbezogene Dienste zu entwickeln. Sie können beispielsweise die Entfernung zwischen einem Nutzer und nahe gelegenen Points of Interest ermitteln und sie nach Entfernung sortieren.

Versionsanforderungen

Für die raumbezogene Suche ist eine Firestore Enterprise-Datenbank erforderlich.

Hinweis

Wenn Sie eine raumbezogene Suche ausführen möchten, müssen Sie zuerst raumbezogene Indexe für die Felder erstellen, die durchsucht werden sollen.

Verwenden Sie für eine raumbezogene Suche den Ausdruck geoDistance im Parameter query der Phase search(...).

Es wird nur der Operator „kleiner oder gleich“ (<=) unterstützt. Die Entfernung wird in Metern gemessen.

Mit der folgenden Abfrage werden beispielsweise alle Restaurants im Umkreis von 1.000 Metern um den aufgeführten Geopunkt gesucht.

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