viewof interactividad = {
const infoData = await googleSheetData;
const svgElement = viewof svgMapaRenderizado.querySelector("svg");
if (!svgElement) {
console.error("El SVG no se ha cargado correctamente.");
return;
}
const tooltip = document.createElement("div");
tooltip.id = "tooltip";
tooltip.style.position = "absolute";
tooltip.style.pointerEvents = "none";
tooltip.style.display = "none";
tooltip.style.background = "#fff";
tooltip.style.color = "#000";
tooltip.style.padding = "5px 10px";
tooltip.style.borderRadius = "5px";
tooltip.style.boxShadow = "0 2px 6px rgba(0, 0, 0, 0.2)";
tooltip.style.zIndex = "1000";
tooltip.style.maxWidth = "400px";
tooltip.style.minWidth = "150px";
tooltip.style.wordWrap = "break-word";
document.body.appendChild(tooltip);
let mapaGroup = svgElement.querySelector("#mapa");
if (!mapaGroup) {
mapaGroup = document.createElementNS("http://www.w3.org/2000/svg", "g");
mapaGroup.setAttribute("id", "mapa");
while (svgElement.firstChild) {
mapaGroup.appendChild(svgElement.firstChild);
}
svgElement.appendChild(mapaGroup);
}
const ajustarTooltip = (event) => {
const tooltipRect = tooltip.getBoundingClientRect();
const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;
let left = event.clientX + 10;
let top = event.clientY + 10;
if (left + tooltipRect.width > viewportWidth) {
left = event.clientX - tooltipRect.width - 10;
}
if (top + tooltipRect.height > viewportHeight) {
top = event.clientY - tooltipRect.height - 10;
}
if (left < 0) left = 0;
if (top < 0) top = 0;
tooltip.style.left = `${left}px`;
tooltip.style.top = `${top}px`;
};
const mostrarTooltip = (event, data) => {
tooltip.style.display = "block";
tooltip.innerHTML = `<strong>${data.NOMBRE}</strong><br>${data.INFO}<br>${data.INFO2}`;
ajustarTooltip(event);
};
const ocultarTooltip = () => {
tooltip.style.display = "none";
};
const interactivos = svgElement.querySelectorAll("#Interactivo *");
interactivos.forEach(elemento => {
const id = elemento.id;
const data = infoData.find(row => row.id == id);
if (data) {
elemento.addEventListener("mouseover", (event) => {
mostrarTooltip(event, data);
elemento.style.cursor = "pointer";
});
elemento.addEventListener("mousemove", (event) => {
ajustarTooltip(event);
});
elemento.addEventListener("mouseout", () => {
ocultarTooltip();
});
elemento.addEventListener("click", (event) => {
mostrarTooltip(event, data);
});
}
});
return "Interactividad y zoom habilitados";
}