Surveillez l'utilisation de votre clé avant d'atteindre une limite
Surveiller vos en-têtes de quota au fil de l'eau vous indique quand une limite approche, bien avant qu'une requête ne soit effectivement refusée.
La distance entre deux adresses n'est pas une donnée qu'une API de géocodage renvoie directement, car un calcul de distance n'a besoin que de coordonnées, que l'endpoint de géocodage direct vous fournit déjà pour toute adresse que vous lui envoyez.
Géocodez chaque adresse séparément, ou les deux ensemble dans une seule requête groupée, pour obtenir un couple latitude et longitude pour chacune.
POST /v1/forward
Content-Type: application/json
["221B Baker Street, London", "10 Downing Street, London"]{
"status": "ok",
"results": [
{"formatted": "221B Baker Street, London, UK", "lat": 51.5237, "lon": -0.1585, "type": "address", "precision": "house", "confidence": 0.95, "place_id": "abc123", "components": {}},
{"formatted": "10 Downing Street, London, UK", "lat": 51.5033, "lon": -0.1276, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "op678", "components": {}}
]
}Avec deux couples de coordonnées en main, appliquez la formule de haversine standard, qui convertit la différence de latitude et de longitude en distance en ligne droite à la surface de la Terre. La plupart des langages de programmation disposent d'une petite implémentation de haversine bien testée, sous forme de fonction courte ou de bibliothèque courante : inutile donc d'écrire la trigonométrie vous-même.
distance_km = haversine(51.5237, -0.1585, 51.5033, -0.1276)La formule de haversine attend la latitude et la longitude en radians, mais les coordonnées d'une réponse d'API sont toujours exprimées en degrés. Injecter directement des valeurs en degrés dans une formule écrite pour des radians donnera une distance qui paraît plausible au premier abord mais qui est discrètement fausse d'un facteur important. Convertissez d'abord les degrés en radians, ou utilisez une fonction de bibliothèque qui indique l'unité attendue, et comparez le résultat à une distance que vous connaissez déjà avant de vous y fier en production.
Le même calcul s'étend naturellement à plus de deux points. Géocodez chaque arrêt d'un itinéraire dans une seule requête groupée, puis additionnez la distance de haversine entre chaque paire de coordonnées consécutives pour obtenir une longueur totale approximative de l'itinéraire, utile pour estimer rapidement une tournée de livraison avant même de disposer d'un vrai calcul d'itinéraire détaillé.
total_km = haversine(a, b) + haversine(b, c) + haversine(c, d)Un calcul de haversine donne une distance en ligne droite, pas une distance en voiture ou à pied par les routes réelles. Pour la plupart des usages, comme trier des lieux proches ou estimer une proximité approximative, la distance en ligne droite suffit et ne nécessite rien d'autre que les coordonnées dont vous disposez déjà. Si vous avez spécifiquement besoin d'une distance de trajet calculée sur un itinéraire, il s'agit d'un autre type de calcul, qui dépasse ce que fournit une recherche de géocodage.
Deux points situés de part et d'autre de l'antiméridien, ou très près d'un pôle, peuvent tromper une formule de distance naïve qui ne tient pas compte du passage de la longitude de 180 à moins 180. C'est rare pour des vérifications classiques de distance entre adresses, mais cela vaut la peine d'être testé si votre application couvre réellement cette partie du globe.
Géocoder deux adresses coûte deux requêtes, qu'elles soient envoyées en appels séparés ou en un seul appel groupé. Le calcul de distance lui-même, une fois les deux couples de coordonnées obtenus, se fait entièrement dans votre propre code et ne coûte rien de plus sur votre quota.
Si l'une des deux adresses a déjà été géocodée et mise en cache, seule la nouvelle adresse nécessite une nouvelle requête, ce qui réduit le coût de ce calcul à une requête au lieu de deux.
Un calcul de distance n'est qu'à une requête de géocodage pour toute adresse que vous n'avez pas encore convertie en coordonnées. Consultez la documentation du géocodage direct pour la structure complète de la réponse.