Controla el uso de tu clave antes de alcanzar un límite
Vigilar las cabeceras de cuota sobre la marcha te indica cuándo te acercas a un límite, mucho antes de que se rechace realmente una solicitud.
Un cliente puede escribir una dirección real y un código postal real que en realidad no van juntos, casi siempre por intercambiar dígitos o por copiar un código postal antiguo en una dirección nueva. Ninguno de los dos campos por sí solo revela el problema, ya que ambos son válidos individualmente.
Geocodifica la dirección completa con /v1/forward para ver a qué código postal corresponde realmente y, por separado, consulta con /v1/postcode el código postal que escribió el cliente para ver qué zona cubre.
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": {"postcode": "SW1A 2AA", "city": "London"}}
]
}GET /v1/postcode?code=SW1A 1AA&country=GB{
"status": "ok",
"postcode": "SW1A 1AA",
"country_code": "GB",
"results": [{"lat": 51.5014, "lon": -0.1419, "components": {"city": "London", "region": "Greater London"}}]
}Si el componente postcode de la consulta de la dirección no coincide con el código postal que escribió el cliente, como en este ejemplo, se trata de una discrepancia que conviene señalar, aunque tanto la dirección como el código postal hayan resultado ser reales por separado. Comparar directamente los dos componentes es más fiable que comparar la distancia entre los dos pares de coordenadas, ya que la zona de un código postal puede ser tan pequeña que incluso una coincidencia auténtica no caiga exactamente sobre las coordenadas de la dirección.
La misma comprobación detecta también un error mucho más evidente: un código postal introducido para un país o región totalmente distinto al de la propia dirección, como un código con formato del Reino Unido junto a una dirección que en realidad se encuentra en otro país. Comparar el componente country del resultado de la dirección con el parámetro country usado en la consulta del código postal, antes incluso de llegar a la comparación más detallada del código postal, es una primera comprobación barata que filtra pronto este tipo de error mayor.
Muestra al cliente ambos valores uno al lado del otro y pídele que confirme cuál es el correcto, en lugar de elegir uno en silencio o rechazar el pedido directamente. Un dígito intercambiado se corrige fácilmente una vez señalado, y un caso límite auténtico en el que un código postal cubre legítimamente la frontera entre dos valores de uso común es lo bastante raro como para resolverlo con una rápida confirmación manual.
No compares directamente los dos pares de coordenadas con un umbral de distancia como sustituto de comparar los propios componentes del código postal. La zona de un código postal puede ser geográficamente tan pequeña que incluso una coincidencia totalmente correcta muestre cierta distancia entre el punto representativo del código postal y las coordenadas del edificio concreto de la dirección, y un código de zona pequeña también puede ser geográficamente tan grande que un par realmente discrepante siga quedando dentro de un umbral de distancia permisivo. Comparar el texto del código postal es una comprobación más directa y fiable que intentar deducir una coincidencia a partir de la distancia.
La zona de un código postal situada justo en la frontera entre dos regiones administrativas puede devolver legítimamente un conjunto de componentes algo distinto según el endpoint que la haya resuelto, aunque ambos sean correctos. Trata una coincidencia de texto cercana pero no exacta, como una diferencia solo en la forma de escribir el nombre de una región, con más flexibilidad que un código postal completamente distinto.
Para un lote de pedidos existentes en lugar de un único envío nuevo, ambos endpoints aceptan un array en un POST masivo, así que puedes comprobar pedidos atrasados enviando las direcciones en una solicitud masiva a /v1/forward y los códigos postales en otra solicitud masiva a /v1/postcode, y comparando después los dos arrays de resultados por posición.
Esta comprobación usa dos solicitudes por pedido, una para la dirección y otra para el código postal, y ambas cuentan para tu cuota diaria igual que cualquier otra consulta. Es un costo razonable por detectar un error que de otro modo aparecería como una entrega fallida.
Detectar un código postal que no coincide antes de enviar un pedido compensa la segunda solicitud que cuesta comprobarlo. Tienes los detalles de ambos endpoints en la documentación de geocodificación directa y en la documentación de consulta de códigos postales.