Guía de optimización

En esta guía, se describen varias estrategias para optimizar el uso de las API de Google Maps en términos de seguridad, rendimiento y consumo.

Seguridad

Cómo revisar las prácticas recomendadas de seguridad

Las claves de API son credenciales centradas en el proyecto que merecen las mismas precauciones que los ID de usuario y las contraseñas. Revisa las prácticas recomendadas sobre las claves de API para proteger tus claves del uso no deseado, que podría generar un consumo indebido de la cuota y cargos inesperados en tu cuenta.

Cómo usar las claves de API para acceder a las API de Google Maps

Las claves de API son el método de autenticación preferido para acceder a las API de Google Maps. Si bien todavía se admite el uso de los ID de cliente, las claves de API admiten controles de seguridad más detallados y se pueden ajustar para funcionar con direcciones web, direcciones IP y SDK para dispositivos móviles (iOS y Android) específicos. Si deseas obtener información sobre cómo crear y proteger una clave de API, visita la página "Cómo usar una clave de API" para cada API o SDK. Por ejemplo, para usar la API de Maps JavaScript, consulta la sección correspondiente en la página Cómo usar una clave de API.

Rendimiento

Cómo usar la retirada exponencial para manejar errores

Si tus apps experimentan errores debido a una cantidad excesiva de intentos de llamadas a una API en un período breve, como errores de QPS, considera usar la retirada exponencial para permitir que se procesen las solicitudes.

La retirada exponencial es más útil para errores con códigos en los 500. Para obtener más información, consulta Manejo de códigos de estado de retorno de HTTP.

Específicamente, ajusta el ritmo de tus consultas. En el código, agrega un período de espera de S segundos entre las consultas. Si la consulta aún genera un error de QPS, duplica ese período y, luego, envía otra consulta. Sigue ajustándolo hasta que la consulta se muestre sin errores.

Cómo enviar solicitudes de interacción del usuario a pedido

Las solicitudes a las API que incluyen interacción con el usuario deben enviarse solo a pedido. Esto significa que se debe esperar a que el usuario final realice una acción (como on-click) para iniciar la solicitud a la API y, luego, se deben utilizar los resultados a fin de cargar un mapa, establecer un destino o mostrar la información apropiada. Usar un enfoque a pedido evita las solicitudes innecesarias a las API, lo que reduce el consumo de API.

Cómo evitar mostrar contenido superpuesto cuando se mueve un mapa

Evita usar Draw() para mostrar contenido superpuesto personalizado en un mapa mientras un usuario podría estar moviéndolo. Debido a que el mapa se vuelve a dibujar cada vez que un usuario lo mueve, colocarle contenido superpuesto al mismo tiempo puede generar retrasos o saltos visuales. Solo agrega o quita contenido de este tipo cuando el usuario deje de desplazarse lateralmente o ya no use el zoom en el mapa.

Cómo evitar operaciones intensivas en métodos Draw

Como regla general, se recomienda evitar las operaciones de rendimiento intensivo que no sean de dibujo en un método Draw(). Por ejemplo, evita lo siguiente en el código del método Draw():

  • Consultas que muestran una gran cantidad de contenido
  • Muchos cambios en los datos que se muestran
  • Manipulación de muchos elementos del Modelo de objetos del documento (DOM)

Estas operaciones pueden ralentizar el rendimiento y generar retrasos o saltos visuales cuando se renderiza el mapa.

Cómo usar imágenes de trama para marcadores

Usa imágenes de trama, como imágenes en formato .PNG o .JPG, cuando agregues marcadores para identificar una ubicación en un mapa. Evita usar imágenes de Gráficos vectoriales escalables (SVG), ya que la renderización de imágenes SVG puede generar demoras cuando se vuelve a dibujar el mapa.

Cómo optimizar los marcadores

La optimización mejora el rendimiento mediante la renderización de muchos marcadores como un solo elemento estático. Esto resulta útil en los casos en los que se requiere una gran cantidad de marcadores. De manera predeterminada, la API de Maps JavaScript decide si se optimizará o no un marcador. Si hay una gran cantidad de marcadores, la API de Maps JavaScript intentará renderizarlos con optimización. No todos los marcadores se pueden optimizar. En algunos casos, es posible que la API de Maps JavaScript necesite renderizar Marcadores sin optimización. Inhabilita la renderización optimizada para PNG o GIF animados, o cuando cada marcador se deba renderizar como un elemento separado del DOM.

Cómo crear clústeres para administrar la visualización de marcadores

