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 precisam ser manipuladas com o mesmo cuidado que IDs do usuário e senhas. Leia as práticas recomendadas de segurança da API para proteger as chaves de uso não intencional, o que pode levar ao uso incorreto 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) 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 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 a 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 quando o usuário parar de mover o mapa ou de 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 documentos (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.

Como otimizar marcadores

A otimização melhora o desempenho renderizando muitos marcadores como um único elemento estático. Isso é útil quando muitos marcadores são necessários. Por padrão, a API Maps JavaScript decide se um marcador será otimizado. Quando há um grande número de marcadores, a API Maps JavaScript tenta otimizar a renderização dos marcadores. Nem todos os marcadores podem ser otimizados. Em algumas situações, a API Maps JavaScript talvez renderize marcadores sem otimização. Desative a renderização otimizada para PNGs ou GIFs animados ou quando cada marcador precisar ser renderizado como um elemento DOM separado.

Criar clusters para gerenciar a exibição de marcadores

Para ajudar no gerenciamento da exibição de marcadores que identificam 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 que serão usadas 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.
  • Crie 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 sem custo financeiro. Ela pode ser usada em aplicativos onde um único marcador é obrigatório e não é preciso personalizar o 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. Recorra à API Maps Static ou à 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 Optimize Waypoints (em inglês).

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

Otimizar implementações do Place Autocomplete

Para otimizar o custo do uso do Place Autocomplete, faça o seguinte:

  • Use máscaras de campo nos widgets do Place Autocomplete para JavaScript, Android e iOS, retornando apenas os campos de dados de lugares necessários.

  • Selecione opções de faturamento de acordo com seu caso de uso. Dependendo da sua escolha de usar ou não sessões do Autocomplete na implementação, vamos fazer a cobrança pelas SKUs Autocomplete - Per Request ou Autocomplete - Per Session.

Para mais detalhes e orientações sobre como escolher a opção certa para seu caso de uso, consulte as práticas recomendadas de otimização de custos do 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 Details 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 vão receber dados para todos os campos.

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

Reduzir custos com 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 as práticas recomendadas para endereços com geocodificação.

Como funcionam as cotas da Plataforma Google Maps

Todas as nossas APIs limitam a quantidade de chamadas que cada cliente pode fazer. Essas cotas são configuradas no intervalo de um minuto. Quando você atinge a cota de chamadas por minuto em uma API, as próximas chamadas só serão aceitas no minuto seguinte.

Somente as solicitações bem-sucedidas e aquelas que causam erros de servidor são contabilizadas na cota. As solicitações que não são autenticadas não são consideradas.

Várias APIs Maps contabilizam a cota por segundo e por minuto. Isso não garante a distribuição uniforme de chamadas ao longo de um minuto, nem impede que você atinja a cota por minuto. Entretanto, isso previne o esgotamento da cota nos primeiros dois segundos do minuto, além de proteger contra interrupções de serviço devido a um pico de uso. Para gerenciar essas diferenças de contabilização, planeje a utilização e os requisitos da cota com base no uso médio de consultas por minuto e consultas por segundo (QPM e QPS, respectivamente, nas siglas em inglês).

As APIs GMP que fazem a contabilização por segundo são a API Directions, a API Distance Matrix, a API Elevation, a API Geocoding, a API Places e a API Roads.

Estime os custos de qualquer produto da API GMP com base no volume total de solicitações.