Guia de otimização

Este guia descreve várias estratégias para otimizar o uso das APIs do Google Maps em termos de segurança, desempenho e consumo.

Segurança

Ler as práticas recomendadas de segurança

As chaves de API são credenciais específicas do projeto que devem ser manipuladas com o mesmo cuidado que IDs do usuário e senhas. Leia as práticas recomendadas da chave de API para proteger as chaves de uso não intencional, o que pode levar à utilização incorreta da cota e a cobranças inesperadas na sua conta.

Usar as chaves de API para acessar as APIs Maps

As chaves de API são o método de autenticação preferencial para acessar as APIs Google Maps. Os IDs do cliente ainda são aceitos, mas as chaves de API são compatíveis com controles de segurança mais refinados e podem ser ajustadas para funcionar com endereços da Web, endereços IP e SDKs para dispositivos móveis (Android e iOS) mais específicos. Para saber como criar e proteger uma chave de API, acesse a página "Usar uma chave de API" em cada API ou SDK. Por exemplo, para a API Maps JavaScript, acesse a página em Usar uma chave de API.

Desempenho

Usar a espera exponencial para lidar com erros

Se os seus apps apresentarem erros de tentativas excessivas de chamada de API em um curto período de tempo, como erros de QPS, é recomendável usar a espera exponencial (em inglês) para permitir que as solicitações sejam processadas.

Mais especificamente, você está ajustando o ritmo das consultas. No código, adicione um período de espera de S segundos entre as consultas. Se a consulta ainda resultar em um erro de QPS, dobre o tempo e envie outra consulta. Continue ajustando o período até que a consulta retorne sem erro.

Enviar solicitações de interação do usuário sob demanda

As solicitações de APIs que incluem interação do usuário precisam ser enviadas somente sob demanda. Isso significa aguardar o usuário final realizar uma ação (como on-click) para iniciar a solicitação de API e, em seguida, usar os resultados para carregar um mapa, definir um destino ou exibir as informações apropriadas. A utilização de uma abordagem sob demanda evita solicitações desnecessárias e reduz o consumo de APIs.

Evitar exibir conteúdo de sobreposição quando um mapa estiver sendo movido

Não use o método Draw() para exibir conteúdo personalizado de sobreposição em um mapa ao mesmo tempo que um usuário pode estar movendo ele. Como o mapa é redesenhado toda vez que um usuário o move, posicionar o conteúdo de sobreposição ao mesmo tempo pode gerar lentidão ou renderização visual lenta. Só adicione ou remova o conteúdo de sobreposição de um mapa quando o usuário parar de movimentar ou alterar o zoom.

Evitar operações intensivas em métodos Draw

De maneira geral, desaconselhamos usar operações de não desenho que exijam alto desempenho em um método Draw(). Por exemplo, evite o seguinte no código do método Draw():

  • Consultas que retornam uma grande quantidade de conteúdo.
  • Muitas alterações nos dados exibidos.
  • Manipular muitos elementos do Modelo de objeto de documento (DOM, na sigla em inglês).

Essas operações podem prejudicar o desempenho e gerar lentidão ou renderização visual lenta no mapa.

Usar imagens rasterizadas para marcadores

Aplique imagens rasterizadas, como no formato .PNG ou .JPG, ao adicionar marcadores para identificar um local em um mapa. Evite usar imagens de Elementos gráficos vetoriais escaláveis (SVG), já que a renderização de imagens nesse formato pode causar lentidão quando o mapa é redesenhado.

Criar clusters para gerenciar a exibição de marcadores

Para ajudar você a gerenciar a exibição de marcadores para identificar locais em um mapa, crie um cluster usando a biblioteca Marker Clusterer (em inglês). Essa biblioteca inclui opções para os seguintes aspectos:

  • Tamanho da grade, para especificar o número de marcadores a serem agrupados em um cluster
  • Zoom máximo, para definir o nível máximo de zoom em que o cluster será exibido
  • Caminhos das imagens para utilização como ícones de marcador

Consumo

Para planejar seu orçamento e controlar os custos, faça o seguinte:

  • Defina um alerta de orçamento para rastrear o aumento de custos em relação a um determinado valor. A definição de um orçamento não limita o uso da API, apenas informa quando seus custos estão próximos do valor especificado.
  • Limite o uso diário da API para gerenciar os custos das APIs faturáveis. Ao definir limites de solicitações por dia, você pode restringir seus custos. Use uma equação simples para determinar o limite diário, dependendo de quanto você quer gastar: (custo mensal/preço unitário)/30 = limite de solicitações por dia (para uma API). Sua implementação específica pode usar várias APIs faturáveis, então ajuste a equação conforme necessário. Há um crédito de US$ 200 das APIs Google Maps disponível todos os meses, então considere isso nos cálculos.
  • Use vários projetos para isolar, priorizar e rastrear seu uso. Por exemplo, digamos que você utilize regularmente as APIs da Plataforma Google Maps nos testes. Ao criar um projeto diferente para os testes, com cotas e chaves de API próprias, é possível fazer um teste completo e evitar gastos em excesso inesperados.

Gerenciar o consumo no Maps

Usar um único mapa por página é uma boa maneira de otimizar a exibição de mapas, já que os usuários geralmente interagem com apenas um mapa por vez. Seu app pode manipular o mapa para exibir diferentes conjuntos de dados, dependendo da interação e das necessidades do cliente.

Usar imagens estáticas

