Recherche géographique

Ajoutez un champ geopoint à un modèle et vous pouvez demander quels enregistrements sont les plus proches d'un point, classés par distance. Les requêtes fonctionnent avec des points et un rayon.

Champs geopoint

Un champ geopoint contient une latitude et une longitude, et la console le modifie avec un sélecteur sur carte. Un modèle peut en porter plusieurs, chacun étant un point nommé séparément. Le point est indexé dans la même transaction que l'écriture de l'enregistrement : un enregistrement peut donc être trouvé par sa position dès qu'il est sauvegardé.

Les plus proches d'un point ou d'un enregistrement

searchByLocation prend une latitude et une longitude et renvoie les enregistrements proches de ce point. findNearbyRecords prend un enregistrement et renvoie les plus proches de celui-ci, en l'excluant. Les deux peuvent être restreintes à un modèle. Les résultats arrivent du plus proche au plus éloigné, et chacun porte sa distance en mètres avec l'id de l'enregistrement, la clé de modèle, la clé naturelle et le contenu.

Rayon et pagination

Le rayon est facultatif. Avec un rayon, les résultats s'arrêtent à cette distance. Sans rayon, la requête renvoie les enregistrements les plus proches, où qu'ils soient. Les résultats sont paginés par curseur, uniquement vers l'avant, 50 par page par défaut. Une latitude hors de -90 à 90 ou une longitude hors de -180 à 180 est refusée.

Règles d'accès et enregistrements existants

Une requête s'exécute sous les règles d'accès au niveau des lignes de l'appelant. Ajouter un champ geopoint à un modèle qui contient déjà des enregistrements n'indexe pas les lignes existantes. foir geometry propose des commandes qui listent les enregistrements absents de l'index et les y ajoutent.

Points et rayon uniquement

Les zones, les lignes et les boîtes englobantes ne sont pas prises en charge.

Lire le détail

La référence de la CLI documente les commandes geometry : rechercher près d'un point, trouver les enregistrements les plus proches d'un autre et indexer les enregistrements qui ne le sont pas encore.