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 người dùng và các địa điểm đáng quan tâm ở gần đó, sắp xếp các địa điểm đó từ gần nhất đến xa nhất.
Yêu cầu về phiên bản
Tính năng truy vấn không gian địa lý yêu cầu cơ sở dữ liệu Firestore phiên bản Doanh nghiệp.
Trước khi bắt đầu
Để thực hiện truy vấn 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.
Chạy truy vấn không gian địa lý
Để thực hiện truy vấn 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ả 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 */) });