Deux outils pour placer vos clients sur la carte : le géocodage, qui trouve les coordonnées d'une adresse, et l'itinéraire routier, qui donne la distance, la durée et le tracé d'un trajet passant par 2 à 25 points.
À savoir
- Géocodage : la Base Adresse Nationale pour la France, puis OpenStreetMap pour les autres marchés ; sans
country, la France d'abord. Cinq résultats au plus, du plus probable au moins probable. - Itinéraire : profil voiture.
geometryest le tracé complet, point par point : comptez plusieurs centaines de Ko pour un long trajet. Ne demandez le tracé que si vous l'affichez. - Ces services sont partagés : 30 appels par minute et par organisation, en plus de la limite générale (voir limites de débit). Mettez en cache les adresses déjà géocodées.
- Une indisponibilité du service amont répond
502 geocode_unavailableou502 route_unavailable: réessayez avec un délai croissant.
Source et reprise
Adresses : Base Adresse Nationale (Licence Ouverte 2.0) ; ailleurs, et pour les itinéraires : © les contributeurs d'OpenStreetMap (ODbL), à créditer.
L'objet Geocode
| Champ | Type | Description |
|---|---|---|
resultstoujours présent | object[] | 5 au plus. |
results[].labeltoujours présent | string | |
results[].lattoujours présent | number | |
results[].lngtoujours présent | number |
Geocode
{
"results": [
{
"label": "12 Rue de la République 69002 Lyon",
"lng": 4.835769,
"lat": 45.76511
},
{
"label": "Rue de la République 69001 Lyon",
"lng": 4.836016,
"lat": 45.76637
},
{
"label": "Place de la République 69002 Lyon",
"lng": 4.835689,
"lat": 45.760722
}
]
}L'objet Route
| Champ | Type | Description |
|---|---|---|
distanceKmtoujours présent | number | |
durationMintoujours présent | number | |
legstoujours présent | object[] | |
legs[].distanceKmtoujours présent | number | |
legs[].durationMintoujours présent | number | |
geometrytoujours présent | object[] | |
geometry[].lattoujours présent | number | |
geometry[].lngtoujours présent | number |
Route
{
"distanceKm": 465.9,
"durationMin": 298,
"legs": [
{
"distanceKm": 465.9,
"durationMin": 298
}
],
"geometry": [
{
"lat": 48.857243,
"lng": 2.352316
},
{
"lat": 48.857254,
"lng": 2.352327
},
{
"lat": 48.857283,
"lng": 2.352354
},
{
"lat": 45.763837,
"lng": 4.835663
}
]
}Géocoder une adresse (France : Base Adresse Nationale ; autres marchés : OpenStreetMap)
GET
/v1/geocodeScope geo:readParamètres
| Champ | Où | Type | Description |
|---|---|---|---|
qobligatoire | requête | string1 à 200 caractères | |
countryfacultatif | requête | "fr" | "de" | "es" | "it" | "pt" | Absent : France (BAN) puis tous les marchés. |
Réponse 200
Succès — Un objet Geocode
Erreurs
| HTTP | Signification |
|---|---|
400 | Requête invalide |
401 | Clé d'API absente, invalide ou révoquée |
403 | Accès refusé (scope, plan ou statut du compte) |
404 | Ressource introuvable |
429 | Trop de requêtes |
500 | Erreur interne |
502 | Service partenaire en erreur |
Requête
curl "https://api.floweet.com/v1/geocode?q=12%20rue%20de%20la%20R%C3%A9publique%2C%20Lyon" \
-H "Authorization: Bearer $FLOWEET_API_KEY"Réponse 200
{
"results": [
{
"label": "12 Rue de la République 69002 Lyon",
"lng": 4.835769,
"lat": 45.76511
},
{
"label": "Rue de la République 69001 Lyon",
"lng": 4.836016,
"lat": 45.76637
},
{
"label": "Place de la République 69002 Lyon",
"lng": 4.835689,
"lat": 45.760722
}
]
}Itinéraire routier (voiture) passant par 2 à 25 points
POST
/v1/routesScope geo:readParamètres
| Champ | Où | Type | Description |
|---|---|---|---|
Idempotency-Keyfacultatif | en-tête | stringau plus 255 caractères | Clé unique de cette requête (un UUID v4 neuf, gardé pour ses nouvelles tentatives) : la première réponse est rejouée pendant 24 heures. |
Corps de la requête RouteInput
| Champ | Type | Description |
|---|---|---|
pointsobligatoire | object[]2 à 25 éléments | |
points[].latobligatoire | numberde -90 à 90 | |
points[].lngobligatoire | numberde -180 à 180 |
Réponse 200
Succès — Un objet Route
Erreurs
| HTTP | Signification |
|---|---|
400 | Requête invalide |
401 | Clé d'API absente, invalide ou révoquée |
403 | Accès refusé (scope, plan ou statut du compte) |
404 | Ressource introuvable |
429 | Trop de requêtes |
500 | Erreur interne |
502 | Service partenaire en erreur |
Requête
curl -X POST "https://api.floweet.com/v1/routes" \
-H "Authorization: Bearer $FLOWEET_API_KEY" \
-H "Idempotency-Key: 6f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87" \
-H "Content-Type: application/json" \
-d '{
"points": [
{
"lat": 48.8566,
"lng": 2.3522
},
{
"lat": 45.764,
"lng": 4.8357
}
]
}'Réponse 200
{
"distanceKm": 465.9,
"durationMin": 298,
"legs": [
{
"distanceKm": 465.9,
"durationMin": 298
}
],
"geometry": [
{
"lat": 48.857243,
"lng": 2.352316
},
{
"lat": 48.857254,
"lng": 2.352327
},
{
"lat": 48.857283,
"lng": 2.352354
},
{
"lat": 45.763837,
"lng": 4.835663
}
]
}