Otimizar o uso de cota ao realizar geocodificação

A geocodificação é o processo de converter endereços ("1600 Amphitheatre Parkway, Mountain View, CA") para coordenadas geográficas (37.423021, -122.083739), que você pode usar para colocar marcadores ou posicione o mapa. As APIs da Plataforma Google Maps oferecem duas de geocodificação:

  • Geocodificação do lado do cliente, que é executado no navegador, geralmente em resposta à ação do usuário. A API Maps JavaScript oferece que fazem as solicitações para você. Essa abordagem é descrita nas API Maps JavaScript Documentação.
  • Geocodificação do lado do servidor HTTP, que permite ao servidor consultar diretamente Servidores do Google para geocódigos. A API Geocoding é a Web serviço que oferece essa funcionalidade. Normalmente, você integra esse com outro código que é executado no lado do servidor. Geocodificação do lado do servidor é descrita na API Geocoding Documentação.

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

Este é um exemplo de geocodificação do lado do cliente, que usa uma do mapa, o geocodifica, move o centro do mapa até esse local e adiciona um marcador do mapa:

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
    });
  }
});

Para mais exemplos, consulte a API Maps JavaScript Documentação.

Este é um exemplo que usa Python para fazer uma solicitação do lado do servidor Geocoding:

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 JSON. Para mais exemplos, consulte a API Geocoding documentação e os bibliotecas de cliente para Python e outros idiomas.

Considerações de cota e custo

Os custos, as cotas e os limites de taxa de geocodificação orientam as estratégias descritas neste documento.

Custo

Os limites de cota por dia (QPD, na sigla em inglês) não são mais usados para solicitações de geocodificação. Cada solicitação de geocodificação, seja do lado do cliente pelo navegador ou do lado do servidor pelo serviço da Web da API Geocoding, faturado a um preço por unidade. Para gerenciar o custo de uso, considere limitar sua cota diária.

Limites de taxas

O serviço de geocodificação tem taxa limitada a 3.000 QPM (consultas por minuto), calculada como a soma das consultas do lado do cliente e do servidor.

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 poderão retornar erros se todos os usuários fazer solicitações ao mesmo tempo (por exemplo, todas no mesmo segundo de cada minuto). Para evitar isto, considere uma das opções:

  • Introduzir intervalos aleatórios às solicitações (instabilidade) Garantir solicitações são aleatórias em toda a base de usuários.
  • Se estiver desenvolvendo para Android, use uma função alarme recorrente.
  • Se estiver desenvolvendo para Android, selecione um local adequado estratégia.

Armazenamento em cache

Consulte Políticas da API Geocoding sobre armazenamento em cache.

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 oferecem uma experiência uma experiência interativa para os usuários.
  • Uma solicitação do lado do cliente pode incluir informações que melhoram a geocodificação qualidade: 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 inserir um endereço na sua página. O seu aplicativo geocodifica este endereço. Depois, sua página usa o geocódigo para criar um marcador no mapa. Ou seu app tem algumas análises simples usando o geocódigo. 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. Seu aplicativo o geocodifica no navegador. O aplicativo então envia os dados ao servidor. O servidor responde com alguns dados, como pontos de interesse próximos. Isso permite que você personalize uma resposta com base nos seus próprios dados.

Ao usar geocodificação do lado do servidor

A geocodificação do lado do servidor é mais adequada para aplicativos que exigem a geocodificação de endereços sem a entrada de um cliente. Um exemplo comum é quando você recebe um conjunto de dados independente da entrada do usuário, por exemplo, se você tem um conjunto fixo, finito e conhecido de que precisam de geocodificação. A geocodificação do lado do servidor pode também pode ser útil como backup para quando a geocodificação do lado do cliente falhar.

Algumas preocupações possíveis são um aumento desnecessário na latência para o usuário, e os resultados de geocodificação de menor qualidade do que no lado do cliente, pois menos se esses dados estão disponíveis na solicitação.