Búsqueda geográfica
Añade un campo geopoint a un modelo y podrás preguntar qué registros están más cerca de un punto, ordenados por distancia. Las consultas funcionan con puntos y un radio.
Campos geopoint
Un campo geopoint guarda una latitud y una longitud, y la consola lo edita con un selector de mapa. Un modelo puede tener varios, cada uno un punto con nombre propio. El punto se indexa en la misma transacción que la escritura del registro, así que un registro se puede encontrar por ubicación en cuanto se guarda.
Lo más cercano a un punto o a un registro
searchByLocation recibe una latitud y una longitud y devuelve los registros cercanos a ese punto. findNearbyRecords recibe un registro y devuelve los más cercanos a él, sin incluir ese registro. Ambas se pueden limitar a un modelo. Los resultados llegan de más cercano a más lejano, y cada uno incluye su distancia en metros junto con el id del registro, la clave del modelo, la clave natural y el contenido.
Radio y paginación
El radio es opcional. Con él, los resultados se detienen a esa distancia. Sin él, la consulta devuelve los registros más cercanos estén donde estén. Los resultados se paginan con cursor, solo hacia adelante, 50 por página de forma predeterminada. Se rechaza una latitud fuera de -90 a 90 o una longitud fuera de -180 a 180.
Reglas de acceso y registros existentes
Para quien llama, una consulta se ejecuta bajo las reglas de acceso por fila. Añadir un campo geopoint a un modelo que ya tiene registros no indexa las filas existentes. foir geometry tiene comandos que listan los registros que faltan en el índice y los rellenan.
Solo puntos y radio
No se admiten áreas, líneas ni cuadros delimitadores.
Lee el detalle
La referencia de la CLI documenta los comandos de geometry: buscar cerca de un punto, encontrar los registros más cercanos a otro y rellenar los registros que aún no están indexados.