Monitore o uso da sua chave antes de atingir um limite
Acompanhar seus cabeçalhos de cota ao longo do caminho mostra quando um limite está se aproximando, bem antes de uma requisição ser realmente rejeitada.
O pedido de localização nativo do navegador exige precisão de nível GPS e um clique explícito de permissão, que muitos visitantes recusam por reflexo. Um botão “detectar minha localização” não precisa passar por essa caixa de diálogo se uma localização aproximada for suficiente para o que você está construindo.
Quando o botão for clicado, envie uma requisição ao seu próprio servidor, que já vê o endereço IP do visitante na conexão. Consulte esse endereço em /v1/ip e use o resultado diretamente, sem nenhuma caixa de diálogo de permissão do navegador em momento algum.
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"
}Chamar o endpoint sem o parâmetro ip, como mostrado aqui, consulta o endereço que fez a requisição, que é exatamente o endereço do próprio visitante quando o seu backend faz a chamada em nome dele.
A localização baseada em IP tem, no máximo, precisão de cidade, não de GPS. Nomeie o recurso com honestidade, algo como “detectar minha região aproximada” em vez de sugerir precisão absoluta, para que o visitante não se surpreenda quando o resultado for o centro de uma cidade e não a rua exata dele.
O mesmo padrão de botão funciona para mostrar preços ou contexto de moeda adequados à região em uma landing page. Como todo preço é cotado em EUR independentemente da localização do visitante, um botão como este serviria para preencher previamente uma estimativa de frete ou um número de contato regional, e não para mudar a moeda exibida, mas a requisição por trás é idêntica: uma consulta de IP que retorna o suficiente para preencher cidade e país imediatamente.
Essa abordagem se encaixa em localizadores de lojas, conteúdo regional padrão e estimativas de frete, em que uma cidade ou região é tudo o que se precisa. Ela não substitui a localização por GPS em algo como navegação curva a curva, em que o pedido do navegador e a localização real do dispositivo são realmente necessários.
Não trate uma rede corporativa ou uma conexão VPN como um caso de erro especial que precisa ser tratado de forma diferente de qualquer outra consulta. O endpoint ainda retorna um resultado, só que centrado no endereço registrado dessa rede, que pode ficar em outra cidade ou até em outro país em relação ao lugar onde o visitante realmente está. A resposta certa é a mesma que você daria para qualquer estimativa baseada em IP: deixe o visitante corrigi-la, em vez de tentar detectar e sinalizar especificamente o tráfego de VPN como incomum.
Se found vier como false, o que pode acontecer para algumas faixas de endereços, peça ao visitante que digite uma localização manualmente em vez de mostrar um erro, já que o objetivo do botão era justamente poupar esse passo, não criar um beco sem saída.
Cada clique é uma requisição. Um botão usado ocasionalmente pelos visitantes fica em uma fração mínima das 2.500 requisições gratuitas por dia incluídas em cada chave ou disponíveis a partir de um único endereço sem chave. Visitantes IPv4 e IPv6 são resolvidos pela mesma chamada, então não é preciso um caminho de código separado para nenhuma das versões.
Dispensar a caixa de diálogo de permissão troca precisão por conveniência, que é a troca certa para muitos recursos de localização. A documentação da consulta IPv4 descreve a resposta completa do endpoint.