Pronto!

Para começar a desenvolver, acesse nossa documentação do desenvolvedor.

Ativar a Google Maps Geocoding API

Para começar, orientaremos você pelo Google Developers Console para realizar algumas atividades:

  1. Criar ou selecionar um projeto
  2. Ativar a Google Maps Geocoding API
  3. Criar chaves apropriadas
Continuar

Otimização do uso de cota ao realizar geocodificação

Geocodificação é o processo de conversão de endereços ("1600 Amphitheatre Parkway, Mountain View, CA") em coordenadas geográficas (37.423021, -122.083739) que podem ser usadas para inserir marcadores ou posicionar o mapa. As Google Maps APIs fornecem duas abordagens à geocodificação:

  • Geocodificação do lado do cliente, que é executada no navegador, geralmente me resposta a ações de usuário. A Google Maps JavaScript API fornece classes que fazem as solicitações para você. Esta abordagem é descrita na documentação da Google Maps JavaScript API.
  • Geocodificação do lado do servidor HTTP, que permite que o seu servidor consulte diretamente os códigos geográficos da Google. A Google Maps Geocoding API é um serviço Web que fornece esta funcionalidade. Geralmente, você integra este serviço com outro código que está em execução no lado do servidor. A geocodificação do lado do servidor está descrita na documentação da Google Maps Geocoding API.

Exemplos de geocodificação do lado do cliente e do lado do servidor

Eis um exemplo de geocodificação do lado do cliente que usa um endereço, geocodifica ele, move o centro do mapa para este local e adiciona um marcador de mapa lá:

geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  }
});

Veja mais exemplos na documentação da Google Maps JavaScript API.

Eis um exemplo, usando Python, para fazer uma solicitação de geocodificação do lado do servidor:

import urllib2

address="1600+Amphitheatre+Parkway,+Mountain+View,+CA"
key="my-key-here"
url="https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address, key)

response = urllib2.urlopen(url)
jsongeocode = response.read()

Isto produz um objeto JSON com o seguinte conteúdo:

{
  "status": "OK",
  "results": [ {
    "types": street_address,
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
    "address_components": [ {
      "long_name": "1600",
      "short_name": "1600",
      "types": street_number
    }, {
      "long_name": "Amphitheatre Pkwy",
      "short_name": "Amphitheatre Pkwy",
      "types": route
    }, {
      "long_name": "Mountain View",
      "short_name": "Mountain View",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "San Jose",
      "short_name": "San Jose",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Santa Clara",
      "short_name": "Santa Clara",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "California",
      "short_name": "CA",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "94043",
      "short_name": "94043",
      "types": postal_code
    } ],
    "geometry": {
      "location": {
        "lat": 37.4220323,
        "lng": -122.0845109
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 37.4188847,
          "lng": -122.0876585
        },
        "northeast": {
          "lat": 37.4251799,
          "lng": -122.0813633
        }
      }
    }
  } ]
}

O geocodificador do lado do servidor também fornece um formato XML como uma alternativa ao JSON. Veja mais exemplos na documentação da Google Maps Geocoding API e confira as bibliotecas de cliente for para Python e outros idiomas.

Considerações de cota

As cotas e os limites de taxa de geocodificação conduzem as estratégias destacadas neste documento.

Ao usar o plano padrão, todas as solicitações de geocodificação, seja do lado do cliente pelo navegador ou no lado do servidor pelo serviço Web da Google Maps Geocoding API, têm uma cota de 2.500 solicitações por dia. Todas as solicitações em um dia contam para a cota do seu projeto. Para acessar cotas diárias maiores, ative a cobrança de pagamento por uso conforme descrito no guia de limites de uso.

Além dos limites de cota diária, o serviço de geocodificação tem um limite de taxa de 50 QPS (consultas por segundo), calculado com a soma das consultas do lado do servidor e do lado do cliente.

Ao executar solicitações de geocodificação do lado do cliente em intervalos periódicos, como em um aplicativo para dispositivos móveis, suas solicitações podem retornar erros se todos os usuários estiverem fazendo solicitações ao mesmo tempo (por exemplo, todos no mesmo segundo de cada minuto) Para evitar isto, considere uma das opções:

  • Usar uma estratégia de armazenamento em cache.
  • Introduzir intervalos aleatórios às solicitações (instabilidade) Garantir que as solicitações sejam aleatórias em toda a base de usuários.
  • Se estiver desenvolvendo para Android, use um alarme de repetição inexata.
  • Se estiver desenvolvendo para Android, selecione uma estratégia de local adequada.

