{"id":61988,"date":"2026-07-29T14:50:52","date_gmt":"2026-07-29T12:50:52","guid":{"rendered":"https:\/\/www.marroiak.com\/?page_id=61988"},"modified":"2026-08-30T09:44:42","modified_gmt":"2026-08-30T07:44:42","slug":"prezzi","status":"publish","type":"page","link":"https:\/\/www.marroiak.com\/it\/precios\/","title":{"rendered":"Dati e statistiche della discussione"},"content":{"rendered":"\n<style data-wp-block-html=\"css\">\n.entry-content{\n  max-width: 800px;\n  margin: auto;\n}\n.page #content .entry-content > *{\npadding:5px;}\n\n.page .entry-title{font-weight: 800;}\n.site-content ul:not(.products){margin:0;padding:0}\n\n@media (min-width: 767){\n.page .entry-title{text-align:left;\n}\n\n}\n<\/style>\n\n\n    <div id=\"chart_container_6acbe2036b8c7\" style=\"margin: 0px 0;\">\n        <div style=\"display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 15px; margin-bottom: 15px;\">\n            <h3 style=\"margin: 0; font-weight: 300; color: #333;\">\n                <small style=\"font-size: 15px; color: #222; display: block; font-weight: 400;\">\n                    <span id=\"period-info-chart_container_6acbe2036b8c7\">\n                       <strong>Evoluci\u00f3n de precios (por cm\u00b2)<\/strong>\n                    <\/span>\n                <\/small>\n            <\/h3>\n            \n            <div style=\"display: flex; gap: 8px; background: #f0f0f0; padding: 3px; border-radius: 6px;\">\n                <button \n                    id=\"btn-quarterly-chart_container_6acbe2036b8c7\" \n                    onclick=\"switchCharts('chart_container_6acbe2036b8c7', 'quarterly')\"\n                    style=\"padding: 3px 16px; border: none; border-radius: 4px; cursor: pointer; font-size: 13px; font-weight: 500; background: #529ed6; color: white; transition: all 0.3s;\">\n                    Trimestral\n                <\/button>\n                <button \n                    id=\"btn-monthly-chart_container_6acbe2036b8c7\" \n                    onclick=\"switchCharts('chart_container_6acbe2036b8c7', 'monthly')\"\n                    style=\"padding: 3px 16px; border: none; border-radius: 4px; cursor: pointer; font-size: 13px; font-weight: 500; background: transparent; color: #666; transition: all 0.3s;\">\n                    Mensual\n                <\/button>\n            <\/div>\n        <\/div>\n        \n        <div style=\"margin-bottom: 30px; border: 1px solid #777; border-radius: 8px; padding: 15px; background: #fafafa;\">\n            <h4 style=\"margin: 0 0 10px 0; display: flex; align-items: center; gap: 10px;\">\n                <strong style=\"color:purple\">Piezas Legendarias<\/strong>\n                <span style=\"font-size: 14px; font-weight: normal; color: #666; margin-left: auto;\">\n                    12 subastas\n                <\/span>\n            <\/h4>\n            <canvas id=\"chart_legendarias_6acbe2036b8c5\" style=\"width:100%; max-height: 350px; height: 350px;\"><\/canvas>\n            <div style=\"margin-top: 8px; font-size: 13px; color: #555; text-align: center; border-top: 1px solid #eee; padding-top: 8px;\">\n                                    <strong>Precio m\u00e1ximo hist\u00f3rico:<\/strong> 400,00 \u20ac \n                    <span style=\"color: #999;\">(Jul 2026)<\/span>\n                            <\/div>\n        <\/div>\n        \n        <div style=\"margin-bottom: 30px; border: 1px solid #777; border-radius: 8px; padding: 15px; background: #fafafa;\">\n            <h4 style=\"margin: 0 0 10px 0; display: flex; align-items: center; gap: 10px;\">\n                <strong>Piezas Singulares<\/strong>\n                <span style=\"font-size: 14px; font-weight: normal; color: #666; margin-left: auto;\">\n                    231 subastas\n                <\/span>\n            <\/h4>\n            <canvas id=\"chart_otros_6acbe2036b8c6\" style=\"width:100%; max-height: 350px; height: 350px;\"><\/canvas>\n            <div style=\"margin-top: 8px; font-size: 13px; color: #555; text-align: center; border-top: 1px solid #eee; padding-top: 8px;\">\n                                    <strong>Precio m\u00e1ximo hist\u00f3rico:<\/strong> 250,00 \u20ac \n                    <span style=\"color: #999;\">(Apr 2026)<\/span>\n                            <\/div>\n        <\/div>\n        \n            <\/div>\n    \n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.0\/dist\/chart.umd.min.js\"><\/script>\n    <script>\n    var monthlyData = {\n        labels: [\"Feb 2025\",\"Mar 2025\",\"Apr 2025\",\"May 2025\",\"Jun 2025\",\"Feb 2026\",\"Mar 2026\",\"Apr 2026\",\"May 2026\",\"Jun 2026\",\"Jul 2026\",\"Aug 2026\",\"Sep 2026\",\"Oct 2026\"],\n        avg_legendarias: [0,0.32,0.13,0,0.24,0,0,0,0,0,0.19,0.04,0,0],\n        avg_otros: [0.13,0.15,0.09,0.09,0.11,0.07,0.08,0.1,0.06,0.07,0.16,0.09,0.14,0.16]    };\n\n    var quarterlyLegendarias = {\n        labels: [\"Q1 2025\",\"Q2 2025\",\"Q3 2026\"],\n        avg: [0.16,0.12,0.08]    };\n\n    var quarterlyOtros = {\n        labels: [\"Q1 2025\",\"Q2 2025\",\"Q1 2026\",\"Q2 2026\",\"Q3 2026\",\"Q4 2026\"],\n        avg: [0.14,0.1,0.08,0.08,0.13,0.16]    };\n\n    var chartInstances_chart_container_6acbe2036b8c7 = { legendarias: null, otros: null };\n    var currentMode_chart_container_6acbe2036b8c7 = 'quarterly';\n\n    function renderCharts_chart_container_6acbe2036b8c7(mode) {\n        var ctxLegendarias = document.getElementById('chart_legendarias_6acbe2036b8c5').getContext('2d');\n        var ctxOtros = document.getElementById('chart_otros_6acbe2036b8c6').getContext('2d');\n        \n        if (chartInstances_chart_container_6acbe2036b8c7.legendarias) chartInstances_chart_container_6acbe2036b8c7.legendarias.destroy();\n        if (chartInstances_chart_container_6acbe2036b8c7.otros) chartInstances_chart_container_6acbe2036b8c7.otros.destroy();\n        \n        var datasetSource = (mode === 'monthly') ? monthlyData.avg_legendarias : quarterlyLegendarias.avg;\n        var datasetSourceOtros = (mode === 'monthly') ? monthlyData.avg_otros : quarterlyOtros.avg;\n        \n        chartInstances_chart_container_6acbe2036b8c7.legendarias = new Chart(ctxLegendarias, {\n            type: 'line',\n            data: {\n                labels: (mode === 'monthly') ? monthlyData.labels : quarterlyLegendarias.labels,\n                datasets: [{\n                    label: 'Precio Medio (\u20ac\/cm\u00b2)',\n                    data: datasetSource,\n                    borderColor: '#8B008B',\n                    backgroundColor: 'rgba(139, 0, 139, 0.1)',\n                    borderWidth: 3,\n                    fill: true,\n                    tension: 0.3,\n                    pointBackgroundColor: '#8B008B',\n                    pointRadius: 4,\n                    pointHoverRadius: 6,\n                    spanGaps: true\n                }]\n            },\n            options: {\n    responsive: true,\n    maintainAspectRatio: true,\n    plugins: {\n        legend: { display: true, position: 'top', labels: { usePointStyle: true, padding: 13, font: { size: 11 } } },\n        tooltip: {\n            callbacks: {\n                label: function(context) {\n                    return context.dataset.label + ': ' + context.parsed.y.toFixed(2) + ' \u20ac\/cm\u00b2';\n                }\n            }\n        }\n    },\n    scales: {\n        y: { \n            type: 'linear', \n            beginAtZero: true, \n            min: 0,\n            ticks: { \n                \/\/ CORRECCI\u00d3N: Mostrar 2 decimales en lugar de 0 para que no redondee a n\u00fameros enteros\n                callback: function(v) { return v.toFixed(2) + ' \u20ac\/cm\u00b2'; } \n            },\n            grid: { color: 'rgba(0,0,0,0.05)' } \n        },\n        x: { grid: { display: false } }\n    }\n}\n        });\n        \n        chartInstances_chart_container_6acbe2036b8c7.otros = new Chart(ctxOtros, {\n            type: 'line',\n            data: {\n                labels: (mode === 'monthly') ? monthlyData.labels : quarterlyOtros.labels,\n                datasets: [{\n                    label: 'Precio Medio (\u20ac\/cm\u00b2)',\n                    data: datasetSourceOtros,\n                    borderColor: '#e67e22',\n                    backgroundColor: 'rgba(230, 126, 34, 0.1)',\n                    borderWidth: 3,\n                    fill: true,\n                    tension: 0.3,\n                    pointBackgroundColor: '#e67e22',\n                    pointRadius: 4,\n                    pointHoverRadius: 6,\n                    spanGaps: true\n                }]\n            },\n            options: {\n    responsive: true,\n    maintainAspectRatio: true,\n    plugins: {\n        legend: { display: true, position: 'top', labels: { usePointStyle: true, padding: 13, font: { size: 11 } } },\n        tooltip: {\n            callbacks: {\n                label: function(context) {\n                    return context.dataset.label + ': ' + context.parsed.y.toFixed(2) + ' \u20ac\/cm\u00b2';\n                }\n            }\n        }\n    },\n    scales: {\n        y: { \n            type: 'linear', \n            beginAtZero: true, \n            min: 0,\n            ticks: { \n                \/\/ CORRECCI\u00d3N: Mostrar 2 decimales en lugar de 0 para que no redondee a n\u00fameros enteros\n                callback: function(v) { return v.toFixed(2) + ' \u20ac\/cm\u00b2'; } \n            },\n            grid: { color: 'rgba(0,0,0,0.05)' } \n        },\n        x: { grid: { display: false } }\n    }\n}\n        });\n        \n        var btnMonthly = document.getElementById('btn-monthly-chart_container_6acbe2036b8c7');\n        var btnQuarterly = document.getElementById('btn-quarterly-chart_container_6acbe2036b8c7');\n        \n        if (mode === 'monthly') {\n            btnMonthly.style.background = '#529ed6'; btnMonthly.style.color = 'white';\n            btnQuarterly.style.background = 'transparent'; btnQuarterly.style.color = '#666';\n        } else {\n            btnQuarterly.style.background = '#529ed6'; btnQuarterly.style.color = 'white';\n            btnMonthly.style.background = 'transparent'; btnMonthly.style.color = '#666';\n        }\n        currentMode_chart_container_6acbe2036b8c7 = mode;\n    }\n\n    function switchCharts(containerId, mode) {\n        if (mode === currentMode_chart_container_6acbe2036b8c7) return;\n        renderCharts_chart_container_6acbe2036b8c7(mode);\n    }\n\n    document.addEventListener('DOMContentLoaded', function() {\n        renderCharts_chart_container_6acbe2036b8c7('quarterly');\n    });\n    <\/script>\n    \n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\" style=\"margin-top:70px;text-transform:uppercase\"><strong>Ubicaci\u00f3n Ganadores<\/strong><\/h2>\n\n\n    <link href=\"https:\/\/unpkg.com\/maplibre-gl@3.6.2\/dist\/maplibre-gl.css\" rel=\"stylesheet\" \/>\n    <script src=\"https:\/\/unpkg.com\/maplibre-gl@3.6.2\/dist\/maplibre-gl.js\"><\/script>\n\n    <style>\n        .mm-leaflet-minimal {\n            background: #f8fafc !important;\n            border-radius: 8px;\n            border: 1px solid #cbd5e1;\n            position: relative;\n        }\n        .mm-map-zoom-controls {\n            position: absolute;\n            top: 12px;\n            right: 12px;\n            z-index: 10;\n            display: flex;\n            flex-direction: column;\n            background: #ffffff;\n            border: 1px solid #cbd5e1;\n            border-radius: 6px;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n            overflow: hidden;\n        }\n        .mm-map-zoom-btn {\n            background: #ffffff;\n            border: none;\n            width: 32px;\n            height: 32px;\n            font-size: 16px;\n            font-weight: bold;\n            color: #1e293b;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            transition: background 0.2s ease;\n        }\n        .mm-map-zoom-btn:hover {\n            background: #f1f5f9;\n            color: #2563eb;\n        }\n        .mm-map-zoom-btn:first-child {\n            border-bottom: 1px solid #e2e8f0;\n        }\n        .maplibregl-popup-content {\n            background: #ffffff !important;\n            color: #1e293b !important;\n            border: 1px solid #cbd5e1;\n            border-radius: 6px;\n            box-shadow: 0 4px 15px rgba(0,0,0,0.08);\n            padding: 12px !important;\n        }\n        .mm-paises-lista-container {\n            margin-top: 25px;\n            font-family: inherit;\n        }\n        .mm-paises-lista-container h5 {\n            margin-bottom: 15px;\n            font-size: 15px;\n            letter-spacing: 0.5px;\n            color: #1e293b;\n            text-transform: uppercase;\n        }\n        .mm-pais-grupo {\n            margin-bottom: 20px;\n            background: #ffffff;\n            border: 1px solid #e2e8f0;\n            border-radius: 8px;\n            padding: 15px;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.02);\n        }\n        .mm-pais-titulo {\n            font-size: 14px;\n            font-weight: 700;\n            color: #0f172a;\n            margin-bottom: 10px;\n            display: flex;\n            align-items: center;\n            gap: 6px;\n            border-bottom: 2px solid #f1f5f9;\n            padding-bottom: 6px;\n        }\n        .mm-ciudades-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n            gap: 10px;\n            list-style: none;\n            padding: 0;\n            margin: 0;\n        }\n        .mm-ciudad-item {\n            background: #f8fafc;\n            border: 1px solid #e2e8f0;\n            padding: 8px 12px;\n            border-radius: 6px;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            font-size: 13px;\n        }\n        .mm-ciudad-item.mm-hidden-city {\n            display: none;\n        }\n        .mm-ciudad-nombre {\n            font-weight: 500;\n            color: #334155;\n        }\n        .mm-ciudad-cantidad {\n            background: #529ed6;\n            color: #ffffff;\n            padding: 2px 7px;\n            border-radius: 12px;\n            font-weight: bold;\n            font-size: 11px;\n        }\n        .mm-btn-ver-mas {\n            background: transparent;\n            border: 1px solid #2563eb;\n            color: #2563eb;\n            padding: 6px 14px;\n            border-radius: 6px;\n            font-size: 12px;\n            font-weight: 600;\n            cursor: pointer;\n            margin-top: 12px;\n            display: inline-block;\n            transition: all 0.2s ease;\n        }\n        .mm-btn-ver-mas:hover {\n            background: #2563eb;\n            color: #ffffff;\n        }\n    <\/style>\n\n    <div>\n        <div id=\"mm-real-leaflet-map\" class=\"mm-leaflet-minimal\" style=\"width: 100%; height: 420px;\">\n            <div class=\"mm-map-zoom-controls\">\n                <button type=\"button\" class=\"mm-map-zoom-btn\" id=\"mm-zoom-in\" title=\"Acercar\">+<\/button>\n                <button type=\"button\" class=\"mm-map-zoom-btn\" id=\"mm-zoom-out\" title=\"Alejar\">-<\/button>\n            <\/div>\n        <\/div>\n\n            <\/div>\n\n    <script>\n    function mmToggleCiudades(btn) {\n        var grupo = btn.closest('.mm-pais-grupo');\n        var ocultas = grupo.querySelectorAll('.mm-hidden-city');\n        var estaOculto = ocultas.length > 0 && ocultas[0].style.display === '' || ocultas[0] && window.getComputedStyle(ocultas[0]).display === 'none';\n        var totalOcultasCount = grupo.querySelectorAll('.mm-ciudad-item.mm-hidden-city').length;\n        \n        grupo.querySelectorAll('.mm-ciudad-item').forEach(function(el, index) {\n            if (index >= 16) {\n                el.style.display = estaOculto ? 'flex' : 'none';\n            }\n        });\n\n        btn.innerText = estaOculto ? 'Ver menos' : 'Ver m\u00e1s (' + totalOcultasCount + ' m\u00e1s)';\n    }\n\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        var mapElement = document.getElementById('mm-real-leaflet-map');\n        if (!mapElement) return;\n\n        var mapWidthPx = mapElement.offsetWidth || 600;\n        var mapHeightPx = mapElement.offsetHeight || 420;\n        var ladoMenorMapPx = Math.min(mapWidthPx, mapHeightPx);\n\n        var datosMapa = {\"Madrid\":{\"coords\":[40.416782,-3.703507],\"cantidad\":63},\"Gandia\":{\"coords\":[38.9675925,-0.1803423],\"cantidad\":47},\"Oliva\":{\"coords\":[38.9202443,-0.1208981],\"cantidad\":19},\"Valencia\":{\"coords\":[39.4697065,-0.3763353],\"cantidad\":18},\"Francia\":{\"coords\":[46.603354,1.8883335],\"cantidad\":12},\"Rafelcofer\":{\"coords\":[38.9327181,-0.1664006],\"cantidad\":11},\"Barcelona\":{\"coords\":[41.3825802,2.177073],\"cantidad\":6},\"Villanueva Del Pardillo\":{\"coords\":[40.4949232,-3.9600065],\"cantidad\":6},\"San Sebasti\\u00e1n De Los Reyes\":{\"coords\":[40.5473698,-3.6260586],\"cantidad\":5},\"Mislata\":{\"coords\":[39.4751444,-0.4179125],\"cantidad\":5},\"Ibiza\":{\"coords\":[38.9743901,1.4197463],\"cantidad\":4},\"Val\\u00e8ncia\":{\"coords\":[39.4697065,-0.3763353],\"cantidad\":3},\"Beniarj\\u00f3\":{\"coords\":[38.9324698,-0.1870182],\"cantidad\":2},\"Villaviciosa De Od\\u00f3n\":{\"coords\":[40.3573787,-3.9002334],\"cantidad\":2},\"La Xara\":{\"coords\":[38.8229701,0.0638344],\"cantidad\":2},\"Almer\\u00eda\":{\"coords\":[36.8685739,-2.3120282],\"cantidad\":2},\"Denia\":{\"coords\":[38.8408382,0.1061105],\"cantidad\":2},\"Alboraya\":{\"coords\":[39.5010119,-0.3499577],\"cantidad\":2},\"Torrejon De Ardoz\":{\"coords\":[40.4587767,-3.4793343],\"cantidad\":2},\"Sa Pobla\":{\"coords\":[39.7697409,3.0246803],\"cantidad\":2},\"Bilbao\":{\"coords\":[43.2630018,-2.9350039],\"cantidad\":2},\"Chatou\":{\"coords\":[48.8897044,2.1573695],\"cantidad\":2},\"La Coru\\u00f1a\":{\"coords\":[43.3454621,-8.4138519],\"cantidad\":1},\"Masanasa\":{\"coords\":[39.4108561,-0.4000846],\"cantidad\":1},\"Pamplona\\\/Iru\\u00f1a\":{\"coords\":[42.815686,-1.6522353],\"cantidad\":1},\"Rotova\":{\"coords\":[38.9325529,-0.2580968],\"cantidad\":1},\"Venturada\":{\"coords\":[40.7984762,-3.6207276],\"cantidad\":1},\"Sant Lloren\\u00e7 De Bal\\u00e0fia (Ibiza)\":{\"coords\":[39.0315086,1.4766655],\"cantidad\":1},\"Oleiros\":{\"coords\":[43.3548372,-8.3290882],\"cantidad\":1},\"Tavernes De La Valldigna\":{\"coords\":[39.0715565,-0.2678045],\"cantidad\":1},\"Elx\":{\"coords\":[38.2653307,-0.6988391],\"cantidad\":1},\"A Lama\":{\"coords\":[42.4153636,-8.3865621],\"cantidad\":1},\"Calp\":{\"coords\":[38.6443252,0.046012],\"cantidad\":1},\"D\\u00e9nia, Espagne\":{\"coords\":[38.8408382,0.1061105],\"cantidad\":1},\"Palma De Gand\\u00eda\":{\"coords\":[38.9249523,-0.2210245],\"cantidad\":1},\"Potries\":{\"coords\":[38.915234,-0.1949104],\"cantidad\":1},\"Alzira\":{\"coords\":[39.151212,-0.4346556],\"cantidad\":1},\"X\\u00e0bia\\\/J\\u00e1vea\":{\"coords\":[38.7893804,0.1634168],\"cantidad\":1},\"Santa Eul\\u00e0ria Des Riu\":{\"coords\":[38.9910587,1.474252],\"cantidad\":1},\"Palmera\":{\"coords\":[38.9417448,-0.1537426],\"cantidad\":1},\"Yegen\\\/Alpujarra De La Sierra\":{\"coords\":[36.9827081,-3.1187286],\"cantidad\":1},\"Santiago De Compostela\":{\"coords\":[42.9064576,-8.5192983],\"cantidad\":1},\"Valldoreix\":{\"coords\":[41.4574698,2.0476516],\"cantidad\":1},\"Zaragoza\":{\"coords\":[41.6915847,-0.9101268],\"cantidad\":1},\"Benet\\u00fasser\":{\"coords\":[39.4228928,-0.3974783],\"cantidad\":1},\"Foios\":{\"coords\":[39.5381541,-0.3561396],\"cantidad\":1},\"Torell\\u00f3\":{\"coords\":[42.0478304,2.2643391],\"cantidad\":1}};\n        var ciudadesArray = [];\n\n        for (var ciudad in datosMapa) {\n            if (datosMapa.hasOwnProperty(ciudad)) {\n                ciudadesArray.push({\n                    nombre: ciudad,\n                    lat: datosMapa[ciudad].coords[0],\n                    lon: datosMapa[ciudad].coords[1],\n                    cantidad: datosMapa[ciudad].cantidad\n                });\n            }\n        }\n\n        var map = new maplibregl.Map({\n            container: 'mm-real-leaflet-map',\n            style: 'https:\/\/basemaps.cartocdn.com\/gl\/positron-gl-style\/style.json?mapid=9840e590-188d-4011-8ddf-d4bdff4c6618&key=eyJhbGciOiJIUzI1NiJ9.eyJhIjoiYWN_2n1ltcxajIiLCJqdGkiOiIyMjc1ZmU0YiJ9.gDXz6SYlCVm3L9S6uWhWoHGGV6UDUypWaKPtSnt5rDg',\n            center: [0, 20],\n            zoom: 2,\n            minZoom: 1,\n            maxZoom: 11,\n            attributionControl: false\n        });\n\n        window.mmGlobalZIndex = 1;\n\n        document.getElementById('mm-zoom-in').addEventListener('click', function() {\n            if (map.getZoom() < 11) {\n                map.zoomIn({ duration: 300 });\n            }\n        });\n        document.getElementById('mm-zoom-out').addEventListener('click', function() {\n            if (map.getZoom() > map.getMinZoom()) {\n                map.zoomOut({ duration: 300 });\n            }\n        });\n\n        if (ciudadesArray.length > 0) {\n            var bounds = new maplibregl.LngLatBounds();\n            ciudadesArray.forEach(function(i) {\n                bounds.extend([i.lon, i.lat]);\n            });\n            map.fitBounds(bounds, { padding: 50, maxZoom: 10 });\n        }\n\n        window.mmCustomMarkers = [];\n\n        function actualizarCapasMapa() {\n            if (window.mmCustomMarkers) {\n                window.mmCustomMarkers.forEach(function(m) { m.remove(); });\n            }\n            window.mmCustomMarkers = [];\n\n            if (ciudadesArray.length === 0) return;\n\n            var minCant = Math.min.apply(null, ciudadesArray.map(function(i) { return i.cantidad; }));\n            var maxCant = Math.max.apply(null, ciudadesArray.map(function(i) { return i.cantidad; }));\n\n            var maxRadiusPxPermitido = ladoMenorMapPx * 0.055; \n            var minRadiusPx = ladoMenorMapPx * 0.026; \n\n            var circulosProcesados = ciudadesArray.map(function(item) {\n                var radioPx;\n                if (maxCant === minCant) {\n                    radioPx = (minRadiusPx + maxRadiusPxPermitido) \/ 2;\n                } else {\n                    var proporcion = (item.cantidad - minCant) \/ (maxCant - minCant);\n                    radioPx = minRadiusPx + (proporcion * (maxRadiusPxPermitido - minRadiusPx));\n                }\n                \n                if (radioPx > maxRadiusPxPermitido) {\n                    radioPx = maxRadiusPxPermitido;\n                }\n\n                return {\n                    item: item,\n                    radiusPx: radioPx,\n                    agrupado: false\n                };\n            });\n\n            var grupos = [];\n\n            for (var i = 0; i < circulosProcesados.length; i++) {\n                if (circulosProcesados[i].agrupado) continue;\n\n                var grupoActual = [circulosProcesados[i]];\n                circulosProcesados[i].agrupado = true;\n\n                var cambiado = true;\n                while (cambiado) {\n                    cambiado = false;\n                    for (var j = 0; j < circulosProcesados.length; j++) {\n                        if (circulosProcesados[j].agrupado) continue;\n\n                        for (var g = 0; g < grupoActual.length; g++) {\n                            var c1 = grupoActual[g];\n                            var c2 = circulosProcesados[j];\n\n                            var p1 = map.project([c1.item.lon, c1.item.lat]);\n                            var p2 = map.project([c2.item.lon, c2.item.lat]);\n                            var distanciaPx = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n\n                            if (distanciaPx <= (c1.radiusPx + c2.radiusPx)) {\n                                grupoActual.push(c2);\n                                c2.agrupado = true;\n                                cambiado = true;\n                                break;\n                            }\n                        }\n                    }\n                }\n                grupos.push(grupoActual);\n            }\n\n            grupos.forEach(function(grupo) {\n                if (grupo.length === 1) {\n                    var c = grupo.shift();\n                    var el = document.createElement('div');\n                    var zoomActual = map.getZoom();\n                    var mostrarNombre = zoomActual >= 8;\n                    var diametroPx = c.radiusPx * 2;\n\n                    if (mostrarNombre) {\n                        el.style.display = 'flex';\n                        el.style.alignItems = 'center';\n                        el.style.gap = '6px';\n                        el.style.background = 'rgba(255, 255, 255, 0.95)';\n                        el.style.padding = '2px 8px 2px 2px';\n                        el.style.borderRadius = '20px';\n                        el.style.boxShadow = '0 2px 6px rgba(0,0,0,0.2)';\n                        el.style.border = '1px solid #cbd5e1';\n                        el.style.whiteSpace = 'nowrap';\n                        el.style.cursor = 'pointer';\n\n                        el.innerHTML = '<div style=\"width:' + diametroPx + 'px; height:' + diametroPx + 'px; background-color:#529ed6; border:1.5px solid #ffffff; border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0;\"><span style=\"color:#ffffff; font-weight:bold; font-size:' + Math.max(10, Math.floor(diametroPx * 0.38)) + 'px; font-family:sans-serif; line-height:1;\">' + c.item.cantidad + '<\/span><\/div>' +\n                                     '<span style=\"font-family:sans-serif; font-size:12px; font-weight:600; color:#1e293b; padding-right:4px;\">' + c.item.nombre + '<\/span>';\n                    } else {\n                        el.style.width = diametroPx + 'px';\n                        el.style.height = diametroPx + 'px';\n                        el.style.backgroundColor = '#529ed6';\n                        el.style.border = '1.5px solid #ffffff';\n                        el.style.borderRadius = '50%';\n                        el.style.opacity = '0.90';\n                        el.style.cursor = 'pointer';\n                        el.style.display = 'flex';\n                        el.style.alignItems = 'center';\n                        el.style.justifyContent = 'center';\n                        el.style.boxShadow = '0 2px 4px rgba(0,0,0,0.15)';\n\n                        el.innerHTML = '<span style=\"color: #ffffff; font-weight: bold; font-size: ' + Math.max(10, Math.floor(diametroPx * 0.38)) + 'px; font-family: sans-serif; line-height: 1;\">' + c.item.cantidad + '<\/span>';\n                    }\n\n                    var popup = new maplibregl.Popup({ offset: 10, closeButton: false }).setHTML(\n                        \"<div style='font-family:sans-serif; text-align:center;'><b style='color:#1e293b; font-size:14px;'>\" + c.item.nombre + \"<\/b><br><span style='font-size:12px; color:#529ed6;'>\" + c.item.cantidad + \" subastas ganadas<\/span><\/div>\"\n                    );\n\n                    var marker = new maplibregl.Marker({ element: el })\n                        .setLngLat([c.item.lon, c.item.lat])\n                        .setPopup(popup)\n                        .addTo(map);\n\n                    el.addEventListener('click', function(e) {\n                        e.stopPropagation();\n                        window.mmGlobalZIndex++;\n                        var markerWrapper = marker.getElement().parentElement;\n                        if (markerWrapper) {\n                            markerWrapper.style.zIndex = window.mmGlobalZIndex;\n                        }\n\n                        var currentZoom = map.getZoom();\n                        if (currentZoom < 10) {\n                            var targetZoom = Math.min(currentZoom + 2, 10);\n                            map.flyTo({\n                                center: [c.item.lon, c.item.lat],\n                                zoom: targetZoom,\n                                duration: 800\n                            });\n                        } else {\n                            map.easeTo({\n                                center: [c.item.lon, c.item.lat],\n                                duration: 400\n                            });\n                        }\n                    });\n\n                    window.mmCustomMarkers.push(marker);\n                } else {\n                    var totalSubastasGrupo = 0;\n                    var nombresCiudades = [];\n                    var lonPonderadaSuma = 0;\n                    var latPonderadaSuma = 0;\n                    var maxRadioPxGrupo = 0;\n                    var grupoBounds = new maplibregl.LngLatBounds();\n\n                    grupo.forEach(function(c) {\n                        totalSubastasGrupo += c.item.cantidad;\n                        nombresCiudades.push(c.item.nombre + ' (' + c.item.cantidad + ')');\n                        lonPonderadaSuma += c.item.lon * c.item.cantidad;\n                        latPonderadaSuma += c.item.lat * c.item.cantidad;\n                        grupoBounds.extend([c.item.lon, c.item.lat]);\n                        if (c.radiusPx > maxRadioPxGrupo) {\n                            maxRadioPxGrupo = c.radiusPx;\n                        }\n                    });\n\n                    var centroLon = lonPonderadaSuma \/ totalSubastasGrupo;\n                    var centroLat = latPonderadaSuma \/ totalSubastasGrupo;\n                    var radioUnificadoPx = Math.min(maxRadioPxGrupo * 1.10, maxRadiusPxPermitido);\n\n                    var el = document.createElement('div');\n                    var diametroPx = radioUnificadoPx * 2;\n                    el.style.width = diametroPx + 'px';\n                    el.style.height = diametroPx + 'px';\n                    el.style.backgroundColor = '#529ed6';\n                    el.style.border = '1.5px solid #ffffff';\n                    el.style.borderRadius = '50%';\n                    el.style.opacity = '0.90';\n                    el.style.cursor = 'pointer';\n                    el.style.display = 'flex';\n                    el.style.alignItems = 'center';\n                    el.style.justifyContent = 'center';\n                    el.style.boxShadow = '0 2px 4px rgba(0,0,0,0.15)';\n\n                    el.innerHTML = '<span style=\"color: #ffffff; font-weight: bold; font-size: ' + Math.max(10, Math.floor(diametroPx * 0.38)) + 'px; font-family: sans-serif; line-height: 1;\">' + totalSubastasGrupo + '<\/span>';\n\n                    var contenidoPopup = \"<div style='font-family:sans-serif; text-align:center;'><b style='color:#1e293b; font-size:14px;'>Zona Combinada<\/b><br><span style='font-size:12px; color:#64748b;'>\" + nombresCiudades.join(', ') + \"<\/span><br><b style='font-size:12px; color:#d4af37; margin-top:4px; display:inline-block;'>Total: \" + totalSubastasGrupo + \" subastas<\/b><br><span style='font-size:10px; color:#94a3b8; display:block; margin-top:2px;'>(Haz clic para expandir y separar)<\/span><\/div>\";\n\n                    var popup = new maplibregl.Popup({ offset: 10, closeButton: false }).setHTML(contenidoPopup);\n\n                    var marker = new maplibregl.Marker({ element: el })\n                        .setLngLat([centroLon, centroLat])\n                        .setPopup(popup)\n                        .addTo(map);\n\n                    el.addEventListener('click', function(e) {\n                        e.stopPropagation();\n                        window.mmGlobalZIndex++;\n                        var markerWrapper = marker.getElement().parentElement;\n                        if (markerWrapper) {\n                            markerWrapper.style.zIndex = window.mmGlobalZIndex;\n                        }\n\n                        map.fitBounds(grupoBounds, {\n                            padding: { top: 70, bottom: 70, left: 70, right: 70 },\n                            maxZoom: 10,\n                            duration: 800\n                        });\n                    });\n\n                    window.mmCustomMarkers.push(marker);\n                }\n            });\n        }\n\n        map.on('load', function() {\n            actualizarCapasMapa();\n        });\n\n        map.on('moveend', function() {\n            actualizarCapasMapa();\n        });\n    });\n    <\/script>\n    \n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Posizione dei vincitori<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"slim_seo":{"title":"Dati e statistiche dell&#039;asta - Marroiak","description":"Posizione dei vincitori"},"footnotes":""},"class_list":["post-61988","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.marroiak.com\/it\/wp-json\/wp\/v2\/pages\/61988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marroiak.com\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.marroiak.com\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.marroiak.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marroiak.com\/it\/wp-json\/wp\/v2\/comments?post=61988"}],"version-history":[{"count":0,"href":"https:\/\/www.marroiak.com\/it\/wp-json\/wp\/v2\/pages\/61988\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.marroiak.com\/it\/wp-json\/wp\/v2\/media?parent=61988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}