Añadir una ventana emergente personalizada
<!DOCTYPE html>
<html>
<head>
<title>Añadir una ventana emergente personalizada</title>
<!-- Se referencia la hoja de estilos de JavaScript -->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" />
<!-- Se referencia el archivo JavaScript de Leaflet -->
<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
<!-- Se establecen los estilos de ancho y alto del contenedor del mapa -->
<style>
#map {
width: 960px;
height:500px;
}
/* Personalización de estilos predeterminados de Leaflet */
.custom .leaflet-popup-tip,
.custom .leaflet-popup-content-wrapper {
background: #e60000;
color: #ffffff;
}
</style>
</head>
<body>
<!-- Se crea el elemento contenedor del mapa -->
<div id="map"></div>
<script>
// Se crea un objeto mapa, se le asigna al elemento contenedor 'map' y se fijan su punto central y nivel de zum iniciales
var map = L.map('map').setView([36.722, -4.420], 15);
// Se añaden al objeto mapa las teselas de mapa a partir de OpenStreetMap y la información correspondiente de atribución
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: 'Datos © <a href="http://osm.org/copyright" target="blanck">Colaboradores de OpenStreetMap</a> (<a href="http://www.openstreetmap.org/copyright" target="blanck">ODbL</a>) | Teselas <a href="https://github.com/gravitystorm/openstreetmap-carto" target="blanck">OSM Carto</a> © Randy Allan y otros colaboradores (<a href="https://creativecommons.org/licenses/by-sa/2.0/deed.es" target="blanck">CC BY-SA 2.0</a>)'
}).addTo(map);
// Se crea un icono personalizado
var photoIcon = L.icon({
iconUrl: '../images/photo.svg',
iconSize: [38, 95], // tamaño del icono
popupAnchor: [0,-15] // posición relativa de la ventana emergente
});
// Se crea el contenido personalizado de la ventana emergente
var customPopup = "<img src='../images/malaga-city-hall.jpg' alt='Ayuntamiento de Málaga' width='200px'/><br/>Ayuntamiento de Málaga. Fuente: Wikimedia Commons, imagen de Daniel Capilla (CC BY-SA 2.0).";
// Se especifican las opciones de la ventana emergente
var customOptions = {
'maxWidth': '200',
'className' : 'custom'
}
// Se crea un objeto marcador, se establece la opción de icono personalizado, se vincula una ventana emergente con contenido y opciones pesonalizadas y se añade al mapa en las coordenadas indicadas
var marker = L.marker([36.7204,-4.4150], {icon: photoIcon}).bindPopup(customPopup, customOptions).addTo(map);
</script>
</body>
</html>