const mymap = L.map('mapid').setView([-34.85832705399524, -56.15180969238282], 11);
L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
    attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
    maxZoom: 18,
    id: 'mapbox/streets-v11',
    tileSize: 512,
    zoomOffset: -1,
    accessToken: 'pk.eyJ1IjoicGRhY29zdGFwb3J0byIsImEiOiJjazhhcGc2dTUwMGcxM2Z0N2l3ZXdseDFnIn0.N1PfH0sCB1Mij9a4QZkeNQ'
}).addTo(mymap);

// Copiar el siguiente enunciado por cada marcador que se quiera agregar, actualizando los parámetros.
addMarker(
  mymap,
  -34.899792,
  -56.180340,
  'Paysandú y Gaboto (Plaza Acción Directa)',
  'Domingo 29/3 - 16hs',
  'Traete el plato y ganas de compartir'
);

/**
 * Agrega un marcador a un mapa.
 *
 * map: El mapa al cual agregar el marcador.
 * latitude: La latitud del punto a marcar.
 * longitude: La longitud del punto a marcar.
 * address: Texto indicando la dirección del evento.
 * datetime: Texto indicando fecha y hora del evento.
 * info: Información adicional del evento.
 */
function addMarker(map, latitude, longitude, address, datetime, info) {
  L.marker([latitude, longitude], {title: address})
    .bindPopup(popupMarkup(address, datetime, info))
    .addTo(map);
}

/**
 * Construye el HTML de un popup de un marcador con información sobre el evento.
 *
 * address: Texto indicando la dirección del evento.
 * datetime: Texto indicando fecha y hora del evento.
 * info: Información adicional del evento.
 */
function popupMarkup(address, datetime, info) {
  const mandatory = `<h4>${address}</h4><b>Fecha:</b> ${datetime}`;
  return info ? mandatory + `</br>${info}` : mandatory;
}