Sử dụng tính năng tìm kiếm không gian địa lý

Bạn có thể thực hiện các truy vấn không gian địa lý trong Cloud Firestore để xây dựng các dịch vụ nhận biết vị trí. Ví dụ: bạn có thể tìm khoảng cách giữa một người dùng và các địa điểm đáng quan tâm ở gần đó, sắp xếp theo thứ tự từ gần nhất đến xa nhất.

Yêu cầu về phiên bản

Tính năng tìm kiếm không gian địa lý yêu cầu cơ sở dữ liệu Firestore phiên bản Enterprise.

Trước khi bắt đầu

Để thực hiện tìm kiếm không gian địa lý, trước tiên, bạn phải tạo chỉ mục không gian địa lý cho các trường mà bạn cần tìm kiếm.

Để thực hiện tìm kiếm không gian địa lý, hãy sử dụng biểu thức geoDistance trong tham số query của giai đoạn search(...).

Chỉ toán tử nhỏ hơn hoặc bằng (<=) được hỗ trợ. Khoảng cách được đo bằng mét.

Ví dụ: truy vấn sau đây tìm tất cả các nhà hàng trong phạm vi 1.000 mét tính từ điểm địa lý được liệt kê.

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