Guía de optimización

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 solucionar 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 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 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 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. Los modelos de tráfico en tiempo real se habilitan si estableces 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 de seguimiento de 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 para dispositivos móviles.

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:

  • usar máscaras de campo en los widgets de Autocomplete de JavaScript, Android o iOS para mostrar solo los campos de datos de lugar que necesitas

  • ciertas opciones de facturación depende de tu caso de uso. Dependiendo de si tu implementación usa sesiones de Autcomplete o no, se te cobrarán los SKU Autocomplete, por solicitud o Autocomplete, por sesión.

Para obtener más información y orientación sobre cómo seleccionar la opción correcta para tu caso de uso, consulta Prácticas recomendadas de 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 usan 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 la cantidad de datos solicitados. 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). Usa la función de autocompletar para desambiguar las direcciones y, luego, usa los IDs de lugar para obtener las ubicaciones.

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 en cuanto a la cantidad de llamadas que puede hacer cada cliente. Estas cuotas se configuran por minuto. Una vez que alcanzaste la cuota de llamadas en una API determinada durante un minuto, las llamadas futuras no se aceptarán hasta el siguiente minuto.

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 APIs de Google Maps se aplican por segundo, además de la aplicación forzosa por la cuota por minuto. Esta aplicación forzosa por segundo no garantiza el uso uniforme durante todo el minuto ni evitará que alcances tu cuota de uso durante ese minuto. Evita que agotes la cuota en los primeros dos segundos de un minuto y te protege de las interrupciones del servicio en caso de un aumento repentino de uso. 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 APIs de GMP que tienen esta aplicación por segundo son la API de Directions, la API de Distance Matrix, la API de Elevation, la API de Geocoding, la API de Places y la API de Roads.

Calcula tus costos para cualquier producto de la API de GMP, según el volumen total de solicitudes.