Raumbezogene Abfragen verwenden

Sie können raumbezogene Abfragen in Cloud Firestore ausführen, um standortbezogene Dienste zu erstellen. So können Sie beispielsweise die Entfernung zwischen einem Nutzer und nahegelegenen POIs ermitteln und die POIs nach Entfernung sortieren.

Anforderungen an die Version

Für die Funktion für Geodatenabfragen ist eine Firestore Enterprise-Datenbank erforderlich.

Hinweis

Wenn Sie eine raumbezogene Abfrage ausführen möchten, müssen Sie zuerst raumbezogene Indexe für die Felder erstellen, die Sie durchsuchen möchten.

Geodatenabfrage ausführen

Verwenden Sie für eine raumbezogene Abfrage den geoDistance-Ausdruck 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 Anfrage werden beispielsweise alle Restaurants im Umkreis von 1.000 Metern um den angegebenen Geopunkt gefunden.

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