Use geospatial search

You can perform geospatial queries in Cloud Firestore to build location aware services. For example, you can find the distance between a user and nearby points of interest, sorting them from nearest to farthest.

Edition requirements

The geospatial search feature requires a Firestore Enterprise edition database.

Before you begin

To perform a geospatial search, you must first create geospatial indexes for the fields you need to search through.

To perform a geospatial search, use the geoDistance expression within the query parameter of the search(...) stage.

Only the less than or equals ( <= ) operator is supported. The distance is measured in meters.

For example, the following query finds all restaurants within 1,000 meters of the listed geopoint.

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 */ 
 ) 
  
 }); 
Create a Mobile Website
View Site in Mobile | Classic
Share by: