Vérifier un géofence circulaire
Ce vérificateur de géofence circulaire détermine si un point de latitude et de longitude se trouve à l'intérieur, exactement sur la limite ou à l'extérieur d'un rayon autour d'une coordonnée centrale.
Lancer gratuitement
Il calcule la distance orthodromique avec la formule de Haversine, la compare au rayon en mètres et renvoie une marge signée indiquant l'espace restant. Une marge positive signifie que le point est dedans, zéro désigne la limite et une marge négative indique de combien il est dehors. Le calcul est déterministe et ne nécessite aucun service cartographique, aucune recherche d'appareil ni aucune requête réseau.
Définissez précisément le point, le centre et le rayon
Un géofence circulaire comprend trois éléments essentiels : une latitude centrale, une longitude centrale et un rayon non négatif mesuré en mètres. La latitude et la longitude distinctes du point désignent l'emplacement que vous souhaitez tester. Fournissez toutes les coordonnées en degrés décimaux dans les plages géographiques WGS84 habituelles : latitude de moins quatre-vingt-dix à quatre-vingt-dix et longitude de moins cent quatre-vingts à cent quatre-vingts. N'envoyez ni coordonnées cartographiques projetées, ni texte en degrés, minutes et secondes, ni rayon en kilomètres sans conversion préalable. Par exemple, une zone de livraison de cinq kilomètres exige une valeur radius_m de 5000. Le vérificateur accepte zéro comme rayon utile ; seul un point ayant exactement les coordonnées du centre se trouve alors à l'intérieur. Il rejette les valeurs absentes, les nombres non finis, les coordonnées hors limites et les rayons négatifs au lieu de corriger silencieusement une probable erreur d'intégration. Les longitudes situées de part et d'autre de l'antiméridien fonctionnent sans traitement spécial côté client, car la formule trigonométrique prend naturellement la plus courte séparation sphérique.
Interprétez l'appartenance, la distance et la marge signée
La réponse comporte quatre champs concis. Le booléen inside vaut vrai lorsque la distance calculée est inférieure ou égale au rayon ; un point exactement sur la limite appartient donc au géofence. Le champ distance_m représente la distance orthodromique entre le centre et le point sur une sphère terrestre moyenne de rayon 6,371,000 mètres. radius_m rappelle le rayon validé, tandis que margin_m soustrait la distance au rayon. Cette marge signée est souvent plus informative qu'un simple booléen : 240 signifie que le point est à l'intérieur avec environ 240 mètres de réserve, zéro correspond au bord et moins 85 signifie qu'il se trouve environ 85 mètres à l'extérieur. Les distances renvoyées sont arrondies à six décimales pour garantir une sérialisation stable, mais la décision inside repose sur le calcul complet non arrondi. La valeur affichée après arrondi ne peut donc pas modifier la comparaison réelle. Pour des règles d'itinéraire ou de facturation, choisissez une zone tampon opérationnelle avant l'appel ou comparez la marge renvoyée à votre propre seuil de sécurité.
Exploitez le résultat prudemment dans un flux réel
Les contrôles circulaires conviennent à la détection d'arrivée, à l'éligibilité de livraison, aux alertes d'équipement proche et aux zones d'accès approximatives. Ils ne constituent pas des limites foncières légales et ne tiennent compte ni des routes, ni des murs, ni de l'altitude, ni des étages, ni de l'incertitude GPS. La position d'un téléphone peut varier de plusieurs mètres ; les applications en production demandent donc souvent des relevés répétés, une précision minimale ou une hystérésis avant toute action irréversible. Par exemple, un processus d'arrivée peut entrer seulement lorsque margin_m dépasse vingt mètres et sortir lorsqu'il descend sous moins vingt, ce qui évite les changements rapides près du bord. Le modèle sphérique de Haversine est cohérent et rapide partout, y compris près des pôles et de l'antiméridien, mais reste une approximation et non un calcul topographique ellipsoïdal. Des entrées identiques donnent toujours la même sortie, car le solveur n'utilise ni réseau, ni heure, ni hasard, ni base cartographique externe. L'exécution interactive est disponible dans le navigateur et chaque requête API automatisée coûte $0.002. Conservez les coordonnées originales avec le résultat si un audit ultérieur doit justifier la décision.
Cas d’usage
Éligibilité à la livraison
Vérifiez si la coordonnée d'un client appartient au rayon de service et utilisez la marge pour expliquer sa proximité avec la limite.
Logique d'arrivée et de départ
Évaluez les relevés d'un appareil par rapport au géofence et appliquez un seuil positif ou négatif pour réduire l'instabilité au bord.
Alertes de proximité d'actifs
Déterminez si la position déclarée d'un actif est entrée dans une zone surveillée sans interroger un fournisseur cartographique externe.
Questions fréquentes
Que signifie une marge positive ?
Le point est dans le géofence et margin_m représente la distance restante jusqu'à la limite circulaire.
Un point sur la limite est-il considéré à l'intérieur ?
Oui. L'appartenance utilise une distance inférieure ou égale au rayon ; la limite exacte renvoie donc inside vrai et une marge nulle.
Quelles unités sont utilisées ?
Le rayon, la distance calculée et la marge sont en mètres. La latitude et la longitude sont exprimées en degrés décimaux.
Quelle formule de distance est employée ?
Le solveur applique la formule de Haversine à une sphère terrestre moyenne de rayon 6,371,000 mètres.
Quel est le prix d'une vérification API ?
Chaque requête API réussie coûte $0.002. L'exécuteur déterministe du navigateur permet aussi des vérifications interactives.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/geo/geofence-circle-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"point_lat":40.73061,"point_lon":-73.935242,"center_lat":40.7128,"center_lon":-74.006,"radius_m":10000}'const res = await fetch("https://api.kit.forhosting.com/geo/geofence-circle-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"point_lat": 40.73061,
"point_lon": -73.935242,
"center_lat": 40.7128,
"center_lon": -74.006,
"radius_m": 10000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/geofence-circle-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"point_lat": 40.73061,
"point_lon": -73.935242,
"center_lat": 40.7128,
"center_lon": -74.006,
"radius_m": 10000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/geofence-circle-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"point_lat":40.73061,"point_lon":-73.935242,"center_lat":40.7128,"center_lon":-74.006,"radius_m":10000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"point_lat":40.73061,"point_lon":-73.935242,"center_lat":40.7128,"center_lon":-74.006,"radius_m":10000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/geofence-circle-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"point_lat": 40.73061,
"point_lon": -73.935242,
"center_lat": 40.7128,
"center_lon": -74.006,
"radius_m": 10000
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.geofence_circle_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |