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.
Una empresa con unas pocas oficinas no necesita nada elaborado para responder a "qué oficina me queda más cerca", solo una solicitud de geocodificación y una breve comparación con una lista que rara vez cambia.
Tanto si el visitante escribe una dirección como un código postal, geocodifícalo para obtener las coordenadas.
GET /v1/forward?q=Berlin, Germany&limit=1{
"status": "ok",
"results": [
{"formatted": "Berlin, Germany", "lat": 52.5200, "lon": 13.4050, "type": "locality", "precision": "city", "confidence": 0.85, "place_id": "bl456", "components": {"city": "Berlin", "country": "DE"}}
]
}Guarda las coordenadas de tus oficinas como una pequeña lista fija en tu propio código o configuración, ya que esto rara vez cambia y no necesita una consulta propia cada vez.
offices = [
{"name": "Berlin", "lat": 52.5170, "lon": 13.3888},
{"name": "Paris", "lat": 48.8566, "lon": 2.3522},
{"name": "London", "lat": 51.5074, "lon": -0.1278}
]Calcula la distancia desde las coordenadas del visitante hasta cada oficina con la fórmula estándar del haversine, luego ordena por distancia y devuelve la coincidencia más cercana.
En lugar de un simple cuadro de texto, respaldar el campo de ubicación con /v1/autocomplete permite al visitante elegir entre lugares sugeridos mientras escribe, lo que reduce la probabilidad de que una errata produzca un resultado de geocodificación inesperado. Una vez seleccionada una sugerencia, resolver su place_id o su texto mediante el mismo flujo de geocodificación directa alimenta directamente la misma comparación de distancias ya descrita.
Observa que la precisión en el ejemplo anterior es "city" en lugar de "house", ya que el visitante solo introdujo el nombre de una ciudad. Eso está bien para un buscador de oficinas, donde el objetivo es elegir la oficina más cercana entre unas pocas opciones, no localizar un edificio exacto. Aquí una precisión más gruesa no necesita un tratamiento especial como sí podría necesitarlo una dirección de entrega.
No olvides actualizar la lista fija de oficinas en tu propio código cuando una oficina física abra, cierre o se traslade. Como la lista vive en tu propia configuración y no en la API, es fácil que quede desactualizada sin que nadie lo note, enviando en silencio a los visitantes hacia una ubicación cerrada o dejando una nueva fuera de todas las comparaciones. Trata esa lista como parte de tu revisión habitual de contenidos, no como un paso de configuración que se hace una sola vez.
Un nombre de lugar corto puede coincidir en ocasiones con más de una ubicación real, como un nombre de lugar compartido entre un país y una región sin relación en otra parte. Pasar el parámetro countries para restringir las coincidencias candidatas a los países donde realmente tienes oficinas evita que este tipo de ambigüedad se resuelva en la otra punta del mundo.
Mostrar las dos o tres oficinas más cercanas, en lugar de solo la más próxima, da a un visitante situado cerca de un límite regional la oportunidad de elegir la que realmente le conviene, como una con un idioma o una zona horaria que encaje mejor aunque esté un poco más lejos en distancia.
Cada búsqueda es una solicitud de geocodificación. La comparación con tu lista de oficinas se hace por completo en tu propio código después y no añade nada más a tu recuento de solicitudes. Una página como esta, incluso con tráfico constante, se mantiene holgadamente dentro de las 2.500 solicitudes gratuitas al día incluidas con cada clave.
Un buscador de la oficina más cercana construido así necesita exactamente una solicitud por búsqueda del visitante, y la lógica de comparación vive por completo de tu lado. Los detalles sobre el formato de la solicitud están en la documentación de geocodificación directa.