Para clientes do Google Maps APIs Premium Plan, as APIs oferecem cotas diárias maiores. Para saber mais sobre cotas do Google Maps APIs Premium Plan, consulte o guia de limites e taxas de uso do Premium Plan. Caso ainda esteja executando nos limites de cota usando o Google Maps APIs Premium Plan, arquive uma solicitação de suporte no Google Cloud Support Portal.

Considerações de armazenamento em cache

Os Termos de Serviço da Google Maps APIs permitem que você armazene em cache os códigos geográficos (ou seja, permite que você armazene no seu servidor por um período limitado). O armazenamento em cache pode ser útil se você tiver que procurar o mesmo endereço repetidamente. No entanto, lembre-se que os resultados da geocodificação mudam à medida que nossos dados ficam cada vez mais precisos. Portanto, mesmo que você tenha dados armazenados em cache, deve-se atualizá-los periodicamente para garantir que está usando os melhores códigos geográficos para os seus locais.

Ao usar geocodificação do lado do cliente

A resposta curta é "quase sempre". Os motivos são:

  • A solicitação e a resposta do lado do cliente fornecem uma experiência mais interativa e rápida aos usuários.
  • Uma solicitação do lado do cliente pode incluir informações que melhoram a qualidade da geocodificação: idioma, região e janela de visualização do usuário.

Em particular, a geocodificação do lado do cliente é melhor ao geocodificar endereços com base na entrada do usuário.

Há duas arquiteturas básicas para a geocodificação do lado do cliente:

  • Realize a geocodificação e a exibição inteiramente no navegador. Por exemplo, o usuário insere um endereço na sua página. O seu aplicativo geocodifica este endereço. E seguida, sua página usa o código geográfico para criar um marcador no mapa. Como alternativa, o seu aplicativo faz algumas análises simples usando o código geográfico. Nenhum dado é enviado ao servidor. Isto reduz a carga no seu servidor.
  • Realize a geocodificação no navegador e, em seguida, envie-a ao servidor. Por exemplo, o usuário insere um endereço na sua página. O seu aplicativo geocodifica este endereço no navegador. O aplicativo então envia os dados ao servidor. O servidor responde com alguns dados, como pontos de interesse próximos. Isto permite que você personalize uma resposta com base nos seus próprios dados e também armazene em cache o código geográfico, se quiser. O armazenamento em cache permite que você otimize ainda mais. Por exemplo, é possível consultar o servidor com o endereço, para ver se você já armazenou em cache recentemente um código geográfico para ele. Caso não tenha uma correspondência no cache, nenhum resultado é retornado ao navegador e permite que ele geocodifique a resposta e envie-a de volta para o servidor realizar o armazenamento em cache.

Ao usar geocodificação do lado do servidor

A geocodificação do lado do servidor é melhor usada para aplicativos que exigem que você geocodifique endereços sem a entrada de um cliente. Um exemplo comum é quando você obtém um conjunto de dados que vem de forma independente da entrada de usuário, por exemplo, se você tiver um conjunto fixo, finito e conhecido de endereços que precisam de geocodificação. A geocodificação do lado do servidor também pode ser útil como backup quando a geocodificação do lado do cliente falha.

Algumas possíveis preocupações são um aumento necessário na latência para o usuário e os resultados de geocodificação de menor qualidade em comparação ao lado do cliente devido a menos informações disponíveis na solicitação.

A arquitetura básica para um aplicativo de geocodificação do lado do servidor é da seguinte forma:

  • Um aplicativo baseado em servidor envia um endereço ao script de geocodificação do servidor.
  • O script verifica o cache para descobrir se o endereço foi geocodificado recentemente.
  • Se tiver sido, o script retorna o resultado para o aplicativo original.
  • Caso contrário, o script envia uma solicitação de geocodificação para o Google. Quando recebe um resultado, ele o armazena em cache e o retorna para o aplicativo original.

Conclusão

De forma geral, uma combinação de geocodificação do lado do cliente e servidores de armazenamento em cache atendem à maioria das suas necessidades. Se você tiver problemas com a cota, considere ativar a cobrança ou comprar uma licença do Premium Plan.

Enviar comentários sobre…

Google Maps Geocoding API
Google Maps Geocoding API
Precisa de ajuda? Acesse nossa página de suporte.