Introducción
En este instructivo, se muestra cómo agregar un mapa simple de Google Maps con un marcador a una página web. Está destinado a personas con conocimientos básicos o intermedios de HTML y CSS, y un poco de JavaScript.
A continuación, se muestra el mapa que crearás con este instructivo. El marcador se ubica en Uluru (también conocido como Ayers Rock) en el Parque Nacional Uluru-Kata Tjuta.
Cómo comenzar
Para crear un mapa de Google Maps con un marcador en tu página web, sigue estos tres pasos:
Necesitas un navegador web. De la lista de navegadores compatibles, elige uno conocido, como Google Chrome (recomendado), Firefox, Safari o Edge, según la plataforma que utilices.
Paso 1: Obtén una clave de API
En esta sección se explica cómo autenticar tu app en la API de Maps JavaScript con tu propia clave de API.
Sigue estos pasos para obtener una clave de API:
Ve a la consola de Google Cloud.
Crea o selecciona un proyecto.
Haz clic en Continuar para habilitar la API y los servicios relacionados.
En la página Credenciales, obtén una clave de API (y configura sus restricciones). Si ya tienes una clave de API sin restricciones o una clave con restricciones de navegador, puedes usarla.
Para evitar el robo de cuota y proteger tu clave de API, consulta Cómo usar las claves de API.
Habilita la facturación. Consulta Uso y facturación para obtener más información.
Una vez que hayas obtenido una clave de API, agrégala al siguiente fragmento haciendo clic en "YOUR_API_KEY". Copia y pega la etiqueta de la secuencia de comandos del bootloader para usarla por tu cuenta. página web.
<script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script>
Paso 2: Crea una página HTML
Este es el código para una página web HTML básica:
<!doctype html> <!-- @license Copyright 2019 Google LLC. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 --> <html> <head> <title>Add Map</title> <link rel="stylesheet" type="text/css" href="./style.css" /> <script type="module" src="./index.js"></script> </head> <body> <h3>My Google Maps Demo</h3> <!--The div element for the map --> <div id="map"></div> <!-- prettier-ignore --> <script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))}) ({key: "AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg", v: "weekly"});</script> </body> </html>
Ten en cuenta que esta es una página muy básica con un título de nivel tres (h3
) y un solo elemento div
. Puedes agregar el contenido que desees a la página web.
Comprende el código
En esta etapa del ejemplo, tenemos lo siguiente:
- Declaraste la aplicación como HTML5 mediante la declaración
!DOCTYPE html
. - Se creó un elemento div llamado "map" para sostener el mapa.
- Se cargó la API de Maps JavaScript con el cargador de arranque.
Declara tu aplicación como HTML5
Te recomendamos que declares un DOCTYPE
verdadero en tu aplicación web.
En estos ejemplos, declaramos nuestras aplicaciones como HTML5 con el
DOCTYPE
de HTML5 simple, como se muestra a continuación:
<!DOCTYPE html>
La mayoría de los navegadores actuales renderizarán el contenido que se declara con este DOCTYPE
en el "modo estándar" lo que significa que tu aplicación debería ser más
compatibles con varios navegadores. La DOCTYPE
también está diseñada para degradarse de forma elegante.
los navegadores que no lo entiendan lo ignorarán y usarán el "modo no estándar" a
mostrar su contenido.
Ten en cuenta que parte del código CSS que funciona en el modo no estándar no es válido en el modo estándar. En términos específicos, todos los tamaños basados en porcentajes deben heredar sus valores de elementos de bloque primarios y, si cualquiera de estos elementos principales no especifica un tamaño, se supondrá que tienen un tamaño de 0 x 0 píxeles. Para
por ese motivo, incluimos la siguiente declaración style
:
<style> #map { height: 100%; } html, body { height: 100%; margin: 0; padding: 0; } </style>
Cómo crear un elemento div
A fin de que el mapa aparezca en una página web, se debe reservar un lugar para él. Comúnmente,
Para ello, creamos un elemento div
con nombre y obtenemos una referencia a este
en el modelo de objetos del documento (DOM) del navegador.
El siguiente código define un área de la página para tu mapa de Google Maps.
<!--The div element for the map --> <div id="map"></div>
En esta etapa del instructivo, el elemento div
aparece como un bloque gris, porque todavía no agregaste un mapa. En el siguiente código, se describe el CSS que establece el tamaño y el color del elemento div
.
/* Set the size of the div element that contains the map */ #map { height: 400px; /* The height is 400 pixels */ width: 100%; /* The width is the width of the web page */ }
En el código anterior, el elemento style
establece el tamaño div
de tu mapa. Configura el ancho y la altura de div
en más de 0 px para que el mapa sea visible. En este caso, se configura el div
con una altura de 400 píxeles y un ancho del 100% para que se muestre a lo ancho de tu página web. Tenga en cuenta que los elementos div suelen tener su ancho
del elemento que los contiene, y los elementos div vacíos suelen tener una altura de 0. Para este
Por este motivo, siempre debes establecer una altura en div
de forma explícita.
Carga la API de Maps JavaScript
El cargador de arranque prepara la API de Maps JavaScript para la carga (no se cargarán bibliotecas hasta que se llame a importLibrary()
).
<script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script>
Consulta el Paso 3: Obtén una clave de API para ver instrucciones sobre cómo obtener tu propia clave.
Paso 3: Agrega un mapa con un marcador
En esta sección, se muestra cómo cargar la API de Maps JavaScript en tu página web y cómo escribir tu propio código JavaScript que use la API para agregar un mapa con un marcador.
TypeScript
// Initialize and add the map let map; async function initMap(): Promise<void> { // The location of Uluru const position = { lat: -25.344, lng: 131.031 }; // Request needed libraries. //@ts-ignore const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary; const { AdvancedMarkerElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary; // The map, centered at Uluru map = new Map( document.getElementById('map') as HTMLElement, { zoom: 4, center: position, mapId: 'DEMO_MAP_ID', } ); // The marker, positioned at Uluru const marker = new AdvancedMarkerElement({ map: map, position: position, title: 'Uluru' }); } initMap();
JavaScript
// Initialize and add the map let map; async function initMap() { // The location of Uluru const position = { lat: -25.344, lng: 131.031 }; // Request needed libraries. //@ts-ignore const { Map } = await google.maps.importLibrary("maps"); const { AdvancedMarkerElement } = await google.maps.importLibrary("marker"); // The map, centered at Uluru map = new Map(document.getElementById("map"), { zoom: 4, center: position, mapId: "DEMO_MAP_ID", }); // The marker, positioned at Uluru const marker = new AdvancedMarkerElement({ map: map, position: position, title: "Uluru", }); } initMap();
En el código anterior, las bibliotecas Map
y AdvancedMarkerView
se cargan cuando se llama a la función initMap()
.
Comprende el código
En esta etapa del instructivo, tenemos lo siguiente:
- Se definió una función de JavaScript que crea un mapa en el elemento div.
- Se creó un elemento
AdvancedMarkerElement
para agregar un marcador al mapa.
Agrega un mapa
En el siguiente código, se construye un nuevo objeto de mapa de Google Maps y se agregan propiedades al mapa, incluidos el centro y el nivel de zoom. Consulta la documentación para conocer otras opciones de propiedades.
TypeScript
// The location of Uluru const position = { lat: -25.344, lng: 131.031 }; // Request needed libraries. //@ts-ignore const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary; const { AdvancedMarkerElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary; // The map, centered at Uluru map = new Map( document.getElementById('map') as HTMLElement, { zoom: 4, center: position, mapId: 'DEMO_MAP_ID', } );
JavaScript
// The location of Uluru const position = { lat: -25.344, lng: 131.031 }; // Request needed libraries. //@ts-ignore const { Map } = await google.maps.importLibrary("maps"); const { AdvancedMarkerElement } = await google.maps.importLibrary("marker"); // The map, centered at Uluru map = new Map(document.getElementById("map"), { zoom: 4, center: position, mapId: "DEMO_MAP_ID", });
Hay dos opciones obligatorias para todos los mapas: center
y zoom
. En el ejemplo anterior
código, new Map()
crea un nuevo objeto de mapa de Google Maps. La propiedad center
le indica
la API dónde centrar el mapa.
La propiedad zoom
especifica el nivel de zoom del mapa. 0 es el valor de zoom más bajo y muestra todo el planeta. Define un valor de zoom más alto para acercarte en el globo con resoluciones más altas.
Para ofrecer un mapa de toda la Tierra en una sola imagen, un mapa enorme o uno pequeño con una resolución muy baja. Como resultado, las imágenes de mapas en Google Maps y la API de Maps JavaScript se dividen en "mosaicos" de mapas y los "niveles de zoom". A niveles de zoom bajos, un pequeño conjunto de mosaicos de mapas cubre una amplia área; a niveles de zoom superiores, los mosaicos tienen una resolución más alta y cubren una un área más pequeña. En la siguiente lista, se muestra el nivel aproximado de detalle que puedes en cada nivel de zoom:
- 1: Mundo
- 5: Tierra firme o continente
- 10: Ciudad
- 15: Calles
- 20: Edificios
Las tres imágenes siguientes reflejan la misma ubicación de Tokio con niveles de zoom 0. 7 y 18.
Agrega un marcador
El siguiente código coloca un marcador en el mapa. La propiedad position
define la posición del marcador.
TypeScript
// The marker, positioned at Uluru const marker = new AdvancedMarkerElement({ map: map, position: position, title: 'Uluru' });
JavaScript
// The marker, positioned at Uluru const marker = new AdvancedMarkerElement({ map: map, position: position, title: "Uluru", });
Ejemplo de código completo
Consulta el código de ejemplo completo aquí:
TypeScript
// Initialize and add the map let map; async function initMap(): Promise<void> { // The location of Uluru const position = { lat: -25.344, lng: 131.031 }; // Request needed libraries. //@ts-ignore const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary; const { AdvancedMarkerElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary; // The map, centered at Uluru map = new Map( document.getElementById('map') as HTMLElement, { zoom: 4, center: position, mapId: 'DEMO_MAP_ID', } ); // The marker, positioned at Uluru const marker = new AdvancedMarkerElement({ map: map, position: position, title: 'Uluru' }); } initMap();
JavaScript
// Initialize and add the map let map; async function initMap() { // The location of Uluru const position = { lat: -25.344, lng: 131.031 }; // Request needed libraries. //@ts-ignore const { Map } = await google.maps.importLibrary("maps"); const { AdvancedMarkerElement } = await google.maps.importLibrary("marker"); // The map, centered at Uluru map = new Map(document.getElementById("map"), { zoom: 4, center: position, mapId: "DEMO_MAP_ID", }); // The marker, positioned at Uluru const marker = new AdvancedMarkerElement({ map: map, position: position, title: "Uluru", }); } initMap();
CSS
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ #map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; }
HTML
<html> <head> <title>Add Map</title> <link rel="stylesheet" type="text/css" href="./style.css" /> <script type="module" src="./index.js"></script> </head> <body> <h3>My Google Maps Demo</h3> <!--The div element for the map --> <div id="map"></div> <!-- prettier-ignore --> <script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))}) ({key: "AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg", v: "weekly"});</script> </body> </html>
Prueba la muestra
Obtén más información sobre los marcadores:
- Cómo configurar un marcador para que sea accesible
- Marcadores con íconos gráficos
- Animaciones de marcadores
Sugerencias y solución de problemas
- Obtén más información sobre cómo obtener la latitud y la longitud. coordenadas geográficas o la conversión de una dirección en coordenadas geográficas.
- Puedes modificar determinadas opciones, como los diseños y las propiedades, para personalizar el mapa. Si deseas obtener más información sobre cómo personalizar mapas, consulta las guías de diseño y dibujos en el mapa.
- Usa la consola de Herramientas para desarrolladores en tu navegador web para probar y ejecutar tu código, leer los informes de errores y resolver los problemas.
- Usa las siguientes combinaciones de teclas para abrir la consola en Chrome:
Comando + Opción + J (en Mac) o Control + Mayúsculas + J (en Windows). Sigue los pasos que se indican a continuación para obtener las coordenadas de latitud y longitud de una ubicación en Google Maps.
- Abre Google Maps en un navegador.
- Haz clic con el botón derecho en la ubicación exacta del mapa para la que necesitas las coordenadas.
- Selecciona ¿Qué hay aquí? en el menú contextual que aparece. El mapa mostrará una tarjeta en la parte inferior de la pantalla. Busca las coordenadas de latitud y longitud en la última fila de la tarjeta.
Puedes convertir una dirección en coordenadas de latitud y longitud mediante el servicio Geocoding. Las guías para desarrolladores brindan información detallada sobre cómo comenzar a usar el servicio Geocoding.