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.
Un service de livraison qui ne couvre qu'une certaine zone a besoin d'un moyen de refuser les adresses situées hors de cette zone avant qu'une commande ne soit passée, et non après qu'un livreur l'a découvert lors de la répartition des tournées.
Lorsqu'un client envoie son adresse de livraison, géocodez-la avant d'accepter la commande.
GET /v1/forward?q=10 Downing Street, London&limit=1{
"status": "ok",
"results": [
{"formatted": "10 Downing Street, London, UK", "lat": 51.5033, "lon": -0.1276, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "op678", "components": {}}
]
}Avec les coordonnées du client et les coordonnées fixes de votre entrepôt de livraison, calculez la distance à vol d'oiseau entre les deux à l'aide d'une formule de haversine classique dans votre propre code, puis comparez-la à votre rayon de livraison.
distance_km = haversine(hub_lat, hub_lon, 51.5033, -0.1276)
if distance_km > max_radius_km:
reject_order()Un score de confiance faible sur le résultat du géocodage signifie que l'adresse elle-même était ambiguë, pas forcément qu'elle se trouve hors de votre rayon. Traitez une correspondance à faible confiance séparément d'un refus net pour cause de dépassement du rayon, par exemple en demandant au client de confirmer ou de préciser son adresse plutôt que de refuser la commande d'emblée.
Une entreprise qui exploite plusieurs entrepôts de livraison doit calculer la distance jusqu'à chacun d'eux, et pas seulement jusqu'à un seul, puis accepter la commande si le rayon de l'un d'eux couvre l'adresse. Attribuer la commande à l'entrepôt le plus proche prépare aussi correctement la logistique à partir du même calcul, puisque vous connaissez déjà l'entrepôt retenu une fois le tri par distance effectué.
nearest_hub = min(hubs, key=lambda h: haversine(h.lat, h.lon, cust_lat, cust_lon))
if nearest_hub.distance_km > nearest_hub.max_radius_km:
reject_order()Ne refusez pas une commande dès que distance_km dépasse max_radius_km d'une valeur insignifiante, par exemple quelques dizaines de mètres, sans donner au client la moindre explication ni solution. Une adresse située pratiquement sur la limite est une conséquence normale du tracé d'un rayon sur une carte, et un refus sec sans contexte paraît arbitraire à un client qui habite à deux rues d'une ligne qu'il ne peut pas voir. Afficher la distance calculée et le rayon couvert, plutôt qu'un simple refus, explique au moins pourquoi.
Un rayon à vol d'oiseau est une approximation simple qui inclura parfois un point techniquement éloigné par la route, ou en exclura un qui est proche par la route mais éloigné en ligne droite, par exemple de l'autre côté d'une rivière sans pont à proximité. Pour la plupart des vérifications de zone de livraison, cette approximation suffit, et l'affiner davantage nécessiterait des données d'itinéraire qui dépassent ce que fournit une recherche de géocodage.
Chaque vérification d'adresse correspond à une requête de géocodage, ou à une requête par entrepôt candidat comparé si vous vérifiez l'adresse par rapport à une liste d'entrepôts au moyen d'appels séparés au lieu de réutiliser localement les mêmes coordonnées, puisque seule l'adresse elle-même doit être géocodée, et non chaque entrepôt. Pour une entreprise locale typique, un formulaire de livraison qui vérifie chaque commande reste largement dans les 2 500 requêtes gratuites par jour incluses avec chaque clé, et ne passe au crédit prépayé qu'une fois que le volume de commandes augmente sensiblement.
Refuser une commande hors zone au moment de l'envoi, plutôt qu'au moment de la répartition des livraisons, épargne plus tard aux deux parties un échange inutile. Le détail complet des paramètres se trouve dans la documentation du géocodage direct, et les formules tarifaires actuelles sur la page des tarifs.