A fin de ayudarte a administrar la visualización de los marcadores para identificar ubicaciones en un mapa, crea un clúster de marcadores mediante la biblioteca Marker Clusterer. Esta biblioteca incluye opciones para lo siguiente:

  • Tamaño de cuadrícula, que te permite especificar la cantidad de marcadores que se agruparán en un clúster
  • Zoom máximo, que te permite especificar el nivel de zoom máximo en el que se muestra el clúster
  • Rutas de acceso para las imágenes gráficas que se utilizarán como íconos de marcador

Consumo

Para planificar tu presupuesto y controlar los costos, puedes hacer lo siguiente:

  • Configura una alerta de presupuesto para hacer un seguimiento de cómo aumentan los costos en relación con un importe determinado. Establecer un presupuesto no limita el uso de la API; solo te alerta cuando los costos se acercan al importe especificado.
  • Limita el uso diario de la API para administrar los costos de las API facturables. Si configuras límites para las solicitudes por día, puedes limitar los costos. Usa una ecuación simple para determinar tu límite diario, en función de cuánto desees invertir: (costo mensual/precio por solicitud)/30 = límite de solicitudes por día (para una API). Tu implementación específica puede usar varias API facturables, así que ajusta la ecuación según sea necesario. Hay disponible un crédito mensual de USD 200 en las API de Google Maps. Por lo tanto, considera dicho importe en tus cálculos.
  • Usa varios proyectos para aislar, priorizar y realizar un seguimiento del uso. Supongamos, por ejemplo, que sueles usar las API de Google Maps Platform en tus pruebas. Si creas un proyecto por separado para tus pruebas, con sus propias cuotas y claves de API, puedes realizar pruebas exhaustivas mientras te proteges de costos inesperados.

Cómo administrar el consumo en Maps

El uso de un solo mapa por página es una buena manera de optimizar la visualización de los mapas, ya que los usuarios generalmente interactúan con un mapa a la vez. Tu app puede manipular el mapa para mostrar diferentes conjuntos de datos, según las necesidades y la interacción de los clientes.

Cómo usar imágenes estáticas

Las solicitudes que usan imágenes dinámicas (Dynamic Maps y Dynamic Street View) cuestan más que aquellas que se realizan a Static Maps y Static Street View. Si no puedes prever la interacción del usuario con Maps o Street View (uso del zoom o desplazamiento lateral), usa las versiones estáticas de estas API.

Las miniaturas, es decir, mapas y fotos muy pequeños, son otra buena opción para Static Maps y Static Street View. Estos elementos, que se facturan con una tarifa inferior y tras la interacción con el usuario (cuando se hace clic), pueden generar una versión dinámica para una experiencia completa de Google Maps.

Cómo usar la API de Maps Embed

Puedes usar la API de Maps Embed para agregar un mapa con un solo marcador, o bien un mapa dinámico, sin costo. Utiliza la API de Maps Embed para las aplicaciones en las que se requiere un solo marcador y que no haya personalización de mapas. Se facturarán las solicitudes a la API de Maps Embed que usen el modo Directions, el modo View o el modo Search (consulta la tabla de precios para obtener detalles).

Cómo usar el SDK de mapas para dispositivos móviles en las aplicaciones de este tipo

En las aplicaciones para dispositivos móviles, usa el SDK de Maps para Android o el SDK de Maps para iOS cuando muestres un mapa. Usa la API de Maps Static o la de Maps JavaScript cuando los requisitos rechacen el uso de los SDK para dispositivos móviles.

Cómo administrar el consumo en Routes

Cómo limitar los puntos de referencia de la API de Directions

Cuando sea posible, limita a un máximo de 10 puntos de referencia las entradas de los usuarios en una consulta. Las solicitudes que contienen más de 10 puntos de referencia se facturan a una tarifa más alta.

Cómo usar la optimización de la API de Directions para lograr el mejor enrutamiento

Las solicitudes que usan el argumento de optimización de puntos de referencia se facturan a una tarifa más alta. Para obtener más información, consulta Cómo optimizar los puntos de referencia.

El argumento de optimización ordena los puntos de referencia para garantizar un enrutamiento óptimo, lo que significa que el viaje de A a E representa una mejor experiencia si está optimizado (A-B-C-D-E), en comparación con la secuencia aleatoria de una ruta no optimizada (como A-D-B-C-E).

Cómo usar modelos de tráfico en tiempo real en la API de Directions y en la de Distance Matrix

Las solicitudes a la API de Directions y de Distance Matrix que incluyen modelos de tráfico en tiempo real se facturan a una tarifa más alta. Para habilitar los modelos de tráfico en tiempo real, establece la hora de salida en now.

