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.
“A que distância de mim fica a sua unidade mais próxima” é uma pergunta que uma landing page pode responder diretamente, em vez de mandar o visitante para um mapa separado para ele descobrir sozinho.
Pegue o endereço ou código postal que o visitante digitar em um campo simples de formulário e faça a geocodificação.
GET /v1/forward?q=350 Fifth Avenue, New York&limit=1{
"status": "ok",
"results": [
{"formatted": "350 Fifth Avenue, New York, NY", "lat": 40.7484, "lon": -73.9857, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "es234", "components": {}}
]
}Com as coordenadas do visitante em mãos, calcule a distância em linha reta desse ponto até cada uma das suas lojas, que você mantém como uma lista fixa de coordenadas no seu próprio código, usando a fórmula de haversine padrão.
for store in stores:
store.distance_km = haversine(store.lat, store.lon, 40.7484, -73.9857)Ordene a sua lista de lojas pela distância calculada e mostre a mais próxima, ou as poucas mais próximas, junto com o valor da distância. Como tudo isso roda no servidor no envio do formulário, não há necessidade de nenhum script no lado do cliente: a página simplesmente exibe o resultado no próximo carregamento.
Em vez de informar apenas a loja mais próxima, ordenar a lista completa e mostrar as três primeiras dá ao visitante uma escolha real, algo especialmente útil quando a loja mais próxima pode ter horário ou estoque diferentes de outra um pouco mais distante que o visitante na verdade preferiria. Isso não custa nada a mais, já que a ordenação é feita com as mesmas coordenadas da mesma requisição única.
Se o endereço digitado pelo visitante voltar com uma pontuação de confiança baixa, mostre o resultado formatado para que ele confirme antes de executar o cálculo de distância, em vez de informar com segurança uma distância baseada em um palpite sobre o que ele quis dizer.
Não execute o cálculo de distância para uma consulta que foi resolvida com uma precisão muito mais grosseira do que o visitante provavelmente pretendia, como o nome isolado de uma cidade ou região que corresponde a um resultado do tipo “locality”, sem avisar o visitante antes. Uma distância calculada a partir do centro de uma cidade, e não da rua real do visitante, pode errar vários quilômetros para mais ou para menos, o suficiente para mudar qual loja parece a mais próxima. Verificar o campo de precisão antes de informar um valor de distância que soa confiável evita apresentar uma estimativa aproximada como se fosse exata.
Aumentar limit para mais de 1 na requisição de geocodificação retorna várias correspondências candidatas quando o texto digitado é realmente ambíguo, como o nome de uma rua que existe em mais de uma cidade. Mostrar essa lista curta e deixar o visitante escolher a correta antes de executar o cálculo de distância é um resultado melhor do que assumir silenciosamente o candidato que por acaso ficou em primeiro lugar.
Cada cálculo é uma requisição de geocodificação, não importa com quantas lojas você compare as coordenadas resultantes, já que a lista de lojas em si não exige nenhuma chamada adicional à API depois que você tem as coordenadas do visitante. Uma landing page com tráfego significativo ainda usa este recurso na proporção de uma requisição por cálculo de visitante, bem dentro das 2.500 requisições gratuitas por dia incluídas em cada chave.
Uma calculadora de distância como esta responde a uma pergunta específica e comum diretamente na página, em vez de empurrar o visitante para outro lugar para descobrir. Os parâmetros completos da requisição estão na documentação de geocodificação direta.