Vérifiez si une adresse est dans le rayon de livraison
Décidez en une étape si une adresse entre dans votre zone de livraison : une adresse située à 6,283267 km à vol d’oiseau du centre est dans un rayon de 10 km. Saisissez les deux paires de coordonnées et le rayon. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Latitude du hub
- 40,7128
- Longitude du hub
- -74,006
- Latitude de l'adresse
- 40,73061
- Longitude de l'adresse
- -73,935242
- Rayon maximal (km)
- 10
- Distance (km)
- 6,283267
Une promesse de livraison commence souvent par une question concrète : cette adresse est-elle assez proche du centre attribué ? Indiquez la latitude et la longitude du centre, celles de l’adresse de livraison et le rayon maximal en kilomètres. La capacité valide les deux couples de coordonnées, calcule leur distance orthodromique en ligne droite et renvoie une décision claire avec la distance mesurée. Déterministe et sans fournisseur cartographique, elle convient au paiement, au préfiltrage des expéditions et aux règles d’exploitation reproductibles.
Calcul de la décision relative à la zone de livraison
La capacité considère le centre comme le milieu d’une zone circulaire et le rayon maximal fourni comme sa limite. Elle calcule la plus courte distance de surface entre le centre et l’adresse avec la formule de Haversine et un rayon terrestre moyen fixe de 6371.0088 kilomètres. Il s’agit d’une distance orthodromique, parfois appelée distance à vol d’oiseau.
La comparaison emploie la valeur interne complète. Ce modèle n’examine ni routes, ponts, rivières, circulation, restrictions, ni polygones dessinés. Utilisez-le pour une règle commerciale réellement radiale ou comme premier filtre économique avant un système d’itinéraires ou de territoires plus coûteux.
Préparation des coordonnées et lecture des erreurs
Les latitudes sont comprises entre -90 et 90 degrés décimaux, les longitudes entre -180 et 180, bornes incluses. Le rayon doit être positif ou nul ; zéro n’accepte que le point exact du centre. Une erreur fréquente consiste à inverser latitude et longitude.
Certaines longitudes entrant dans la plage des latitudes, une paire inversée peut être validée tout en désignant un autre lieu. Conservez donc le même ordre pendant le géocodage, le stockage et la requête. Employez des positions géographiques en degrés décimaux, pas des mètres projetés, codes postaux ou adresses brutes.
Géocodez d’abord et gardez une précision adaptée. La validation ne garantit pas que le point corresponde au bâtiment, à l’entrée ou au repère souhaité.
Utilisation sûre au paiement et à l’expédition
Avec plusieurs centres, évaluez chacun d’eux, éliminez les résultats false et classez les autres selon la distance, le stock, la charge ou le délai promis. Une correspondance de rayon ne garantit ni route praticable ni livraison réussie. Littoral, voies interdites, péages, ferries, sites fermés et territoires locaux peuvent rendre un point proche impraticable.
Complétez alors le filtre radial par un itinéraire ou un polygone. Fixez le rayon dans une politique commerciale explicite. Le calcul n’utilise ni réseau, ni hasard, ni heure courante : des requêtes identiques produisent des réponses identiques.
Corrigez les erreurs de validation à la source, notamment les champs inversés et le géocodage incomplet.
Cas d’usage
Admissibilité de la livraison au paiement
Déterminez si une adresse géocodée est assez proche d’un centre avant de proposer une livraison locale ou le jour même.
Choix du centre admissible le plus proche
Comparez une adresse à plusieurs centres, retirez ceux hors rayon et classez les autres selon le stock et la charge.
Contrôle qualité des données d’expédition
Validez les coordonnées enregistrées et consignez une distance et un résultat reproductibles pour les contrôles et exceptions.
Questions fréquentes
La distance suit-elle les routes ?
Non. Il s’agit de la distance orthodromique sur la surface terrestre. Routes, trafic et restrictions exigent un service d’itinéraires.
Puis-je envoyer une adresse postale plutôt que des coordonnées ?
Non. Géocodez-la d’abord, puis envoyez sa latitude et sa longitude décimales avec celles du centre.
Combien coûte une vérification ?
Le calcul est déterministe et ne sollicite aucun fournisseur cartographique.
Une adresse pile sur la limite du rayon est-elle dans la zone ?
Oui. L’adresse est dans la zone lorsque sa distance est inférieure ou égale au rayon, et la comparaison utilise la distance complète, non arrondie, si bien que l’arrondi affiché ne change jamais la décision.
Que se passe-t-il si j’inverse latitude et longitude ?
Beaucoup de paires inversées semblent encore valides, car la plupart des longitudes tiennent aussi dans la plage des latitudes, mais elles désignent un autre lieu. Gardez toujours le même ordre, du géocodage jusqu’à cette vérification.
Outils associés
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/ecom/last-mile-delivery-zone-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"hub_lat":40.7128,"hub_lon":-74.006,"address_lat":40.73061,"address_lon":-73.935242,"max_radius_km":10}'const res = await fetch("https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"hub_lat": 40.7128,
"hub_lon": -74.006,
"address_lat": 40.73061,
"address_lon": -73.935242,
"max_radius_km": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"hub_lat": 40.7128,
"hub_lon": -74.006,
"address_lat": 40.73061,
"address_lon": -73.935242,
"max_radius_km": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"hub_lat":40.7128,"hub_lon":-74.006,"address_lat":40.73061,"address_lon":-73.935242,"max_radius_km":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"hub_lat":40.7128,"hub_lon":-74.006,"address_lat":40.73061,"address_lon":-73.935242,"max_radius_km":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-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
{
"hub_lat": 40.7128,
"hub_lon": -74.006,
"address_lat": 40.73061,
"address_lon": -73.935242,
"max_radius_km": 10
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.last_mile_delivery_zone_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. |
Notes techniques
Calcul de la décision relative à la zone de livraison
Si la valeur calculée avant arrondi est inférieure ou égale au rayon maximal, within_zone vaut true ; sinon, elle vaut false. La réponse fournit aussi distance_km, arrondie à six décimales, et rappelle max_radius_km afin de rendre les journaux explicites.
Préparation des coordonnées et lecture des erreurs
Fournissez cinq nombres finis : hub_lat, hub_lon, address_lat, address_lon et max_radius_km. Les valeurs absentes, textes non numériques, infinis et coordonnées hors plage renvoient invalid_input.
Utilisation sûre au paiement et à l’expédition
Au paiement, appelez la capacité après conversion de l’adresse en coordonnées, puis utilisez within_zone parmi les critères de l’offre. Conservez distance_km dans l’audit de commande pour pouvoir expliquer l’option affichée. Chaque élément API réussi coûte $0.002.
Questions techniques
Une adresse exactement sur la limite est-elle incluse ?
Oui. within_zone vaut true lorsque la distance complète est inférieure ou égale à max_radius_km.
Que se passe-t-il si des coordonnées sont invalides ?
Une latitude ou longitude absente, non finie ou hors plage renvoie invalid_input, sans décision de zone.