Si se omiten estos modelos en una solicitud, los resultados se basarán únicamente en factores físicos: rutas, distancia y límites de velocidad.

Cómo usar Route Traveled y Nearest Road cuando los datos de GPS sean poco precisos

Las funciones de la API de Maps Roads, Route Traveled y Nearest Road, se incluyen en el nivel avanzado y se facturan a una tarifa más alta. Usa estas funciones si los datos de GPS son poco precisos y la API de Roads puede ayudar a determinar la ruta correcta. Speed Limits, otra función de la API de Roads, está disponible solo para los clientes que realizan un seguimiento de sus elementos.

Cómo tomar muestras de las ubicaciones en intervalos de 5 a 15 minutos con el servicio Speed Limit

Para minimizar el volumen de llamadas al servicio Speed Limit de la API de Maps Roads, toma muestras de las ubicaciones de tus elementos en intervalos de 5 a 15 minutos. El valor exacto depende de la velocidad a la que se desplaza un elemento. Si un elemento es fijo, basta con tomar una sola muestra de la ubicación. No es necesario que realices varias llamadas.

Para minimizar la latencia general, llama al servicio Speed Limit una vez que hayas acumulado algunos datos, en lugar de llamar a la API cada vez que se reciba la ubicación de un elemento móvil.

Cómo administrar el consumo en Places

Cómo optimizar las implementaciones de Place Autocomplete

Para optimizar el costo de utilizar Place Autocomplete, haz lo siguiente:

  • Usa máscaras de campo en los widgets de autocompletado de JavaScript, Android e iOS para mostrar solo los campos de datos de lugar que necesitas.

  • Las opciones de facturación disponibles dependen de tu caso de uso. Según si tu implementación usa sesiones de Autocomplete o no, se te cobrarán los SKU Autocomplete, por solicitud o Autocomplete, por sesión.

Si deseas más información y orientación para seleccionar la opción correcta según tu caso de uso, consulta las Prácticas recomendadas para optimizar los costos de Place Autocomplete.

Cómo mostrar datos de campos específicos en las solicitudes de Place Details y Place Search

Puedes personalizar las solicitudes de Place Details y Place Search para mostrar datos de campos específicos que se utilizan en tu aplicación. Estos campos se dividen en categorías: Basic, Contact y Atmosphere. Las solicitudes que no especifiquen ningún campo recibirán datos de todos los campos.

La facturación de las solicitudes de Place Details se basa en los tipos y las cantidades de datos que se solicitan. Las solicitudes que no especifiquen ningún campo se facturarán a la tarifa completa. Para obtener más información, consulta Place Details y Place Search.

Cómo usar la API de Geocoding para reducir costos

Si tu aplicación permite que el usuario ingrese direcciones, estas, a veces, pueden ser ambiguas (pueden estar incompletas, presentar errores ortográficos o no tener el formato adecuado). Desambigua las direcciones con Autocomplete y, luego, usa los ID de lugar para obtener las ubicaciones correspondientes.

Sin embargo, si tienes una dirección exacta (o casi igual), puedes usar la API de Geocoding, en lugar de Autocomplete, para reducir los costos. Si deseas obtener más detalles, consulta Prácticas recomendadas sobre la geocodificación de direcciones.

Cómo funcionan las cuotas de Google Maps Platform

Todas nuestras API tienen límites sobre la cantidad de llamadas que cada cliente puede hacer. Estas cuotas se configuran por minuto. Una vez que alcances la cuota de llamadas a una API determinada en un minuto, no se aceptarán más llamadas hasta el minuto siguiente.

De la cuota, se descuentan solo las solicitudes exitosas y las que causan errores de servidor. Las solicitudes en las que falla la autenticación no se descuentan de la cuota.

Varias API de Google Maps aplican la cuota de manera forzosa por segundo, además de hacerlo por minuto. Esta aplicación por segundo no garantiza un uso uniforme durante todo el minuto ni impedirá que alcances tu cuota de uso durante ese minuto. Sin embargo, evita que consumas toda la cuota en los primeros segundos de un minuto y te protege contra interrupciones del servicio en caso de que ocurran incrementos de uso repentinos. A fin de abordar estas diferencias en el tiempo de aplicación y planificar el uso de tu cuota según tus requisitos, calcula tu promedio de uso de QPM en función de las QPS asignadas.

Las API de GMP que tienen esta aplicación por segundo son las de Directions, Distance Matrix, Elevation, Geocoding, Places y Roads.

Estima los costos de cualquier producto de la API de GMP, en función de tu volumen total de solicitudes.