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.