API de Google Maps
API de Google Maps
API DE
GOOGLE MAPS
2. Incorporando el Mapa
HTML y CSS
<style>
/* Establece el tamaño del mapa */
#map {
height: 400px;
width: 100%;
}
</style>
<div id="map"></div>
<script src="https://maps.googleapis.com/maps/api/js?key=TU_API_KEY&callback=initMap"
async defer></script>
<script>
function initMap() {
const ubicacion = { lat: -34.397, lng: 150.644 };
const mapa = new google.maps.Map(document.getElementById("map"), {
zoom: 8,
center: ubicacion,
});
const marcador = new google.maps.Marker({
position: ubicacion,
map: mapa,
});
}
</script>
3. Personalizar el Mapa
Crear Estilos con Google Maps Styling Wizard
Visita: Google Maps Styling Wizard
[
{
"elementType": "geometry",
"stylers": [{ "color": "#f5f5f5" }]
},
{
"featureType": "water",
"elementType": "labels.text.fill",
"stylers": [{ "color": "#9e9e9e" }]
}
]
function initMap() {
const ubicacion = { lat: -34.397, lng: 150.644 };
const mapa = new google.maps.Map(document.getElementById("map"), {
zoom: 8,
center: ubicacion,
styles: estilosMapa, // Aplica los estilos aquí
});
const marcador = new google.maps.Marker({
position: ubicacion,
map: mapa,
});
}
marcador.addListener("click", () => {
alert("Hiciste clic en el marcador");
});
6. Geolocalización y Búsquedas
Obteniendo la Ubicación del Usuario
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position) => {
const pos = {
lat: position.coords.latitude,
lng: position.coords.longitude,
};
map.setCenter(pos);
const marker = new google.maps.Marker({
position: pos,
map: map,
title: "Estás aquí",
});
}, () => {
manejarError(true, map.getCenter());
});
} else {
manejarError(false, map.getCenter());
}
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-12.108099937438965, -76.95555877685547]
}
}
]
}
2. Con Propiedades:
• Al incluir propiedades, puedes proporcionar contexto o información relevante sobre la
característica. Esto es útil para mejorar la experiencia del usuario, permitiendo que
interactúen con el mapa y obtengan más información al hacer clic en él.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-12.108099937438965, -76.95555877685547]
},
"properties": {
"name": "Ubicación Ejemplo"
}
}
]
}
Ejemplo Práctico
Supongamos que tienes un mapa que muestra varias ubicaciones de interés. Si
cada ubicación tiene un nombre y una descripción:
• Sin propiedades: Al hacer clic en el mapa, no obtendrás información, lo
que puede hacer que la experiencia del usuario sea insatisfactoria.
• Con propiedades: Al hacer clic, puedes mostrar un alert o un tooltip con el
nombre y la descripción de la ubicación, mejorando la interactividad y la
utilidad del mapa.
Cargando Datos en script.js
Cuando cargas datos GeoJSON en tu archivo script.js, puedes acceder a las
propiedades para mostrarlas al usuario. Por ejemplo:
mapa.data.addListener('click', (event) => {
const nombre = event.feature.getProperty('name'); // Accede a la propiedad 'name'
alert(`Hiciste clic en: ${nombre}`);
});
En Resumen
• Incluir propiedades en tu archivo GeoJSON permite enriquecer la
información que se presenta en el mapa y mejora la interacción del
usuario.
• No incluir propiedades limita la utilidad de los datos, ya que solo se
mostrarían formas geométricas sin contexto ni información adicional.
Caso Real de Implementación
Aplicación de Rutas para Bicicletas
Descripción: Una aplicación que permite a los usuarios visualizar rutas para
bicicletas en su ciudad.
Estructura de Archivos
mi-proyecto-google-maps/
│
├── index.html # Archivo HTML principal
├── style.css # Estilos CSS para tu mapa y otros elementos
├── script.js # Archivo JavaScript para la lógica del mapa
├── geojson/ # Carpeta para archivos GeoJSON (opcional)
│ └── data.geojson # Archivo GeoJSON con datos geoespaciales (opcional)
└── README.md # Documentación del proyecto (opcional)
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Proyecto Google Maps</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Mapa de Google</h1>
<div id="map"></div>
<script
src="https://maps.googleapis.com/maps/api/js?key=TU_API_KEY&callback=initMap&libraries=mar
ker"
async
defer>
</script>
<script src="script.js"></script>
</body>
</html>
Nota: Reemplaza TU_API_KEY con tu API Key obtenida de la Consola de Google Cloud.
#map {
height: 400px; /* Altura del mapa */
width: 100%; /* Ancho del mapa */
}
function initMap() {
// Coordenadas iniciales
const ubicacion = { lat: - 12.108099937438965, lng: -76.95555877685547 };
const mapa = new google.maps.Map(document.getElementById("map"), {
zoom: 8, // Nivel de zoom
center: ubicacion, // Centro del mapa
});
function initMap() {
const ubicacionDefault = { lat: -12.108099937438965, lng: -76.95555877685547 };
const mapa = new google.maps.Map(document.getElementById("map"), {
zoom: 15,
center: ubicacionDefault,
});
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position) => {
const pos = {
lat: position.coords.latitude,
lng: position.coords.longitude,
};
mapa.setCenter(pos);
new google.maps.Marker({
position: pos,
map: mapa,
title: "Estás aquí",
});
}, () => {
manejarError(true, mapa.getCenter());
});
} else {
manejarError(false, mapa.getCenter());
}
}
Por ejemplo:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-76.95555925369263, -12.108218263374901]
},
"properties": {
"name": "Ravenna Proyectos Empresariales SAC"
}
}
]
}
fetch('geojson/data.geojson')
.then(response => response.json())
.then(data => {
mapa.data.addGeoJson(data);
mapa.data.setStyle({
fillColor: 'green',
strokeColor: 'blue',
strokeWeight: 2
});
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position) => {
const pos = {
lat: position.coords.latitude,
lng: position.coords.longitude,
};
mapa.setCenter(pos);
new AdvancedMarkerElement({
position: pos,
map: mapa,
title: "Estás aquí",
});
}, () => {
manejarError(true, mapa.getCenter());
});
} else {
manejarError(false, mapa.getCenter());
}
Conclusión
Este documento proporciona una guía paso a paso para implementar la API de
Google Maps en un proyecto web. Puedes personalizar y expandir las
funcionalidades según tus necesidades. ¡Buena suerte en tu implementación!