שימוש באילתות גיאו-מרחביות

אתם יכולים להריץ שאילתות גיאו-מרחביות ב-Cloud Firestore כדי ליצור שירותים שמודעים למיקום. לדוגמה, אתם יכולים למצוא את המרחק בין משתמש לבין נקודות עניין סמוכות, ולמיין אותן מהקרובה ביותר לרחוקה ביותר.

דרישות לגבי מהדורות

כדי להשתמש בתכונת השאילתות הגיאו-מרחביות, צריך מסד נתונים במהדורת Firestore Enterprise.

לפני שמתחילים

כדי לבצע שאילתה גיאוספציאלית, קודם צריך ליצור אינדקסים גיאוספציאליים לשדות שרוצים לחפש בהם.

הרצת שאילתה גיאו-מרחבית

כדי לבצע שאילתה גיאו-מרחבית, משתמשים בביטוי geoDistance בפרמטר query של שלב search(...).

יש תמיכה רק באופרטור 'קטן מ- או שווה ל-' (<=). המרחק נמדד במטרים.

לדוגמה, השאילתה הבאה מוצאת את כל המסעדות ברדיוס של 1,000 מטרים מנקודה גיאוגרפית שמופיעה ברשימה.

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