Guias

Crie um localizador simples de "escritório mais próximo"

Uma empresa com poucos escritórios não precisa de nada elaborado para responder "qual escritório fica mais perto de mim", apenas uma requisição de geocodificação e uma breve comparação com uma lista que raramente muda.

Geocodificando a entrada

Seja um endereço ou um código postal digitado pelo visitante, geocodifique-o para obter as 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"}}
  ]
}

Comparando com a sua lista de escritórios

Mantenha as coordenadas dos seus escritórios como uma pequena lista fixa no seu próprio código ou configuração, já que isso raramente muda e não precisa de uma consulta própria a 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}
]

Calcule a distância das coordenadas do visitante até cada escritório usando a fórmula de haversine padrão, depois ordene por distância e retorne a correspondência mais próxima.

Um segundo exemplo: adicionando um campo com sugestões enquanto se digita

Em vez de uma caixa de texto simples, apoiar o campo de localização no /v1/autocomplete permite que o visitante escolha entre lugares sugeridos enquanto digita, reduzindo a chance de um erro de digitação produzir um resultado de geocodificação inesperado. Depois que uma sugestão é selecionada, resolver o place_id ou o texto dela pelo mesmo fluxo de geocodificação direta alimenta diretamente a mesma comparação de distância já descrita.

Lidando com uma correspondência no nível da cidade

Observe que a precisão no exemplo acima é "city" em vez de "house", já que o visitante digitou apenas o nome de uma cidade. Isso é aceitável para um localizador de escritórios, em que o objetivo é escolher o escritório mais próximo entre poucas opções, não identificar um prédio exato. Uma precisão mais grosseira aqui não precisa de tratamento especial, como poderia precisar no caso de um endereço de entrega.

Um erro comum a evitar

Não se esqueça de atualizar a lista fixa de escritórios no seu próprio código quando um escritório físico abrir, fechar ou mudar de endereço. Como a lista fica na sua própria configuração e não na API, é fácil ela ficar desatualizada sem ninguém perceber, direcionando os visitantes em silêncio para um local fechado ou deixando um novo de fora de todas as comparações. Trate essa lista como parte da sua revisão regular de conteúdo, não como uma etapa de configuração feita uma única vez.

Um caso extremo: um nome de lugar ambíguo

Um nome de lugar curto pode, às vezes, corresponder a mais de um local real, como um nome compartilhado entre um país e uma região sem relação em outro lugar. Passar o parâmetro countries para restringir as correspondências candidatas aos países onde você realmente tem escritórios evita que esse tipo de ambiguidade seja resolvido para o lado errado do mundo.

Exibindo mais do que apenas o mais próximo

Mostrar os dois ou três escritórios mais próximos, em vez de apenas o mais próximo de todos, dá a um visitante perto de uma divisa regional a chance de escolher aquele que realmente lhe convém, como um com um idioma ou fuso horário mais adequado, mesmo que fique um pouco mais longe em distância.

Quanto custa

Cada busca é uma requisição de geocodificação. A comparação com a sua lista de escritórios acontece inteiramente no seu próprio código depois e não acrescenta nada à sua contagem de requisições. Uma página como esta, mesmo com tráfego constante, fica bem dentro das 2.500 requisições gratuitas por dia incluídas em toda chave.

Um localizador de escritório mais próximo construído dessa forma precisa de exatamente uma requisição por busca do visitante, com a lógica de comparação ficando inteiramente do seu lado. Os detalhes sobre o formato da requisição estão na documentação de geocodificação direta.