En esta guía, se describen varias estrategias para optimizar el uso de las APIs 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 IDs 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 APIs de Google Maps
Las claves de API son el método de autenticación preferido para acceder a las APIs de Google Maps. Si bien todavía se admite el uso de los IDs 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 Usa claves 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 cuota, 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 Cómo manejar códigos de estado de retorno 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 cuota, 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 APIs 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 para cargar un mapa, establecer un destino o mostrar la información apropiada. Usar un enfoque a pedido evita las solicitudes innecesarias a las APIs, 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
Para ayudarte a administrar la visualización de los marcadores y así 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 tus 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 las APIs para administrar los costos de las APIs facturables. Si configuras límites para las solicitudes por día, puedes restringir 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 APIs facturables, así que ajusta la ecuación según sea necesario. Hay disponible un crédito mensual de USD 200 en las APIs 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 APIs 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 APIs.
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 no se deben personalizar los mapas. Se facturarán las solicitudes a la API de Maps Embed que usen los modos Directions, View o Search (consulta la tabla de precios para obtener detalles).
Cómo usar los SDKs de Maps en las aplicaciones para dispositivos móviles
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 SDKs 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 Optimiza tus 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 recursos.
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 recursos en intervalos de 5 a 15 minutos. El valor exacto depende de la velocidad a la que se desplaza un recurso. Si un recurso 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 recurso móvil.
Cómo administrar el consumo en Places
Cómo optimizar las implementaciones de Place Autocomplete
Para optimizar el costo de usar Place Autocomplete, haz lo siguiente:
Usa máscaras de campo en los widgets de Autocomplete de JavaScript, Android y iOS para mostrar solo los campos de datos de lugar que necesitas.
Las opciones de facturación que selecciones dependerán de tu caso de uso. Según si tu implementación usa sesiones de Autocomplete o no, se te cobrarán los SKUs Autocomplete, por solicitud o Autocomplete, por sesión.
Para obtener más información y orientación sobre cómo seleccionar la opción adecuada para tu caso de uso, consulta Prácticas recomendadas para la optimización de 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 Detalles del lugar y Búsqueda de lugares.
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 IDs de lugar para obtener las ubicaciones correspondientes.
Sin embargo, si tienes una dirección exacta (o muy cercana), puedes usar la API de Geocoding, en lugar de Autocomplete, para reducir los costos. Si deseas obtener más información detallada, consulta Prácticas recomendadas sobre la geocodificación de direcciones.
Cómo funcionan las cuotas de Google Maps Platform
Todas nuestras APIs tienen límites sobre la cantidad de llamadas que puede realizar cada cliente. Estas cuotas se configuran por minuto. Una vez que alcances la cuota de llamadas en una API determinada en un minuto, no se aceptarán llamadas futuras hasta el siguiente minuto.
De la cuota, solo se descuentan 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.