const listaNormalizada = estadosPermitidos.map(normalizarParaComparar); // Obtener dimensiones del contenedor PADRE (el body del iframe) const container = document.getElementById('map-container'); const width = container.clientWidth; const height = container.clientHeight; const svg = d3.select("#mexico-map") .attr("width", width) .attr("height", height); const tooltip = d3.select("#tooltip"); const projection = d3.geoConicConformal() .rotate([102, 0]) .center([0, 24]) .parallels([17.5, 29.5]) .scale(width * 1.5) .translate([width / 2, height / 2]); const path = d3.geoPath().projection(projection); const geojsonUrl = "https://raw.githubusercontent.com/angelnmara/geojson/master/mexicoHigh.json"; async function drawMap() { try { const response = await fetch(geojsonUrl); const data = await response.json(); const g = svg.append("g"); g.selectAll("path") .data(data.features) .enter() .append("path") .attr("d", path) .each(function(d) { const originalName = d.properties.name || d.properties.STATE_NAME; let displayName = originalName; if (originalName === "Distrito Federal") displayName = "Ciudad de México"; if (originalName === "México") displayName = "Estado de México"; const esActivo = listaNormalizada.some(item => normalizarParaComparar(displayName).includes(item) || normalizarParaComparar(originalName).includes(item) ); const element = d3.select(this); if (esActivo) { const slug = generarSlugUrl(displayName); const url = `https://www.mmiopenings.com/distribuidores/${slug}/`; element.attr("class", "state-active") .on("mouseover", function(event) { d3.select(this).raise(); tooltip.style("display", "block") .html(`${displayName}Clic para ver distribuidores`); }) .on("mousemove", function(event) { tooltip.style("top", (event.pageY - 60) + "px") .style("left", (event.pageX + 15) + "px"); }) .on("mouseout", function() { tooltip.style("display", "none"); }) .on("click", function() { window.open(url, '_blank'); }); } else { element.attr("class", "state-static"); } }); } catch (error) { console.error("Error cargando el mapa:", error); document.getElementById('map-container').innerHTML = ` Error al cargar los datos del mapa. `; } } // Redibujar al cambiar tamaño de la ventana (opcional, pero útil) window.addEventListener('resize', () => { const newWidth = container.clientWidth; const newHeight = container.clientHeight; svg.attr("width", newWidth) .attr("height", newHeight); projection.scale(newWidth * 1.5) .translate([newWidth / 2, newHeight / 2]); svg.selectAll("*").remove(); drawMap(); }); drawMap();