Busca geográfica

Coloque um campo geopoint em um modelo e você pode perguntar quais registros estão mais perto de um ponto, ordenados por distância. As consultas funcionam com pontos e raio.

Campos geopoint

Um campo geopoint guarda uma latitude e uma longitude, e o console o edita com um seletor de mapa. Um modelo pode ter vários, cada um um ponto com nome próprio. O ponto é indexado na mesma transação da gravação do registro, então um registro pode ser encontrado por localização assim que é salvo.

Mais perto de um ponto ou de um registro

searchByLocation recebe uma latitude e uma longitude e retorna os registros perto desse ponto. findNearbyRecords recebe um registro e retorna os mais próximos dele, deixando esse registro de fora. As duas podem ser restritas a um modelo. Os resultados vêm do mais próximo para o mais distante, e cada um traz a distância em metros junto com o id do registro, a chave do modelo, a chave natural e o conteúdo.

Raio e paginação

O raio é opcional. Com ele, os resultados param nessa distância. Sem ele, a consulta retorna os registros mais próximos onde quer que estejam. Os resultados são paginados por cursor, somente para frente, 50 por página por padrão. Uma latitude fora de -90 a 90 ou uma longitude fora de -180 a 180 é recusada.

Regras de acesso e registros existentes

Uma consulta roda sob as regras de acesso por linha do chamador. Adicionar um campo geopoint a um modelo que já tem registros não indexa as linhas existentes. foir geometry tem comandos que listam os registros ausentes do índice e os preenchem.

Somente pontos e raio

Áreas, linhas e caixas delimitadoras não são suportadas.

Leia os detalhes

A referência da CLI documenta os comandos de geometria: buscar perto de um ponto, encontrar os registros mais próximos de outro e preencher registros que ainda não estão indexados.