1. Antes de comenzar
En este codelab, aprenderás todo lo que necesitas para comenzar a usar Google Maps Platform para la Web. Aprenderás todos los conceptos básicos, desde cómo hacer la configuración hasta cómo cargar la API de Maps JavaScript, cómo mostrar tu primer mapa, cómo trabajar con marcadores y agruparlos en clústeres, cómo dibujar sobre el mapa y cómo controlar la interacción con el usuario.
Qué crearás
En este codelab, crearás una aplicación web simple que hace lo siguiente:
- Carga la API de Maps JavaScript.
- Muestra un mapa centrado en Sídney, Australia.
- Muestra marcadores personalizados de atracciones populares en Sídney.
- Implementa el agrupamiento de marcadores en clústeres.
- Habilita la interacción del usuario a fin de que, cuando se hace clic en un marcador, se dibuje un círculo sobre el mapa y este vuelva a centrarse.
Qué aprenderás
- Cómo comenzar a utilizar Google Maps Platform
- Cómo cargar la API de Maps JavaScript de forma dinámica mediante código JavaScript
- Cómo cargar un mapa
- Cómo usar marcadores, marcadores personalizados y agrupamiento de marcadores en clústeres
- Cómo trabajar con el sistema de eventos de la API de Maps JavaScript para permitir la interacción del usuario
- Cómo controlar el mapa de forma dinámica
- Cómo dibujar sobre el mapa
2. Requisitos previos
Deberás familiarizarte con los siguientes elementos para completar este codelab. Si ya sabes cómo trabajar con Google Maps Platform, pasa directamente al codelab.
Productos obligatorios de Google Maps Platform
En este codelab, usarás los siguientes productos de Google Maps Platform:
- API de Maps JavaScript
- Biblioteca MarkerClustererPlus de código abierto para agrupamiento de marcadores en clústeres
Otros requisitos de este codelab
Para completar este codelab, necesitarás las siguientes cuentas, servicios y herramientas:
- Una cuenta de Google Cloud Platform con facturación habilitada
- Una clave de API de Google Maps Platform con la API de Maps JavaScript habilitada
- Conocimientos básicos de JavaScript, HTML y CSS
- Node.js instalado en tu computadora
- El editor de texto o IDE que prefieras
Cómo comenzar a utilizar Google Maps Platform
Si nunca usaste Google Maps Platform, sigue la guía Cómo comenzar a utilizar Google Maps Platform o mira la lista de reproducción Cómo comenzar a utilizar Google Maps Platform para completar los siguientes pasos:
- Crear una cuenta de facturación
- Crear un proyecto
- Habilitar las API y los SDK de Google Maps Platform (enumerados en la sección anterior)
- Generar una clave de API
3. Prepárate
Configura Google Maps Platform
Si todavía no tienes una cuenta de Google Cloud Platform y un proyecto con la facturación habilitada, consulta la guía Cómo comenzar a utilizar Google Maps Platform para crear una cuenta de facturación y un proyecto.
- En Cloud Console, haz clic en el menú desplegable del proyecto y selecciona el proyecto que deseas usar para este codelab.
- Habilita las API y los SDK de Google Maps Platform necesarios para este codelab en Google Cloud Marketplace. Para hacerlo, sigue los pasos que se indican en este video o esta documentación.
- Genera una clave de API en la página Credenciales de Cloud Console. Puedes seguir los pasos que se indican en este video o esta documentación. Todas las solicitudes a Google Maps Platform requieren una clave de API.
Configuración de Node.js
Si todavía no lo tienes, ve a https://nodejs.org/ para descargar y, luego, instalar el entorno de ejecución de Node.js en tu computadora.
Node.js incluye el administrador de paquetes npm, que necesitas para instalar las dependencias que requiere este codelab.
Configuración de la plantilla de proyecto inicial
Antes de comenzar este codelab, haz lo siguiente para descargar la plantilla de proyecto inicial y el código completo de la solución:
- Descarga o bifurca el repositorio de GitHub correspondiente a este codelab, que puedes encontrar en https://github.com/googlecodelabs/maps-platform-101js.
El proyecto inicial se encuentra en el directorio /starter
y tiene la estructura de archivos básica que utilizarás para completar el codelab. Todo lo que necesitas para este proyecto se encuentra en el directorio /starter/src
. 2. Una vez que hayas descargado el proyecto inicial, ejecuta npm install
en el directorio /starter
. Con ese comando, instalas todas las dependencias necesarias enumeradas en el archivo package.json
. 3. Una vez instaladas las dependencias, ejecuta npm start
en el directorio.
El proyecto inicial se configuró para que uses webpack-dev-server, que compila y ejecuta el código que escribes de manera local. webpack-dev-server también vuelve a cargar tu app automáticamente en el navegador cada vez que realices cambios en el código.
Si deseas ver el código completo de la solución en ejecución, puedes completar los pasos de configuración detallados arriba en el directorio /solution
.
4. Carga la API de Maps JavaScript
Antes de comenzar, asegúrate de seguir los pasos indicados en Prepárate. ¿Terminaste? Bien, ahora ya puedes crear tu primera aplicación web utilizando Google Maps Platform.
El uso de Google Maps Platform para la Web se basa en la API de Maps JavaScript. Esta API proporciona una interfaz de JavaScript para usar todas las funciones de Google Maps Platform, incluidos el mapa, los marcadores, las herramientas de dibujo y otros servicios de Google Maps Platform, como Places.
Si tienes experiencia previa con esta API, es posible que, para cargarla, acostumbres insertar una etiqueta script
en un archivo HTML de la siguiente manera:
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
Esta sigue siendo una forma perfectamente válida para cargar la API, pero en JavaScript moderno, las dependencias suelen incluirse de forma dinámica mediante el código. Para lograr el equivalente de esta etiqueta script
en el código, usa el módulo @googlemaps/js-api-loader. El cargador de API de JS ya está incluido en las dependencias del archivo package.json
del proyecto, de modo que se instaló cuando ejecutaste npm install
anteriormente.
Para usar el cargador de API de JS, haz lo siguiente:
- Abre
/src/app.js
. Este archivo es donde realizarás todo el trabajo de este codelab. - Importa la clase
Loader
desde @googlemaps/js-api-loader.
Agrega lo siguiente en la parte superior deapp.js
:import { Loader } from '@googlemaps/js-api-loader';
- Crea un objeto
apiOptions
.
La claseLoader
requiere un objeto JSON que especifica varias opciones para cargar la API de Maps JavaScript, incluida tu clave de API de Google Maps Platform, qué versión de la API deseas cargar y las bibliotecas proporcionadas por la API de Maps JS que desees cargar. Para los fines de este codelab, solo debes agregar lo siguiente aapp.js
a fin de especificar la clave de API:const apiOptions = { apiKey: "YOUR API KEY" }
- Crea una instancia de
Loader
y pásale tu objetoapiOptions
.const loader = new Loader(apiOptions);
- Carga la API de Maps JS.
Para cargar la API, llama aload()
en la instancia deLoader
. El cargador de la API de JS devuelve una promesa que se resuelve una vez que la API está cargada y lista para usarse. Agrega el siguiente stub para cargar la API y controlar la promesa:loader.load().then(() => { console.log('Maps JS API loaded'); });
Si todo funciona correctamente, deberías ver la sentencia console.log
en la consola del navegador:
En resumen, ahora cargaste de manera dinámica la API de Maps JavaScript mediante el código y definiste la función de devolución de llamada que se ejecuta una vez que la API de Maps JavaScript termina de cargarse.
Tu archivo app.js
debería ser similar a lo siguiente:
import { Loader } from '@googlemaps/js-api-loader';
const apiOptions = {
apiKey: "YOUR API KEY"
}
const loader = new Loader(apiOptions);
loader.then(() => {
console.log('Maps JS API Loaded');
});
Ahora que la API de Maps JavaScript está cargada, cargarás el mapa en el paso siguiente.
5. Muestra un mapa
Es hora de mostrar tu primer mapa.
La parte más usada de la API de Maps JavaScript es google.maps.Map
, que es la clase que nos permite crear y manipular instancias de mapa. Para ver cómo se hace, crea una función nueva llamada displayMap()
.
- Define la configuración de tu mapa.
La API de Maps JavaScript admite una variedad de configuraciones diferentes para el mapa, pero solo dos son obligatorias:center
: Establece la latitud y longitud para el centro del mapa.zoom
: Establece el nivel de zoom inicial del mapa.
function displayMap() { const mapOptions = { center: { lat: -33.860664, lng: 151.208138 }, zoom: 14 }; }
- Obtén el
div
donde debe insertarse el mapa en el DOM.
Para poder mostrar el mapa, debes indicarle a la API de Maps JavaScript dónde quieres que aparezca en la página. Si observas rápidamente el archivoindex.html
, verás que ya hay undiv
similar a este:
A fin de indicarle a la API de Maps JavaScript el lugar donde deseas insertar el mapa, usa el método<div id="map"></div>
document.getElementById
para obtener su referencia en el DOM:const mapDiv = document.getElementById('map');
- Crea una instancia de
google.maps.Map
.
Para pedirle a la API de Maps JavaScript que genere un mapa nuevo que se pueda mostrar, crea una instancia degoogle.maps.Map
y pásale los elementosmapDiv
ymapOptions
. También se devuelve la instancia deMap
de esta función para que puedas utilizarla más adelante:const map = new google.maps.Map(mapDiv, mapOptions); return map;
- Muestra el mapa.
Una vez que definas toda la lógica para crear tu instancia de mapa, solo falta llamar adisplayMap()
desde el controlador de promesas de la API de JS para que se llame cuando se haya cargado la API de Maps JavaScript:loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); });
Ahora deberías ver un hermoso mapa de Sídney en tu navegador:
En resumen, en este paso definiste las opciones de visualización para el mapa, creaste una nueva instancia de mapa y la insertaste en el DOM.
Tu función displayMap()
debería ser similar al código siguiente:
function displayMap() {
const mapOptions = {
center: { lat: -33.860664, lng: 151.208138 },
zoom: 14
};
const mapDiv = document.getElementById('map');
const map = new google.maps.Map(mapDiv, mapOptions);
return map;
}
6. Diseño de mapas basado en Cloud (opcional)
Puedes personalizar el estilo de tu mapa con el diseño de mapas basado en Cloud.
Crea un ID de mapa
Si todavía no creaste un ID de mapa con un estilo de mapa asociado, consulta la guía sobre ID de mapa para completar los siguientes pasos:
- Crear un ID de mapa
- Asociar un ID de mapa a un estilo de mapa
Cómo agregar el ID de mapa a tu app
Para usar el ID de mapa que creaste, modifica la función displayMap
en el archivo app.js
y pasa tu ID de mapa en la propiedad mapId
del objeto mapOptions
.
app.js
function displayMap() {
const mapOptions = {
center: { lat: -33.860664, lng: 151.208138 },
zoom: 14,
mapId: 'YOUR_MAP_ID'
};
const mapDiv = document.getElementById('map');
return new google.maps.Map(mapDiv, mapOptions);
}
Una vez que hayas completado esto, ahora deberías ver el estilo que seleccionaste en el mapa.
7. Agrega marcadores al mapa
Hay muchas cosas que los desarrolladores hacen con la API de Maps JavaScript, pero colocar marcadores en el mapa es definitivamente la más popular. Los marcadores te permiten mostrar puntos específicos en el mapa y son elementos de la IU comunes para controlar la interacción del usuario. Si ya usaste Google Maps, es probable que conozcas el marcador predeterminado, que es el que se ve en la imagen siguiente:
En este paso, usarás google.maps.Marker
para colocar marcadores en el mapa.
- Define un objeto para las ubicaciones de tus marcadores.
Para comenzar, crea una nueva funciónaddMarkers()
y declara un objetolocations
que tenga el siguiente conjunto de puntos de latitud y longitud para las atracciones turísticas populares en Sídney.
Además, ten en cuenta que debes pasarle tu instancia deMap
a la función. La usarás más adelante cuando crees tus instancias de marcador.function addMarkers(map) { const locations = { operaHouse: { lat: -33.8567844, lng: 151.213108 }, tarongaZoo: { lat: -33.8472767, lng: 151.2188164 }, manlyBeach: { lat: -33.8209738, lng: 151.2563253 }, hyderPark: { lat: -33.8690081, lng: 151.2052393 }, theRocks: { lat: -33.8587568, lng: 151.2058246 }, circularQuay: { lat: -33.858761, lng: 151.2055688 }, harbourBridge: { lat: -33.852228, lng: 151.2038374 }, kingsCross: { lat: -33.8737375, lng: 151.222569 }, botanicGardens: { lat: -33.864167, lng: 151.216387 }, museumOfSydney: { lat: -33.8636005, lng: 151.2092542 }, maritimeMuseum: { lat: -33.869395, lng: 151.198648 }, kingStreetWharf: { lat: -33.8665445, lng: 151.1989808 }, aquarium: { lat: -33.869627, lng: 151.202146 }, darlingHarbour: { lat: -33.87488, lng: 151.1987113 }, barangaroo: { lat: - 33.8605523, lng: 151.1972205 } } }
- Crea una instancia de
google.maps.Marker
para cada marcador que quieras mostrar.
A fin de crear tus marcadores, usa el siguiente código para iterar recorriendo el objetolocations
con un buclefor...in
, crear un conjunto de opciones para representar cada marcador y, luego, crear una instancia degoogle.maps.Marker
para cada ubicación.
Observa la propiedadicon
demarkerOptions
. ¿Recuerdas el pin de mapa predeterminado que vimos antes? ¿Sabías que también puedes personalizarlo para que muestre la imagen que desees? A continuación, se explica cómo hacerlo.
La propiedadicon
te permite proporcionar la ruta a cualquier archivo de imagen que desees usar como marcador personalizado. Si comenzaste este codelab con nuestra plantilla de proyecto, ya hay una imagen incluida en/src/images
.
Ten en cuenta también que necesitas guardar tus instancias de marcadores en un array y devolverlas en la función para poder usarlas más adelante.const markers = []; for (const location in locations) { const markerOptions = { map: map, position: locations[location], icon: './img/custom_pin.png' } const marker = new google.maps.Marker(markerOptions); markers.push(marker); } return markers;
- Muestra los marcadores.
La API de Maps JavaScript crea y muestra automáticamente un marcador cada vez que se crea una nueva instancia degoogle.maps.Marker
. Por eso, solo debes actualizar el controlador de promesa de la API de JS para llamar aaddMarkers()
. y pasarle tu instancia deMap
:loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); });
Ahora deberías ver marcadores personalizados en el mapa:
En resumen, en este paso definiste un conjunto de ubicaciones para los marcadores y creaste una instancia de google.maps.Marker
con un ícono de marcador personalizado para cada ubicación.
Tu función addMarkers()
debería ser similar al código siguiente:
function addMarkers(map) {
const locations = {
operaHouse: { lat: -33.8567844, lng: 151.213108 },
tarongaZoo: { lat: -33.8472767, lng: 151.2188164 },
manlyBeach: { lat: -33.8209738, lng: 151.2563253 },
hyderPark: { lat: -33.8690081, lng: 151.2052393 },
theRocks: { lat: -33.8587568, lng: 151.2058246 },
circularQuay: { lat: -33.858761, lng: 151.2055688 },
harbourBridge: { lat: -33.852228, lng: 151.2038374 },
kingsCross: { lat: -33.8737375, lng: 151.222569 },
botanicGardens: { lat: -33.864167, lng: 151.216387 },
museumOfSydney: { lat: -33.8636005, lng: 151.2092542 },
maritimeMuseum: { lat: -33.869395, lng: 151.198648 },
kingStreetWharf: { lat: -33.8665445, lng: 151.1989808 },
aquarium: { lat: -33.869627, lng: 151.202146 },
darlingHarbour: { lat: -33.87488, lng: 151.1987113 },
barangaroo: { lat: - 33.8605523, lng: 151.1972205 }
}
const markers = [];
for (const location in locations) {
const markerOptions = {
map: map,
position: locations[location],
icon: './img/custom_pin.png'
}
const marker = new google.maps.Marker(markerOptions);
markers.push(marker);
}
return markers;
}
En el siguiente paso, verás cómo mejorar la experiencia del usuario de los marcadores con el agrupamiento de marcadores en clústeres.
8. Habilita el agrupamiento de marcadores en clústeres
Si usas muchos marcadores o marcadores que están muy cerca entre ellos, puedes encontrarte con el problema de que se superpongan o se vean demasiado juntos, lo que generará una mala experiencia del usuario. Por ejemplo, después de crear los marcadores en el último paso, es posible que hayas notado lo siguiente:
Para casos como este resulta útil el agrupamiento de marcadores en clústeres. Es una función que se utiliza comúnmente a fin de agrupar los marcadores cercanos en un mismo ícono que cambia según el nivel de zoom de la siguiente manera:
El algoritmo utilizado para el agrupamiento de marcadores en clústeres divide el área visible del mapa en una cuadrícula y, luego, agrupa los íconos que se encuentran en la misma celda. Afortunadamente, no tienes que preocuparte por eso porque el equipo de Google Maps Platform creó una biblioteca de utilidades de código abierto muy útil llamada MarkerClustererPlus
que hace todo por ti automáticamente. Puedes ver el código fuente de MarkerClustererPlus en GitHub.
- Importa
MarkerCluster
.
En el proyecto de plantilla de este codelab, la biblioteca de utilidadesMarkerClustererPlus
ya está incluida en las dependencias declaradas en el archivopackage.json
. Por eso, ya la instalaste cuando ejecutastenpm install
al comienzo de este codelab.
Para importar la biblioteca, agrega lo siguiente a la parte superior de tu archivoapp.js
:import MarkerClusterer from '@google/markerclustererplus';
- Crea una nueva instancia de
MarkerClusterer
.
Para crear clústeres de marcadores, debes hacer dos cosas: proporcionar los íconos que deseas utilizar para tus clústeres de marcadores y crear una nueva instancia deMarkerClusterer
.
Primero, declara un objeto que especifique la ruta de los íconos que deseas usar. En el proyecto de plantilla, ya hay un conjunto de imágenes guardadas en./img/m
. Observa que los nombres de los archivos de imagen están numerados de manera secuencial con el mismo prefijo:m1.png
,m2.png
,m3.png
, etcétera.
Cuando configuras la propiedadimagePath
en las opciones del agrupador de marcadores, simplemente proporcionas la ruta y el prefijo del archivo. El agrupador utiliza automáticamente todos los archivos con ese prefijo y anexa un número al final.
Segundo, crea una instancia nueva deMarkerClusterer
y pásale la instancia deMap
donde deseas que se muestren los clústeres de marcadores y el array con las instancias deMarker
que deseas agrupar en clústeres.function clusterMarkers(map, markers) { const clustererOptions = { imagePath: './img/m' } const markerCluster = new MarkerClusterer(map, markers, clustererOptions); }
- Muestra los clústeres de marcadores.
Llama aclusterMarkers()
desde el controlador de promesas de la API de JS. Los clústeres de marcadores se agregan de forma automática al mapa cuando se crea la instancia deMarkerClusterer
en la llamada a función.loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); clusterMarkers(map, markers); });
Ahora deberías ver algunos clústeres de marcadores en tu mapa.
Ten en cuenta que, si acercas o alejas el mapa, MarkerClustererPlus cambia automáticamente el número y el tamaño de los clústeres. También puedes hacer clic en el ícono de cualquier clúster de marcadores para acercar y ver todos los marcadores incluidos en ese clúster.
En resumen, en este paso importaste la biblioteca de utilidades MarkerClustererPlus
de código abierto y la usaste para crear una instancia de MarkerClusterer
que agrupa automáticamente los marcadores que creaste en el paso anterior.
Tu función clusterMarkers()
debería ser similar al código siguiente:
function clusterMarkers(map, markers) {
const clustererOptions = { imagePath: './img/m' }
const markerCluster = new MarkerClusterer(map, markers, clustererOptions);
}
A continuación, aprenderás a controlar la interacción del usuario.
9. Agrega interacción del usuario
Ahora tienes un mapa increíble que muestra algunos de los destinos turísticos más populares de Sídney. En este paso, agregarás cierto control adicional de las interacciones del usuario mediante el sistema de eventos de la API de Maps JavaScript para mejorar aún más la experiencia del usuario de tu mapa.
La API de Maps JavaScript proporciona un sistema de eventos integral que usa controladores de eventos de JavaScript para permitirte manejar varias interacciones del usuario en el código. Por ejemplo, puedes crear objetos de escucha de eventos a fin de activar la ejecución del código para interacciones tales como cuando el usuario hace clic en el mapa y los marcadores, desplaza lateralmente la vista del mapa, acerca y aleja el mapa, y mucho más.
En este paso, agregarás un objeto de escucha de clics a tus marcadores y, luego, harás que el mapa se desplace lateralmente de manera programática para que el marcador en el que hizo clic el usuario quede en el centro del mapa.
- Configura un objeto de escucha de clics en tus marcadores.
Todos los objetos de la API de Maps JavaScript que admiten el sistema de eventos implementan un conjunto estándar de funciones para controlar la interacción del usuario, por ejemplo,addListener
yremoveListener
, entre otras.
A fin de agregar un objeto de escucha de eventos de clic a cada marcador, itera recorriendo el arraymarkers
y llama aaddListener
en la instancia del marcador correspondiente para adjuntar un objeto de escucha del eventoclick
:function addPanToMarker(map, markers) { markers.map(marker => { marker.addListener('click', event => { }); }); }
- Haz que el mapa se desplace lateralmente hasta un marcador cuando se hace clic en él.
El eventoclick
se activa cada vez que un usuario hace clic en un marcador o lo presiona, y devuelve un evento como objeto JSON con información sobre el elemento de la IU en el que se hizo clic. Para mejorar la experiencia del usuario del mapa, puedes controlar el eventoclick
y usar su objetoLatLng
a fin de obtener la latitud y longitud del marcador en el que se hizo clic.
Una vez que tienes esa información, simplemente pásala a la funciónpanTo()
integrada en la instancia deMap
para que el mapa se desplace lateralmente sin problemas y vuelva a centrarse en torno al marcador en el que se hizo clic. Para ello, agrega lo siguiente en la función de devolución de llamada del controlador del evento:const location = { lat: event.latLng.lat(), lng: event.latLng.lng() }; map.panTo(location);
- Asigna los objetos de escucha de clics.
Llama aaddPanToMarker()
desde el controlador de promesas de la API de JS y pásale el mapa y los marcadores para ejecutar el código y asignar los objetos de escucha de clics.loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); clusterMarkers(map, markers); addPanToMarker(map, markers); });
Ahora, ve al navegador y haz clic en tus marcadores. Deberías ver que el mapa se desplaza lateralmente de forma automática para volver a centrarse cada vez que se hace clic en un marcador.
En resumen, en este paso usaste el sistema de eventos de la API de Maps JavaScript para asignar un objeto de escucha de clics a todos los marcadores del mapa, recuperaste la latitud y la longitud del marcador del evento de clic que se activó y empleaste esa información para que el mapa vuelva a centrarse cada vez que se hace clic en un marcador.
Tu función addPanToMarker()
debería ser similar al código siguiente:
function addPanToMarker(map, markers) {
markers = markers.map(marker => {
marker.addListener('click', event => {
const location = { lat: event.latLng.lat(), lng: event.latLng.lng() };
map.panTo(location);
});
});
return markers;
}
Solo falta un paso más. A continuación, mejorarás la experiencia del usuario del mapa mediante las funciones de dibujo de la API de Maps JavaScript.
10. Dibuja en el mapa
Hasta ahora, creaste un mapa de Sídney, que muestra marcadores de destinos turísticos populares y controla la interacción del usuario. En el último paso de este codelab, usarás las funciones de dibujo de la API de Maps JavaScript para agregar una característica útil adicional a la experiencia de tu mapa.
Imagina que a este mapa lo utilizarán usuarios que desean explorar la ciudad de Sídney. Una función útil sería visualizar un radio alrededor de un marcador cuando se hace clic en él. Esto permitiría que el usuario vea rápidamente qué otros destinos están muy cerca del marcador en el que hizo clic, a los cuales puede llegar fácilmente a pie.
La API de Maps JavaScript incluye un conjunto de funciones para dibujar formas sobre el mapa, como cuadrados, polígonos, líneas y círculos. Luego, renderizarás un círculo para mostrar un radio de 800 metros (aproximadamente media milla) alrededor de un marcador cuando se hace clic en él.
- Dibuja un círculo con
google.maps.Circle
.
Las funciones de dibujo de la API de Maps JavaScript te ofrecen una amplia variedad de opciones para mostrar un objeto dibujado en el mapa. Para representar un radio circular, declara un conjunto de opciones correspondientes a un círculo, como el color, el grosor del trazo, el radio del círculo y en qué lugar este debe centrarse y, luego, crea una instancia nueva degoogle.maps.Circle
a fin de crear un círculo nuevo:function drawCircle(map, location) { const circleOptions = { strokeColor: '#FF0000', strokeOpacity: 0.8, strokeWeight: 1, map: map, center: location, radius: 800 } const circle = new google.maps.Circle(circleOptions); return circle; }
- Dibuja el círculo cuando se hace clic en un marcador.
Para dibujar el círculo cuando el usuario hace clic en un marcador, lo único que debes hacer es llamar a la funcióndrawCircle()
que escribiste anteriormente en la devolución de llamada del objeto de escucha de clics deaddPanToMarker()
y pasarle el mapa y la ubicación del marcador.
Observa que también se agrega una sentencia condicional que llama acircle.setMap(null)
. Esto elimina del mapa el círculo que se renderizó antes si el usuario hace clic en otro marcador a fin de que no termines con un mapa cubierto de círculos mientras el usuario explora el mapa.
Tu funciónaddPanToMarker()
debería ser similar al código siguiente:function addPanToMarker(map, markers) { let circle; markers.map(marker => { marker.addListener('click', event => { const location = { lat: event.latLng.lat(), lng: event.latLng.lng() }; map.panTo(location); if (circle) { circle.setMap(null); } circle = drawCircle(map, location); }); }); }
¡Listo! Ve a tu navegador y haz clic en uno de los marcadores. Deberías ver que se renderiza un radio circular a su alrededor:
11. Felicitaciones
Creaste correctamente tu primera aplicación web usando Google Maps Platform, para lo cual aprendiste a cargar la API de Maps JavaScript y un mapa, a trabajar con los marcadores, a controlar el mapa y hacer dibujos sobre él y viste también cómo agregar interacción del usuario.
Para ver el código completo, consulta el proyecto finalizado en el directorio /solutions
.
¿Qué sigue?
En este codelab, viste una base de lo que puedes hacer con la API de Maps JavaScript. Ahora, intenta agregar algunas de estas funciones al mapa:
- Cambia el tipo de mapa para mostrar mapas satelitales, híbridos y de terreno.
- Habilita la localización para cargar el mapa en diferentes idiomas.
- Personaliza otras interacciones del usuario, como el zoom y los controles del mapa.
- Agrega ventanas de información para mostrar detalles cuando se hace clic en los marcadores.
- Consulta las otras bibliotecas disponibles para la API de Maps JavaScript, las cuales habilitan funciones adicionales, como Places, dibujo y visualización.
Si quieres ver más formas de trabajar con Google Maps Platform en la Web, consulta estos vínculos: