SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
06.04.2025

Convertendo Geocoordenadas para Nome da Cidade via API do Google Maps

Visão Geral

Para determinar o nome da sua cidade usando geolocalização, primeiro você precisa identificar as coordenadas geográficas por meio da API de Geolocalização. Depois, você pode usar os dados de latitude e longitude obtidos na API de geocodificação reversa. Isso fornecerá informações detalhadas sobre a localização que você está interessado. Vamos considerar um exemplo utilizando a função navigator.geolocation junto com a API gratuita da bigdatacloud:

navigator.geolocation.getCurrentPosition(async (position) => {
  const { latitude: lat, longitude: lon } = position.coords;  // Suas coordenadas estão definidas!
  const res = await fetch(`https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lon}&localityLanguage=pt`);
  const { city } = await res.json(); // E aqui está o nome da sua cidade!
  console.log(`Cidade em que você está: ${city}`);
}, console.log);

Lembre-se de que lidar com possíveis erros, assim como o suporte a navegadores, é uma parte importante da tarefa.

Tratamento Elegante de Erros

Erros podem ocorrer por várias razões, especialmente se o usuário negar o acesso às suas informações de geolocalização. É importante lidar com esses cenários corretamente e fornecer mensagens de erro claras para os usuários:

function errorCallback(error) {
  switch(error.code) {
    case error.PERMISSION_DENIED:
      console.error("O usuário negou o acesso às suas informações de geolocalização.");  // Respeite a escolha do usuário!
      break;
    case error.POSITION_UNAVAILABLE:
      console.error("Houve problemas ao recuperar as informações de localização.");  // Possivelmente problemas de conectividade
      break;
    case error.TIMEOUT:
      console.error("A solicitação de informações de geolocalização expirou."); // Isso pode ser usado para melhorar o serviço.
      break;
    case error.UNKNOWN_ERROR:
      console.error("Ocorreu um erro desconhecido."); // Investigue e resolva o problema.
      break;
  }
}

navigator.geolocation.getCurrentPosition(successCallback, errorCallback);

Opções de API no Mercado

Existem muitas alternativas à API do Google Maps para geocodificação reversa. Algumas delas oferecem funcionalidades únicas. Vamos examinar dois exemplos:

  1. API do Geolocation-db.com: Este serviço permite que você obtenha informações de geolocalização sem exigir consentimento do usuário. É ótimo para casos onde a anonimidade precisa ser preservada.
$.getJSON('https://geolocation-db.com/json/')
 .done(data => {
   console.log(data.city); // Recebido o nome da cidade
 });
  1. Ipinfo.io: Este serviço fornece informações de localizações baseadas no endereço IP. É particularmente eficaz se você estiver familiarizado com as classes de IP.
$.getJSON('https://ipinfo.io', data => {
  console.log(data.city);  // Agora o nome da cidade é conhecido
});

As APIs fornecidas nesses exemplos são simples de usar e são perfeitas para pequenas aplicações que não requerem uma grande quantidade de informações.

Decodificando JSON para os "Menos Informados"

Os dados da API de geocodificação reversa vêm em formato JSON. Neste "baú do tesouro", você encontrará vários componentes de um endereço: cidade, região, país, além de um endereço completo - formatted_address. A principal tarefa é saber como extrair esses dados corretamente:

// Suponha que geocoderResult seja uma resposta bem-sucedida do geocoder
let city;
$.each(geocoderResult.address_components, function(i, component) {
  if (component.types[0] === "locality") {
    city = component.long_name;
    return false;  // É isso, a cidade foi encontrada, não há necessidade de continuar a busca.
  }
});
console.log(`O nome da sua cidade: ${city}`); // E voilà, o nome da cidade está diante de nós!

Usando esse método, você pode percorrer cada componente do endereço e extrair os dados necessários relacionados à cidade.

Visualização

Isso pode ser útil para suas representações internas: aqui está como o processo de determinação da localização e obtenção do nome da cidade se parece:

🌐 — este é nosso vasto planeta, e você é um pequeno ponto "X":

            🌐
             X

Este "X" simboliza sua localização, que você vai determinar usando geolocalização.

Esse pequeno "X" se transforma em um nome específico de cidade!

Tudo o que você precisa fazer é passar as coordenadas para a API:

📍 (X) ➡️ 📘 (API) ➡️ 🏙️ (Nome da Cidade)

Assim, como verdadeiros exploradores, você transforma coordenadas geográficas simples em um nome específico de cidade.

O Custo do Conhecimento: Limitações e Preços da API

É importante lembrar das limitações no uso das APIs: muitas delas oferecem um número limitado de solicitações gratuitas e começam a cobrar uma vez que você excede o limite estabelecido. Além disso, preste atenção à capacidade de personalizar o idioma da resposta.

const languageParam = 'pt'; // Você pode especificar o idioma da resposta; neste caso, Português.

Isso é especialmente relevante ao usar a API de Geocodificação do Google Maps: sempre verifique o status da resposta google.maps.GeocoderStatus.OK para garantir que a solicitação foi bem-sucedida.

Respeito pelas Informações Pessoais: Tratamento de Dados do Usuário

Sempre obtenha consentimento explícito do usuário antes de usar suas informações de localização. Seja transparente sobre como você pretende usar essas informações e ofereça alternativas para aqueles que recusam a geolocalização.

Recursos Úteis

  1. MDN Web Docs: API de Geolocalização — um guia detalhado sobre o uso da API de geolocalização no desenvolvimento web.
  2. Especificação da API de Geolocalização - W3C — a especificação oficial para a API de geolocalização.
  3. API de Geolocalização HTML - W3Schools — material educativo sobre a implementação de geolocalização em HTML.
  4. Visão geral da API de Geolocalização | Google para Desenvolvedores — a documentação do Google sobre o uso da API de geolocalização.
  5. Visão geral - Manual do Nominatim — guia sobre a API Nominatim do OpenStreetMap para identificação geográfica gratuita.
  6. Documentação do Serviço da Web GeoNames — documentação dos serviços web do GeoNames para acessar informações geográficas extensas.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!