Este guia descreve várias estratégias para otimizar o uso das APIs Google Maps no que se refere a segurança, performance 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 suas chaves do uso não intencional, o que poderia levar à utilização incorreta da cota e cobranças inesperadas na 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, visite a página Usar uma chave de API.
Performance
Usar a espera exponencial para lidar com erros
Se os seus apps apresentarem erros relacionados a tentativas excessivas de chamada de API em um curto período, como erros de cota, é recomendável usar a espera exponencial para permitir que as solicitações sejam processadas.
A espera exponencial é mais útil para erros nos 500s. Para mais informações, consulte Como lidar com códigos de status de retorno HTTP.
Ajuste o ritmo das suas 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 cota, dobre o tempo de espera 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 para APIs que incluem interação do usuário devem 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 mostrar as informações apropriadas. A utilização de uma abordagem sob demanda evita solicitações desnecessárias e reduz o consumo das APIs.
Evitar mostrar conteúdo de sobreposição quando um mapa estiver sendo movido
Não use o método Draw()
para mostrar conteúdo personalizado de sobreposição em um mapa ao mesmo tempo que um usuário move esse mapa. Como ele é redesenhado a cada movimento, posicionar 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 alterar o zoom.
Evitar operações intensivas em métodos Draw
De maneira geral, desaconselhamos usar operações que não sejam de desenho e que exijam alta performance 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 mudanças nos dados mostrados.
- Manipular muitos elementos do Modelo de objeto de documentos (DOM, na sigla em inglês).
Essas operações podem prejudicar a performance e gerar lentidão ou renderização visual lenta no mapa.
Usar imagens de varredura para marcadores
Aplique imagens de varredura, como no formato .PNG ou .JPG, ao adicionar marcadores para identificar um local no mapa. Evite usar imagens de Elementos gráficos vetoriais escaláveis (SVG, na sigla em inglês), já que a renderização de imagens nesse formato pode causar lentidão quando o mapa é redesenhado.
Otimizar marcadores
A otimização melhora a performance, 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 vai 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 pode ter que renderizar 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 visualização de marcadores
Para ajudar no gerenciamento da visualização de marcadores que identificam locais no mapa, crie um cluster usando a biblioteca Marker Clusterer (em inglês). Essa biblioteca tem as seguintes opções:
- 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 vai ser mostrado.
- Caminhos das imagens: para serem usados 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 visualização de mapas, já que os usuários geralmente interagem com apenas um mapa por vez. Seu app pode manipular o mapa para mostrar 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), use as versões estáticas dessas APIs.
Miniaturas (fotos e mapas muito pequenos) são outro exemplo de bom uso para o Static Maps e 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 em que 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. Confira 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 têm uma taxa de cobrança 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 têm uma taxa de cobrança mais alta. Para mais informações, consulte Optimize Waypoints (em inglês).
O argumento de otimização ordena 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 API Distance Matrix
As solicitações da API Directions e API Distance Matrix que incluem modelos de tráfego em tempo real têm uma taxa de cobrança 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 vão usar como base exclusivamente os fatores físicos: vias, distância e limites de velocidade.
Usar Route Traveled e Nearest Road quando os dados de GPS estiverem 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 de cobrança 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 está fixo, uma única amostra de local é suficiente. Não é necessário fazer várias chamadas.
Para diminuir 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:
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 de a sua implementação usar ou não sessões do Autocomplete, 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 vão ser ambíguos (incompletos, incorretos ou com formatação errada). Para diferenciar os endereços, use o Autocomplete e, depois, os IDs de lugar para conferir os locais.
No entanto, se você tiver um endereço exato (ou próximo), vai 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 em uma determinada API em um minuto, 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 entram na contagem.
Estime os custos de qualquer produto da API GMP com base no volume total de solicitações.