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.
El aviso de ubicación integrado del navegador pide precisión de nivel GPS y exige un clic de permiso explícito, que muchos visitantes rechazan por reflejo. Un botón de "detectar mi ubicación" no tiene por qué pasar por ese diálogo si una ubicación aproximada es suficiente para lo que estás construyendo.
Cuando se hace clic en el botón, envía una solicitud a tu propio servidor, que ya ve la dirección IP del visitante en la conexión. Consulta esa dirección en /v1/ip y usa el resultado directamente, sin que intervenga en ningún momento un diálogo de permisos del navegador.
GET /v1/ip{
"status": "ok",
"ip": "198.51.100.23",
"version": 4,
"found": true,
"country": "Italy",
"country_code": "IT",
"region": "Lombardy",
"city": "Milan",
"postcode": "20121",
"lat": 45.4642,
"lon": 9.1900,
"timezone": "Europe/Rome",
"asn": 3456,
"org": "Example ISP"
}Llamar al endpoint sin el parámetro ip, como se muestra aquí, consulta la dirección que hizo la solicitud, que es justamente la dirección del propio visitante cuando tu backend la llama en su nombre.
La ubicación basada en IP es, como mucho, de nivel de ciudad, no de precisión GPS. Nombra la función con honestidad, algo como "detectar mi zona aproximada" en lugar de sugerir una exactitud milimétrica, para que el visitante no se sorprenda cuando el resultado sea el centro de una ciudad y no su calle exacta.
El mismo patrón de botón sirve para mostrar precios o un contexto de moneda adecuados a la región en una landing page. Como todos los precios se indican en EUR sin importar la ubicación del visitante, un botón así se usaría para rellenar de antemano una estimación de envío o un número de contacto regional, más que para cambiar la moneda mostrada, pero la solicitud de fondo es idéntica: una consulta de IP que devuelve lo suficiente para completar al instante la ciudad y el país.
Este enfoque encaja con localizadores de tiendas, contenidos regionales por defecto y estimaciones de envío, donde basta con una ciudad o una región. No sustituye a la ubicación GPS para algo como la navegación paso a paso, donde el aviso del navegador y la ubicación real del dispositivo son realmente necesarios.
No trates una red corporativa o una conexión VPN como un caso de error especial que haya que gestionar de forma distinta a cualquier otra consulta. El endpoint seguirá devolviendo un resultado, solo que centrado en la dirección registrada de esa red, que puede estar en otra ciudad o incluso en otro país distinto de donde el visitante está realmente. La respuesta correcta es la misma que darías ante cualquier estimación basada en IP: deja que el visitante la corrija, en lugar de intentar detectar el tráfico VPN y marcarlo específicamente como inusual.
Si found vuelve como false, algo que puede ocurrir con algunos rangos de direcciones, pide al visitante que escriba una ubicación manualmente en lugar de mostrar un error, ya que el sentido del botón era ahorrarle ese paso, no crear un callejón sin salida.
Cada clic es una solicitud. Un botón que los visitantes usan de vez en cuando se queda en una fracción mínima de las 2.500 solicitudes gratuitas al día incluidas con cada clave o disponibles desde una sola dirección sin clave. Los visitantes IPv4 e IPv6 se resuelven con la misma llamada, así que no hace falta una ruta de código separada para ninguna de las dos versiones.
Saltarse el diálogo de permisos cambia precisión por comodidad, y ese es el intercambio adecuado para muchas funciones de ubicación. La documentación de consulta de IPv4 describe la respuesta completa del endpoint.