Usar consultas geoespaciais

É possível fazer consultas geoespaciais em Cloud Firestore para criar serviços com reconhecimento de localização. Por exemplo, é possível encontrar a distância entre um usuário e pontos de interesse próximos, classificando-os do mais próximo ao mais distante.

Requisitos da edição

O recurso de consulta geoespacial exige um banco de dados da edição Enterprise do Firestore.

Antes de começar

Para fazer uma consulta geoespacial, primeiro crie índices geoespaciais para os campos em que você precisa pesquisar.

Executar uma consulta geoespacial

Para fazer uma consulta geoespacial, use a expressão geoDistance no parâmetro query da etapa search(...).

Somente o operador menor ou igual a (<=) é compatível. A distância é medida em metros.

Por exemplo, a consulta a seguir encontra todos os restaurantes em um raio de 1.000 metros do geoponto listado.

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