Google Maps API: Cómo Usar la plataforma
La omnipresencia de los mapas digitales en nuestra vida cotidiana es innegable. Desde encontrar la cafetería más cercana hasta planificar una ruta transcontinental, dependemos de estas herramientas para navegar nuestro mundo.
En el corazón de muchas de estas experiencias se encuentra Google Maps API, una potente suite de interfaces de programación de aplicaciones que permite a los desarrolladores integrar la funcionalidad de Google Maps en sus propias aplicaciones web y móviles.
Esta plataforma ha revolucionado la forma en que las empresas interactúan con sus clientes y cómo los usuarios exploran el mundo. La flexibilidad y la riqueza de características que ofrece Google Maps API la convierten en una herramienta indispensable para cualquier desarrollador que busque añadir capacidades geoespaciales a sus proyectos.
La evolución de la cartografía digital ha sido exponencial, y Google Maps ha estado a la vanguardia de esta revolución. Lo que comenzó como un simple servicio de mapas se ha transformado en una plataforma robusta con una miríada de servicios que van más allá de la simple visualización de ubicaciones. Entender cómo aprovechar al máximo Google Maps API es crucial en el panorama tecnológico actual. Este artículo proporcionará una guía exhaustiva sobre cómo utilizar esta plataforma, explorando sus diversas facetas y ofreciendo consejos prácticos para su implementación. Desde los conceptos básicos de configuración hasta la implementación de funcionalidades avanzadas, cubriremos un amplio espectro de posibilidades que ofrece Google Maps API.
Primeros Pasos con Google Maps API: Configuración y Autenticación
Para empezar a utilizar Google Maps API, el primer paso es obtener una clave API. Esta clave es esencial para autenticar tus solicitudes y para que Google pueda rastrear el uso de tu API, lo cual es importante para la facturación y la gestión de cuotas.
El proceso de obtención de una clave API es relativamente sencillo y se realiza a través de Google Cloud Console. Una vez que tengas una cuenta de Google Cloud, puedes crear un nuevo proyecto o seleccionar uno existente y luego habilitar las APIs que planeas usar.
Es fundamental habilitar solo las APIs que necesitas para mantener tu proyecto organizado y seguro. Por ejemplo, si solo vas a mostrar un mapa básico, necesitarás habilitar la API de JavaScript de Maps. Si quieres añadir geocodificación, necesitarás la API de Geocoding.
Creación de un Proyecto y Habilitación de APIs
El primer paso es visitar Google Cloud Console (console.cloud.google.com). Si ya tienes una cuenta, inicia sesión; de lo contrario, regístrate. Una vez dentro, en la parte superior de la página, verás un selector de proyectos.
Haz clic en él y luego en «Nuevo proyecto». Asígnale un nombre significativo a tu proyecto. Una vez creado el proyecto, asegúrate de que esté seleccionado en el selector de proyectos. A continuación, en el menú de navegación izquierdo, ve a «APIs y servicios» y luego a «Biblioteca».
Aquí es donde encontrarás una lista extensa de todas las APIs disponibles de Google. Busca las APIs relacionadas con Google Maps, como «Maps JavaScript API», «Geocoding API», «Directions API», etc. Haz clic en cada una de ellas y luego en «Habilitar».
Obtención de la Clave API
Después de habilitar las APIs necesarias, regresa al menú «APIs y servicios» y selecciona «Credenciales». Haz clic en «Crear credenciales» y luego en «Clave de API». Google generará una clave de API. Es imperativo restringir esta clave de API para evitar un uso no autorizado. Puedes restringir la clave por direcciones IP, por referentes HTTP (para aplicaciones web), o por paquetes Android/iOS (para aplicaciones móviles). Esto es crucial para la seguridad y para evitar cargos inesperados. Por ejemplo, si tu aplicación es una página web, puedes especificar los dominios desde los cuales se permitirá el uso de la clave. Un ejemplo de restricción por HTTP Referrer sería *.tudominio.com/*.
Una vez que tengas la clave, deberás incluirla en tus solicitudes a Google Maps API. Para la API de JavaScript de Maps, esto generalmente se hace añadiéndola como un parámetro en la URL del script que cargas. La gestión adecuada de tu clave de Google Maps API es un aspecto crítico de la seguridad.
Fundamentos de la Implementación de Google Maps API en Aplicaciones Web
La integración de Google Maps API en aplicaciones web es un proceso bien documentado y relativamente sencillo. La API de JavaScript de Maps es el componente central para mostrar mapas interactivos en un navegador. Permite a los desarrolladores controlar el mapa, añadir marcadores, polígonos, información de ventanas y mucho más. Comprender los conceptos básicos de cómo funciona esta API es esencial para construir aplicaciones geoespaciales robustas y funcionales. La versatilidad de Google Maps API la convierte en una opción principal para muchas soluciones basadas en la ubicación.
El Script de la API de JavaScript de Maps
El primer paso para mostrar un mapa en tu página web es incluir el script de la API de JavaScript de Maps en el encabezado de tu documento HTML. Este script carga todas las bibliotecas y funciones necesarias.
<script async defer src="https://maps.googleapis.com/maps/api/js?key=TU_CLAVE_API&callback=initMap"></script>
Aquí, TU_CLAVE_API debe ser reemplazada por tu clave de API real. El parámetro callback=initMap especifica una función que se ejecutará una vez que la API haya terminado de cargarse. Esta función initMap es donde inicializarás tu mapa. Es una buena práctica deferir y asincronizar la carga del script para no bloquear la renderización de tu página.
Inicialización del Mapa
Dentro de la función initMap, crearás una nueva instancia de google.maps.Map. Necesitas un elemento HTML (típicamente un div) donde el mapa será renderizado.
<div id="map" style="height: 400px; width: 100%;"></div>
<script>
function initMap() {
const centro = { lat: -34.397, lng: 150.644 }; // Coordenadas del centro del mapa
const map = new google.maps.Map(document.getElementById("map"), {
zoom: 8, // Nivel de zoom inicial
center: centro, // Centro del mapa
});
}
</script>
En este ejemplo, el mapa se centra en Australia con un nivel de zoom de 8. Puedes ajustar zoom y center según tus necesidades. El objeto map es ahora la representación de tu mapa, y puedes interactuar con él programáticamente. La flexibilidad que ofrece Google Maps API para la personalización de mapas es inmensa.
Añadir Marcadores
Los marcadores son elementos comunes en los mapas y se utilizan para señalar ubicaciones específicas. Añadir un marcador es tan sencillo como crear una nueva instancia de google.maps.Marker y asignarla a tu mapa.
<script>
function initMap() {
const centro = { lat: -34.397, lng: 150.644 };
const map = new google.maps.Map(document.getElementById("map"), {
zoom: 8,
center: centro,
});
const marcador = new google.maps.Marker({
position: { lat: -34.397, lng: 150.644 },
map: map, // Asocia el marcador a tu mapa
title: "Mi ubicación", // Texto que aparece al pasar el ratón
});
}
</script>
Puedes personalizar los marcadores con íconos personalizados, animaciones y eventos de clic. Esto abre un mundo de posibilidades para representar datos geográficos de manera visualmente atractiva. La funcionalidad de Google Maps API para marcadores es muy completa.

Servicios Avanzados de Google Maps API: Enriqueciendo la Experiencia del Usuario
Más allá de la simple visualización de mapas y marcadores, Google Maps API ofrece una suite de servicios avanzados que permiten a los desarrolladores crear experiencias geoespaciales mucho más ricas y dinámicas. Estos servicios van desde la geocodificación hasta el cálculo de rutas y la visualización de lugares cercanos. La incorporación de estos servicios puede transformar una aplicación básica de mapas en una herramienta poderosa para la navegación, la logística y el descubrimiento. El valor añadido de Google Maps API se hace evidente al explorar estas características.
Geocodificación y Geocodificación Inversa
La API de Geocoding es fundamental para convertir direcciones legibles por humanos en coordenadas geográficas (latitud y longitud) y viceversa. Esto es increíblemente útil para aplicaciones que necesitan ubicar direcciones proporcionadas por el usuario o traducir coordenadas de GPS a direcciones postales.
lat: 19.432608, lng: -99.133209).<!– end list –>
// Ejemplo de Geocodificación
const geocoder = new google.maps.Geocoder();
geocoder.geocode({ address: "Calle Falsa 123, Ciudad de México" }, (results, status) => {
if (status === "OK") {
console.log("Coordenadas:", results[0].geometry.location.lat(), results[0].geometry.location.lng());
} else {
console.error("Geocodificación fallida:", status);
}
});
// Ejemplo de Geocodificación Inversa
const latlng = { lat: 19.432608, lng: -99.133209 };
geocoder.geocode({ location: latlng }, (results, status) => {
if (status === "OK") {
console.log("Dirección:", results[0].formatted_address);
} else {
console.error("Geocodificación inversa fallida:", status);
}
});
La precisión y la flexibilidad de la API de Geocoding la hacen indispensable para muchas aplicaciones que utilizan Google Maps API.
Direcciones y Rutas
La API de Directions permite calcular rutas entre dos o más ubicaciones, teniendo en cuenta diferentes modos de transporte (coche, bicicleta, transporte público, a pie) y optimizaciones como evitar peajes o carreteras. Esto es esencial para aplicaciones de navegación, logística y planificación de viajes.
const directionsService = new google.maps.DirectionsService();
const directionsRenderer = new google.maps.DirectionsRenderer();
directionsRenderer.setMap(map); // 'map' es tu instancia de Google Maps
const request = {
origin: "Ciudad de México",
destination: "Guadalajara, Jalisco",
travelMode: google.maps.TravelMode.DRIVING, // Opciones: DRIVING, WALKING, BICYCLING, TRANSIT
};
directionsService.route(request, (result, status) => {
if (status === "OK") {
directionsRenderer.setDirections(result); // Muestra la ruta en el mapa
} else {
console.error("Error al calcular la ruta:", status);
}
});
La API de Directions no solo proporciona la ruta, sino también información detallada sobre la duración del viaje, la distancia y los pasos de la ruta. Esto es crucial para construir aplicaciones de navegación completas y funcionales con Google Maps API.
Lugares (Places API)
La Places API es una de las características más potentes de Google Maps API, ya que permite a los desarrolladores buscar información detallada sobre millones de lugares en todo el mundo, incluyendo negocios, puntos de interés y ubicaciones geográficas. Puedes buscar lugares por nombre, tipo, ubicación o incluso autocompletar búsquedas mientras el usuario escribe.
<!– end list –>
// Ejemplo de búsqueda de lugares cercanos
const service = new google.maps.places.PlacesService(map); // 'map' es tu instancia de Google Maps
const request = {
location: centro, // Tu centro actual
radius: "5000", // Radio de búsqueda en metros
type: ["restaurant"], // Tipo de lugar a buscar
};
service.nearbySearch(request, (results, status) => {
if (status === google.maps.places.PlacesServiceStatus.OK) {
for (let i = 0; i < results.length; i++) {
createMarker(results[i]); // Función para crear un marcador por cada resultado
}
} else {
console.error("Error al buscar lugares:", status);
}
});
La Places API es invaluable para aplicaciones que requieren la integración de datos del mundo real, como directorios de negocios, aplicaciones de viaje o servicios de entrega. La riqueza de datos que proporciona esta parte de Google Maps API es impresionante. Puedes obtener más información en la documentación oficial de Places API.
Personalización y Estilización de Mapas con Google Maps API
La apariencia predeterminada de los mapas de Google es funcional, pero a menudo los desarrolladores desean personalizar el estilo del mapa para que coincida con la marca o el diseño de su aplicación. Google Maps API ofrece una amplia gama de opciones de estilización que permiten modificar la apariencia de los elementos del mapa, como carreteras, edificios, puntos de interés, cuerpos de agua y más. Esta capacidad de personalización es crucial para crear una experiencia de usuario coherente y atractiva. La flexibilidad de Google Maps API en este aspecto es una de sus mayores fortalezas.
Estilos Basados en la Nube (Cloud-based Styling)
La forma más sencilla y moderna de estilizar tus mapas es a través de los Estilos de Mapas Basados en la Nube. Esto te permite crear y gestionar estilos de mapa directamente desde Google Cloud Console, sin necesidad de escribir código JavaScript. Puedes diseñar tus mapas visualmente en la consola y luego aplicar esos estilos a tus mapas cargados con la API de JavaScript de Maps simplemente especificando un ID de mapa.
- Crea un estilo de mapa: En Google Cloud Console, ve a «Plataforma de Google Maps» -> «Gestión de mapas» -> «Estilos de mapa». Aquí puedes crear un nuevo estilo de mapa desde cero o elegir una plantilla preexistente y modificarla.
- Asigna un ID de mapa: Una vez que hayas diseñado tu estilo, se te pedirá que le asignes un «ID de mapa».
- Aplica el ID de mapa a tu código: En tu código JavaScript, cuando inicialices tu mapa, incluye el
mapIden el objeto de opciones del mapa.
<!– end list –>
<script>
function initMap() {
const map = new google.maps.Map(document.getElementById("map"), {
zoom: 8,
center: { lat: -34.397, lng: 150.644 },
mapId: "TU_ID_DE_MAPA", // Reemplaza con tu ID de mapa
});
}
</script>
La ventaja principal de los estilos basados en la nube es la capacidad de actualizar el estilo de tu mapa sin tener que volver a desplegar tu código de aplicación. Esto es increíblemente útil para pruebas A/B, cambios de marca o ajustes estacionales.
Estilización Basada en JSON
Aunque los estilos basados en la nube son la opción preferida, también puedes estilizar tus mapas programáticamente utilizando un objeto JSON que define los estilos. Esto es útil para aplicaciones que necesitan cambiar los estilos dinámicamente o para desarrolladores que prefieren gestionar todo el estilo dentro de su código.
El objeto JSON de estilo consiste en una serie de «estilistas» que apuntan a diferentes características del mapa (como carreteras, agua, parques, etc.) y aplican transformaciones visuales (color, visibilidad, peso).
const estilosPersonalizados = [
{
featureType: "poi", // Puntos de interés
elementType: "labels",
stylers: [
{ visibility: "off" } // Ocultar etiquetas de puntos de interés
]
},
{
featureType: "road", // Carreteras
elementType: "geometry",
stylers: [
{ color: "#38414e" } // Cambiar color de las carreteras
]
}
];
function initMap() {
const map = new google.maps.Map(document.getElementById("map"), {
zoom: 8,
center: { lat: -34.397, lng: 150.644 },
styles: estilosPersonalizados // Aplica los estilos JSON
});
}
La creación de un objeto JSON de estilo puede ser compleja debido a la gran cantidad de características y elementos que se pueden modificar. Sin embargo, hay herramientas y generadores de estilos disponibles en línea que pueden ayudarte a crear estos objetos. La documentación de Google Maps API ofrece una guía detallada sobre cómo estructurar estos objetos.
Mapas Temáticos y Visualización de Datos
La estilización no solo sirve para la estética; también es una herramienta poderosa para la visualización de datos. Por ejemplo, puedes utilizar diferentes colores para regiones o áreas en función de algún atributo de datos (densidad de población, ingresos, etc.). Esto permite crear mapas temáticos que comunican información de manera efectiva.
Además de los estilos, Google Maps API permite superponer capas de datos personalizadas, como:
Estas capacidades combinadas con las opciones de estilización abren un sinfín de posibilidades para presentar información geográfica de manera intuitiva y atractiva. La flexibilidad de Google Maps API para la visualización de datos es una de sus características más subestimadas.
Optimización y Gestión de Cuotas en Google Maps API
El uso eficiente de Google Maps API no se trata solo de implementar funcionalidades, sino también de gestionar los costos y el rendimiento. Google Maps Platform opera bajo un modelo de precios de «pago por uso», lo que significa que se te facturará según el número de solicitudes que realices a las APIs. Comprender cómo optimizar el uso y monitorear tus cuotas es crucial para evitar gastos inesperados y asegurar que tu aplicación se ejecute sin problemas. La administración inteligente de tu Google Maps API es esencial para el éxito a largo plazo.
Comprensión del Modelo de Precios y Cuotas
Google Maps API tiene un modelo de precios escalonado, con un nivel gratuito mensual generoso. Sin embargo, una vez que superas este umbral, se te facturará por cada solicitud. Diferentes APIs tienen diferentes costos por solicitud. Por ejemplo, la API de Geocoding puede tener un precio diferente al de la API de Directions.
Es fundamental revisar la documentación de precios de Google Maps Platform (cloud.google.com/maps-platform/pricing/) para entender los costos asociados a las APIs que estás utilizando. Puedes configurar alertas de presupuesto en Google Cloud Console para ser notificado cuando tu gasto alcance un cierto umbral.
Estrategias de Optimización para Reducir Costos
Varias estrategias pueden ayudarte a reducir tus costos de Google Maps API:
- Almacenamiento en caché (Caching): Si tu aplicación realiza repetidamente la misma solicitud (por ejemplo, geocodificando la misma dirección), considera almacenar en caché los resultados. Los Términos de Servicio de Google Maps Platform permiten el almacenamiento en caché de ciertos resultados de API durante un período limitado.
- Agrupación de solicitudes (Batching): Si necesitas realizar múltiples solicitudes similares (por ejemplo, obtener las coordenadas de varias direcciones), en lugar de hacer una solicitud por cada una, consulta si la API soporta la agrupación. La API de Geocoding, por ejemplo, no agrupa solicitudes, pero algunas otras APIs sí podrían hacerlo de manera implícita o explícita.
- Uso de la API correcta para la tarea: Asegúrate de que estás utilizando la API más eficiente para tu caso de uso. Por ejemplo, si solo necesitas comprobar si un punto está dentro de una región, la API de Geocoding inversa podría no ser la más adecuada; en su lugar, podrías utilizar la librería de geometría de Maps JavaScript API para realizar cálculos locales.
- Restricción de clave API: Como se mencionó anteriormente, restringir tu clave API a dominios específicos (para aplicaciones web) o aplicaciones móviles específicas es una medida de seguridad crucial que también ayuda a prevenir el uso no autorizado que podría generar costos inesperados.
- Monitoreo del uso: Utiliza los paneles de control de uso de Google Cloud Console para monitorear las solicitudes de tus APIs. Esto te ayudará a identificar picos inusuales o usos ineficientes.
Monitoreo del Uso y Configuración de Alertas
Google Cloud Console proporciona herramientas robustas para monitorear el uso de tu Google Maps API.
La gestión proactiva de tu cuenta de Google Maps API es tan importante como la implementación del código en sí misma. Un monitoreo constante y la aplicación de las mejores prácticas de optimización te permitirán mantener tus costos bajo control y asegurar un rendimiento óptimo de tu aplicación.
Integración de Google Maps API con Frameworks y Librerías Modernas
La mayoría de las aplicaciones web modernas se construyen utilizando frameworks de JavaScript como React, Angular o Vue, o librerías como Leaflet. Integrar Google Maps API con estas herramientas populares requiere un enfoque ligeramente diferente al de la implementación básica de JavaScript. Si bien la API fundamental sigue siendo la misma, la forma en que se maneja el DOM, el estado y los eventos cambia. Entender cómo adaptar Google Maps API a estos entornos es clave para el desarrollo eficiente.
Google Maps API con React
React, al ser una librería basada en componentes, se presta bien a la encapsulación de funcionalidades de mapas dentro de componentes reutilizables. Existen librerías de terceros que facilitan la integración, como @react-google-maps/api, que proporcionan componentes React para los elementos de Google Maps, como GoogleMap, Marker, InfoWindow, etc.
import React, { useState, useCallback } from 'react';
import { GoogleMap, Marker, useLoadScript } from '@react-google-maps/api';
const libraries = ["places"]; // Cargar la librería 'places' si la necesitas
function MapaReact() {
const { isLoaded, loadError } = useLoadScript({
googleMapsApiKey: "TU_CLAVE_API",
libraries,
});
const [map, setMap] = useState(null);
const onLoad = useCallback(function callback(map) {
const bounds = new window.google.maps.LatLngBounds();
map.fitBounds(bounds); // Ajustar el mapa al contenido
setMap(map);
}, []);
const onUnmount = useCallback(function callback(map) {
setMap(null);
}, []);
if (loadError) return "Error al cargar los mapas";
if (!isLoaded) return "Cargando mapas...";
return (
<GoogleMap
mapContainerStyle={{ width: '100%', height: '400px' }}
zoom={8}
center={{ lat: -34.397, lng: 150.644 }}
onLoad={onLoad}
onUnmount={onUnmount}
>
<Marker position={{ lat: -34.397, lng: 150.644 }} />
</GoogleMap>
);
}
export default MapaReact;
Ventajas de usar una librería de React para Google Maps API:
Puedes encontrar la librería @react-google-maps/api en GitHub.
Google Maps API con Angular
Angular, como un framework completo, también se beneficia de la integración de Google Maps API a través de módulos y componentes. La librería @angular/google-maps (parte de Angular Material) proporciona un enfoque declarativo para integrar Google Maps en tus aplicaciones Angular.
// app.module.ts
import { GoogleMapsModule } from '@angular/google-maps';
@NgModule({
imports: [
// ...
GoogleMapsModule
],
// ...
})
export class AppModule { }
// app.component.html
<google-map height="400px"
width="100%"
[zoom]="zoom"
[center]="center"
[options]="mapOptions">
<map-marker [position]="markerPosition" [options]="markerOptions"></map-marker>
</google-map>
// app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
zoom = 8;
center: google.maps.LatLngLiteral = { lat: -34.397, lng: 150.644 };
mapOptions: google.maps.MapOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoomControl: false,
scrollwheel: false,
disableDoubleClickZoom: true,
maxZoom: 15,
minZoom: 8,
};
markerPosition: google.maps.LatLngLiteral = { lat: -34.397, lng: 150.644 };
markerOptions: google.maps.MarkerOptions = { draggable: false };
}
Angular ofrece una integración muy fluida con Google Maps API, aprovechando su sistema de módulos y componentes para una organización clara del código.
Google Maps API con Vue.js
Para Vue.js, vue2-google-maps (o vue-google-maps para Vue 3) es una opción popular para integrar Google Maps API. Proporciona componentes que se asignan directamente a los objetos de Google Maps.
<template>
<GmapMap
:center="center"
:zoom="8"
map-type-id="terrain"
style="width: 100%; height: 400px"
>
<GmapMarker
:position="marker.position"
:clickable="true"
:draggable="true"
@click="center=marker.position"
/>
</GmapMap>
</template>
<script>
export default {
data() {
return {
center: { lat: -34.397, lng: 150.644 },
marker: {
position: { lat: -34.397, lng: 150.644 }
}
};
}
};
</script>
Estas librerías simplifican enormemente la interacción con Google Maps API, gestionando la inicialización, la limpieza y la reactividad. Utilizar librerías específicas para frameworks ayuda a mantener el código limpio y a seguir las mejores prácticas del framework.
Consideraciones Avanzadas y Mejores Prácticas con Google Maps API
Más allá de la implementación básica, existen consideraciones avanzadas y mejores prácticas que pueden mejorar significativamente la robustez, el rendimiento y la experiencia del usuario de tus aplicaciones que utilizan Google Maps API. Estas abarcan desde la gestión de errores hasta la accesibilidad y la optimización para dispositivos móviles. Una comprensión profunda de Google Maps API implica ir más allá de lo superficial.
Gestión de Errores y Carga Asíncrona
Cuando trabajas con Google Maps API, es fundamental manejar los errores de manera elegante. La API puede fallar por varias razones, como una clave API incorrecta, problemas de red o cuotas excedidas.
callback en el script de la API para asegurarte de que tu función initMap solo se ejecute cuando la API se haya cargado correctamente. Si hay un error, puedes añadir un onerror al script para detectarlo.status en sus callbacks. Siempre verifica este status antes de procesar los resultados. Por ejemplo, google.maps.GeocoderStatus.OK indica una solicitud exitosa.Optimización para Dispositivos Móviles
Las aplicaciones modernas deben ser responsive y funcionar bien en una variedad de dispositivos. Al utilizar Google Maps API, ten en cuenta lo siguiente para dispositivos móviles:
div) se ajuste correctamente a diferentes tamaños de pantalla utilizando CSS (por ejemplo, width: 100%; height: 100vh; o un alto fijo en px).Accesibilidad
Hacer que tus mapas sean accesibles es importante para garantizar que todos los usuarios, incluidas las personas con discapacidades, puedan interactuar con ellos.
Seguridad
La seguridad es primordial al trabajar con cualquier API.
Al seguir estas consideraciones avanzadas y mejores prácticas, puedes construir aplicaciones de Google Maps API que no solo sean funcionales, sino también robustas, rápidas, accesibles y seguras. La inversión en estas áreas es crucial para el éxito a largo plazo de cualquier proyecto que dependa de Google Maps API.
- Google Sheets: Crear y Compartir Hojas de Cálculo
- Aprende a usar Microsoft Word: las herramientas más útiles
- Los últimos días de Hitler pasaron en un lujoso hotel argentino
- La sede de CDC en Atlanta encubre que las vacunas producen autismo
- Dos miembros de la organización católica Opus Dei han sido enjuiciados