As solicitações que usam imagens dinâmicas (Dynamic Maps e Dynamic Street View) custam mais do que o Static Maps e o Static Street View. Se você não prevê interação do usuário com o mapa ou o Street View (como aplicação de zoom ou movimentação), utilize as versões estáticas dessas APIs.

Miniaturas (fotos e mapas muito pequenos) são outro bom uso para o Static Maps e o Static Street View. Esses itens têm uma taxa menor, são cobrados mediante interação do usuário (no clique) e podem direcionar a uma versão dinâmica para uma experiência completa no Google Maps.

Usar a API Maps Embed

Use a API Maps Embed para adicionar um mapa com um único marcador ou um mapa dinâmico gratuitamente. Ela pode ser usada em aplicativos onde um único marcador é obrigatório, e não há necessidade de ter personalização de mapa. As solicitações da API Maps Embed que usam os modos Directions, View ou Search serão cobradas. Veja mais detalhes na tabela de preços.

Usar SDKs de mapas em aplicativos para dispositivos móveis

No caso de aplicativos para dispositivos móveis, use o SDK do Maps para Android ou o SDK do Maps para iOS ao exibir um mapa. Use a API Maps Static ou a API Maps JavaScript quando os requisitos descartam o uso de SDKs para dispositivos móveis.

Gerenciar o consumo no Routes

Limitar waypoints da API Directions

Quando possível, limite as entradas do usuário em uma consulta para um máximo de 10 waypoints. As solicitações que ultrapassarem esse limite terão uma taxa mais alta.

Usar a otimização da API Directions para conseguir o melhor trajeto

As solicitações que usam o argumento de otimização do waypoint terão uma taxa maior. Para mais informações, consulte Waypoints do Optimize.

O argumento de otimização classifica os waypoints para garantir o melhor trajeto, o que significa que viajar de A para E é uma experiência melhor quando otimizado (A-B-C-D-E), em comparação com a sequência aleatória de um trajeto não otimizado (como A-D-B-C-E).

Usar modelos de trânsito em tempo real na API Directions e na API Distance Matrix

As solicitações da API Directions e da API Distance Matrix que incluem modelos de tráfego em tempo real terão uma taxa mais alta. Esses modelos são ativados ao definir o horário de partida como now.

Se os modelos de tráfego forem omitidos de uma solicitação, os resultados serão baseados exclusivamente em fatores físicos: vias, distância e limites de velocidade.

Usar Route Traveled e Nearest Road quando os dados de GPS forem imprecisos

Os recursos da API Maps Roads, Route Traveled e Nearest Road estão incluídos no nível avançado e têm uma taxa maior. Use esses recursos quando os dados de GPS estiverem imprecisos e a API Roads puder ajudar a determinar a via correta. Os limites de velocidade, outro recurso da API Roads, estão disponíveis apenas para clientes de rastreamento de recursos.

Criar amostras de locais com limite de velocidade em intervalos de 5 a 15 minutos

Para minimizar o volume de chamadas ao serviço de limite de velocidade da API Maps Roads, faça uma amostra dos locais dos seus recursos em intervalos de 5 a 15 minutos. O valor exato depende da velocidade em que um recurso está viajando. Se um recurso estiver fixo, uma única amostra de local será suficiente. Não é necessário fazer várias chamadas.

Para minimizar a latência geral, chame o serviço de limite de velocidade depois de acumular alguns dados, em vez de chamar a API sempre que a localização de um recurso para dispositivos móveis for recebida.

Gerenciar o consumo no Places

Usar a opção Autocomplete adequada ao seu caso

Identifique a opção Autocomplete mais adequada ao seu caso, porque ambas as opções têm o mesmo custo. A diferença entre as duas opções é como os usuários finais do seu aplicativo podem utilizar as APIs.

  • Autocomplete - Per Request: ideal para casos de uso em que uma única entrada é suficiente, como um formulário de endereço de correspondência que um usuário preenche.
  • Autocomplete - Per Session: ideal quando forem necessárias várias entradas, como pesquisas de um hotel ou restaurante.

Autocomplete - Per Session: permite resultados ilimitados, mas requer a implementação de tokens para garantir que as sessões sejam válidas. Se uma sessão inválida ocorrer, as cobranças do Autocomplete - Per Request serão aplicadas a cada pressionamento de tecla. Isso poderá gerar faturamentos mais altos. Para mais informações sobre esse recurso, consulte Place Autocomplete.

Retornar dados para campos específicos em solicitações de Place Details e Place Search

Você pode personalizar as solicitações de Place Detail e Place Search para retornar dados de campos específicos usados no seu aplicativo. Esses campos estão divididos em categorias: Basic, Contact e Atmosphere. As solicitações que não especificarem nenhum campo receberão dados para todos os campos.

O faturamento para solicitações de Place Detail é baseado nos tipos e valores de dados solicitados. Solicitações que não especificarem campos serão cobradas de acordo com a taxa completa. Para mais informações, consulte Place Details e Place Search.

Reduzir custos usando a API Geocoding

Se o aplicativo processar endereços digitados por usuários, os endereços às vezes serão ambíguos (incompletos, incorretos ou com formatação errada). Para diferenciar os endereços, use o Autocomplete e, depois, os IDs de lugar para ver os locais.

No entanto, se você tiver um endereço exato (ou próximo dele), poderá reduzir custos usando o Geocoding, em vez do Autocomplete. Para mais detalhes, consulte Práticas recomendadas para endereços com Geocoding.