Geospatiale Suche verwenden
Sie können raumbezogene Abfragen in Firestore ausführen, um standortbezogene Dienste zu erstellen. So können Sie beispielsweise die Entfernung zwischen einem Nutzer und nahegelegenen Points of Interest ermitteln und sie nach Entfernung sortieren.
Versionsanforderungen
Für die Funktion zur geospatialen Suche ist eine Firestore Enterprise-Datenbank erforderlich.
Hinweis
Wenn Sie eine raumbezogene Suche durchführen möchten, müssen Sie zuerst raumbezogene Indexe für die Felder erstellen, die Sie durchsuchen möchten.
Geodatenbasierte Suche ausführen
Wenn Sie eine raumbezogene Suche durchführen möchten, verwenden Sie den geoDistance-Ausdruck im query-Parameter der search(...)-Phase.
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 geografischen Punkt gefunden.
Webversion 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 */) });