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 champ d'adresse unique en texte libre est facile à collecter et difficile à exploiter ensuite, surtout dès que vous devez filtrer par ville ou regrouper par région. Le géocodage direct fait l'analyse pour vous, comme effet secondaire de la résolution de l'adresse en coordonnées.
GET /v1/forward?q=1600 Pennsylvania Avenue, Washington, DC 20500&limit=1{
"status": "ok",
"query": "1600 Pennsylvania Avenue, Washington, DC 20500",
"results": [
{
"formatted": "1600 Pennsylvania Avenue NW, Washington, DC 20500",
"lat": 38.8977,
"lon": -77.0365,
"type": "address",
"precision": "house",
"confidence": 0.97,
"place_id": "def456",
"components": {"house_number": "1600", "street": "Pennsylvania Avenue NW", "city": "Washington", "region": "DC", "postcode": "20500", "country": "US"}
}
]
}Une fois l'objet components obtenu, enregistrez chaque champ dans sa propre colonne de base de données au lieu de ne conserver que la chaîne en texte libre d'origine. Cela permet de filtrer les fiches clients par ville ou par région, de produire des rapports régionaux exacts et de vérifier qu'un code postal et une ville vont bien ensemble, rien de tout cela n'étant réalisable avec une seule chaîne non structurée.
La structure des adresses n'est pas la même partout. Une adresse au Royaume-Uni peut être résolue avec un comté à la place d'une région à l'américaine, et un composant comme house_number peut être totalement absent pour un bâtiment désigné par son nom. Le même style de requête fonctionne quel que soit le pays, mais les clés de composants que vous obtenez réellement peuvent varier : concevez donc votre schéma de stockage pour tolérer l'absence d'un composant plutôt que de supposer que chaque pays remplit exactement le même ensemble à chaque fois.
Ne codez pas en dur l'hypothèse que chaque résultat contiendra à la fois house_number, street, city, region et postcode, pour ensuite traiter toute adresse à laquelle il en manque un comme une erreur d'analyse. Une adresse parfaitement valide, surtout en dehors d'un quadrillage urbain numéroté, peut légitimement revenir avec certains champs vides. Construire une validation stricte autour d'un ensemble complet de composants rejettera de vraies saisies clients que l'endpoint a correctement analysées.
Stockez la saisie en texte libre d'origine à côté des composants analysés au lieu de la supprimer. Si un composant revient incomplet ou si un client doit corriger quelque chose plus tard, disposer du texte d'origine facilite une nouvelle analyse ou une correction manuelle.
Toutes les adresses ne sont pas résolues avec tous les composants remplis. Une adresse rurale peut revenir sans house_number, et une petite ville peut revenir sans valeur de région distincte. Traitez les champs de composants manquants comme légitimement vides plutôt que comme un échec d'analyse, et rabattez-vous sur la chaîne formatée pour l'affichage lorsqu'un composant précis que vous vouliez n'est pas présent.
Augmenter limit au-delà de 1 renvoie plusieurs résultats candidats, classés selon la façon dont chacun correspond au texte libre, ce qui est utile lorsque vous souhaitez présenter au client une courte liste de choix plutôt que de retenir silencieusement la meilleure correspondance. C'est un compromis raisonnable entre une analyse entièrement automatique et un formulaire de saisie entièrement manuel, en particulier pour les adresses que votre seuil de confiance signalerait sinon comme incertaines.
Analyser un champ de texte libre de cette façon coûte une requête par adresse, comme toute autre recherche de géocodage direct. Une tâche de rattrapage qui nettoie une table existante d'adresses en texte libre peut traiter toute la table sous forme de requête groupée, avec une requête par ligne.
Transformer du texte libre en champs structurés est un effet secondaire naturel du géocodage d'une adresse, et non une étape supplémentaire. La documentation du géocodage direct liste chaque composant que l'endpoint peut renvoyer.