{"id":24602,"date":"2023-07-28T08:38:31","date_gmt":"2026-04-24T21:20:16","guid":{"rendered":"https:\/\/culturasconstructivas.org\/?page_id=24602"},"modified":"2026-07-08T09:39:22","modified_gmt":"2026-07-08T07:39:22","slug":"map","status":"publish","type":"page","link":"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/","title":{"rendered":"Map of published works"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"24602\" class=\"elementor elementor-24602\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ef8bd86 e-con-full custom-cs-map e-flex e-con e-parent\" data-id=\"ef8bd86\" data-element_type=\"container\" data-e-type=\"container\" id=\"custom-cs-id-map\">\n\t\t<div class=\"elementor-element elementor-element-97cfe8c e-con-full e-flex e-con e-child\" data-id=\"97cfe8c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5501e5f elementor-widget__width-inherit elementor-widget elementor-widget-shortcode\" data-id=\"5501e5f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!DOCTYPE html>\n<html>\n<head>\n    <script src=\"https:\/\/apis.google.com\/js\/api.js\"><\/script>\n    <style>\n\n        #map { \n            height: 100%; \n            width: 100%;\n            position: relative;\n        }\n        .custom-cs-map .gm-style-iw-chr {\n            height: 35px;\n        }\n        .custom-cs-map .gm-style-iw-chr .gm-ui-hover-effect{\n            height: 35px !important;\n        }\n        .custom-cs-map .gm-style-iw-chr .gm-ui-hover-effect span{\n            margin-bottom: 0px !important;\n            margin-top: 0px !important;\n        }\n        .info-content {\n            padding-bottom: 17.5px;\n        }\n\n        .custom-map-fnc-main-container{\n            display: flex;\n            flex-direction: row-reverse;\n            gap: 20px;\n            \/* padding: 20px; *\/\n            padding-left: 0px !important;\n            padding-right: 0px !important;\n            min-width: 0;\n            position: relative;\n            align-items: flex-start;\n        }\n        .custom-map-fnc {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            position: relative;\n            width: 100%;\n            min-width: 0;\n            height: 100vh;\n            max-height: 100vh;\n            overflow: hidden;\n        }\n        .locations-parent-full-container {\n            display: flex;\n            flex-direction: column;\n            position: absolute;\n            left: 10px;\n            top: 0px;\n            height: 100%;\n            height: 100%;\n            max-height: 100%;\n            overflow: hidden;\n        }\n        .filters-cs-container {\n            display: flex;\n            flex-direction: column;\n            gap: 12px;\n            margin-bottom: 16px;\n            padding-right: 10px;\n        }\n\n        .filters-cs-container select {\n            padding: 10px 12px;\n            min-width: 180px;\n            border: 1px solid #ccc;\n            background: white;\n            border-radius: 6px;\n            font-size: 14px;\n            color: black;\n            outline: none;\n        }\n\n        .location-information-link {\n            margin-left: 0px;\n            color: black;\n        }\n\n        #loading-map {\n            display: none;\n            position: absolute;\n            top: 50%;\n            left: 50%;\n            transform: translate(-50%, -50%);\n            background-color: rgba(255, 255, 255, 0.8);\n            padding: 20px;\n            box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);\n            z-index: 9999;\n        }\n\n        .locations-container {\n            display: block;\n            width: 100%;\n            max-width: 300px;\n            height: 100%;\n            max-height: 100%;\n            overflow-y: auto;\n            overflow-x: hidden;\n            overscroll-behavior: contain;\n            -webkit-overflow-scrolling: touch;\n            min-width: 0;\n        }\n\n        .location-item {\n            display: flex;\n            flex-direction: column;\n            align-items: flex-start;\n            padding: 15px;\n            padding-left: 0px;\n            padding-right: 0px;\n            border-bottom: 1px solid #ccc;\n            margin-bottom: 10px;\n\n            cursor: pointer;\n            background: white;\n            border-radius: 8px;\n            transition: transform 0.2s ease;\n            overflow: hidden;\n        }\n\n        .location-item:hover {\n            transform: translateY(-2px);\n            background-color: #f8f8f8;\n        }\n\n        .location-item img {\n            position: relative;\n            width: 100%;\n            height: 100%;\n            margin-right: 0px;\n            object-fit: cover;\n        }\n\n        .location-details {\n            display: flex;\n            flex-direction: column;\n            width: 100%;\n        }\n\n        .upper-title{\n            color: black;\n        }\n\n        .address-info,\n        .location-information-div,\n        .location-address p {\n            color: black;\n        }\n        .location-address {\n            position: relative;\n            width: 94%;\n            left: 3%;\n        }\n\n        .address-info,\n        .address-title-info,\n        .address-year-info {\n            max-width: 90%;\n            padding-left: 10px;\n            font-family: \"Montserrat\" !important;\n        }\n        .address-info {\n            font-size: 0.75rem;\n        }\n        .address-year-info {\n            font-size: 0.65rem;\n            margin-top: 8px !important;\n        }\n        \n        .address-title-info {\n            font-weight: bold;\n            font-size: 0.8rem;\n            margin-bottom: 8px !important;\n        }\n\n        .directions-container a {\n            color: black;\n        }\n\n        .location-title-heading {\n            color: black;\n            font-size: 1.2rem;\n            overflow: hidden;\n            text-overflow: ellipsis;\n        }\n\n        .location-title-paragraph {\n            font-size: 0.8rem;\n            margin-top: 0px !important;\n            margin-bottom: 8px !important;\n            word-break: break-word; \n            color: black;\n            font-weight: bold;\n        }\n        \n        .location-year-paragraph {\n            font-size: 0.65rem;\n            margin-top: 8px !important;\n            margin-bottom: 0px !important;\n            color: gray;\n            font-weight: 400;\n            font-family: \"Montserrat\" !important;\n        }\n        .location-address-paragraph {\n            font-size: 0.75rem;\n            margin-top: 0;\n            margin-bottom: 0px !important;\n            color: black;\n            font-weight: 400;\n            font-family: \"Montserrat\" !important;\n        }\n\n        .location-meta {\n            font-size: 0.92rem;\n            color: black;\n            margin-top: 5px;\n            line-height: 1.4;\n        }\n        .location-image-parent {\n            width: 100%;\n            height: 200px;\n\n        }\n\n        @media screen and (max-width: 768px) {\n            .custom-map-fnc-main-container {\n                flex-direction: column;\n                gap: 10px;\n                padding: 0px;\n                \/* display: none; *\/\n            }\n            \n            .custom-map-fnc,\n            .locations-container,\n            .locations-parent-full-container {\n                width: 100% !important;\n                height: 100% !important;\n                flex: none !important;\n            }\n            \n            .locations-container {\n                padding-right: 0;\n                gap: 15px;\n                grid-template-columns: 1fr;\n            }\n\n            .filters-cs-container {\n                gap: 8px;\n                margin-bottom: 10px;\n                padding: 10px;\n            }\n\n            .filters-cs-container select {\n                min-width: 100%;\n            }\n        }\n\n        @media screen and (max-width: 480px) {\n            .location-title-heading {\n                font-size: 1rem;\n            }\n            \n            .location-title-paragraph {\n                font-size: 0.9rem;\n            }\n        }\n        @media screen and (max-width: 650px) {\n            \n            .location-title-paragraph {\n                margin: 0px !important;\n            }\n        }\n\n        .gm-style-iw {\n            max-width: 300px !important;\n            min-width: 200px !important;\n        }\n\n        .info-content img {\n            max-width: 100%;\n            height: auto;\n            display: block;\n            margin: 0 auto;\n            margin-bottom: 0px;\n        }\n\n        .gm-style-iw-d {\n            overflow: auto !important;\n        }\n\n        .upper-title {\n            font-size: 1.2rem;\n            margin-bottom: 10px;\n            word-wrap: break-word;\n        }\n\n        .info-content {\n            max-width: 300px;\n            max-height: 80vh;\n            overflow-y: auto;\n        }\n\n        .info-content img {\n            width: 100%;\n            height: 100%;\n            display: block;\n        }\n\n        .gm-style .gm-style-iw-c {\n            padding-left: 0px !important;\n        }\n\n        .no-results {\n            padding: 20px;\n            color: black;\n            background: white;\n            border-radius: 8px;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n            grid-column: 1 \/ -1;\n        }\n\n        .filter-select-wrap {\n            position: relative;\n            width: 100%;\n        }\n\n        .filter-select-wrap select {\n            width: 100%;\n            padding-right: 48px;\n        }\n\n        .clear-filter-btn {\n            position: absolute;\n            right: 28px;\n            top: 50%;\n            transform: translateY(-50%);\n            width: 18px;\n            height: 18px;\n            border: none;\n            background: transparent;\n            color: #666;\n            font-size: 16px;\n            line-height: 18px;\n            padding: 0;\n            cursor: pointer;\n            display: none;\n        }\n\n        .clear-filter-btn:hover {\n            color: black;\n        }\n\n        .filter-select-wrap.has-value .clear-filter-btn {\n            display: block;\n        }\n\n        \/* SCROLLBAR *\/\n        .locations-container::-webkit-scrollbar {\n            width: 8px;\n        }\n\n        .locations-container::-webkit-scrollbar-track {\n            background: transparent;\n        }\n\n        .locations-container::-webkit-scrollbar-thumb {\n            background: rgba(0, 0, 0, 0.35);\n            border-radius: 999px;\n        }\n\n        .locations-container::-webkit-scrollbar-thumb:hover {\n            background: rgba(0, 0, 0, 0.55);\n        }\n\n        \/* MOBILE  *\/\n        @media screen and (max-width: 800px) {\n            #map {\n                height: 100vh;\n            }\n            .custom-map-fnc-main-container {\n                padding: 0px;\n            }\n            .locations-parent-full-container {\n                width: 100%;\n                left: 0px;\n                pointer-events: none;\n            }\n            .filters-cs-container {\n                position: absolute;\n                pointer-events: all !important;\n                width: 100%;\n                max-width: 200px;\n                left: 10px;\n                top: 10px;\n                background: transparent;\n                margin: 0px;\n                padding: 0px;\n            }\n            .locations-container {\n                display: flex;\n                position: absolute;\n                bottom: 0px;\n                overflow-x: auto;\n                pointer-events: all !important;\n                width: 100% !important;\n                max-width: 100% !important;\n                padding: 0px;\n                gap: 10px;\n                height: 150px !important;\n            }\n            .location-item {\n                flex-direction: row;\n                height: 100px;\n                padding: 0px;\n                border-radius: 8px;\n                gap: 7px;\n                overflow: visible;\n            }\n            .location-image-parent {\n                width: 120px;\n                height: 100%;\n            }\n            .location-item img {\n                width: 100%;\n                height: 100%;\n                padding: 0px;\n                object-fit: cover;\n            }\n            .location-details {\n                height: 100%;\n                width: 200px;\n                justify-content: space-between;\n            }\n            .location-address {\n                left: 0%;\n            }\n            .location-address .location-title-paragraph {\n                display: -webkit-box;\n                -webkit-line-clamp: 2;\n                -webkit-box-orient: vertical;\n                overflow: hidden;\n            }\n            .location-address .location-address-paragraph {\n                display: -webkit-box;\n                -webkit-line-clamp: 1;\n                -webkit-box-orient: vertical;\n                overflow: hidden;\n            }\n            .info-content img {\n                height: 150px;\n                object-fit: cover;\n            }\n            .location-meta {\n                font-size: 0.8rem;\n            }\n        }\n\n    <\/style>\n<\/head>\n<body>\n    <div class=\"custom-map-fnc-main-container\">\n        <div class=\"custom-map-fnc\" id=\"map-container\">\n            <div id=\"loading-map\">Map Loading<\/div>\n            <div id=\"map\"><\/div>\n        <\/div>\n        \n        <div class=\"locations-parent-full-container\">\n            <div class=\"filters-cs-container\">\n                <div class=\"filter-select-wrap\">\n                    <select id=\"architect-filter\">\n                        <option value=\"\">Filtrar por Iniciativa<\/option>\n                    <\/select>\n                    <button type=\"button\" class=\"clear-filter-btn\" data-target=\"architect-filter\" aria-label=\"Clear Architect filter\">&times;<\/button>\n                <\/div>\n            \n                <div class=\"filter-select-wrap\">\n                    <select id=\"country-filter\">\n                        <option value=\"\">Filtrar por Intervenci\u00f3n<\/option>\n                    <\/select>\n                    <button type=\"button\" class=\"clear-filter-btn\" data-target=\"country-filter\" aria-label=\"Clear Country filter\">&times;<\/button>\n                <\/div>\n            \n                <div class=\"filter-select-wrap\">\n                    <select id=\"city-filter\">\n                        <option value=\"\">Filtrar por T\u00e9cnica<\/option>\n                    <\/select>\n                    <button type=\"button\" class=\"clear-filter-btn\" data-target=\"city-filter\" aria-label=\"Clear City filter\">&times;<\/button>\n                <\/div>\n            <\/div>\n\n            <div class=\"locations-container\" id=\"locations-container\"><\/div>\n        <\/div>\n    <\/div>\n\n<script>\nlet map, cinemasData = [], markers = [], filteredData = [], markerCluster = null;\n\nconst mapStyles = [\n    {\n        \"featureType\": \"all\",\n        \"elementType\": \"geometry\",\n        \"stylers\": [{ \"color\": \"#f5f5f5\" }]\n    },\n    {\n        \"featureType\": \"all\",\n        \"elementType\": \"labels.text.fill\",\n        \"stylers\": [{ \"color\": \"#616161\" }]\n    },\n    {\n        \"featureType\": \"all\",\n        \"elementType\": \"labels.text.stroke\",\n        \"stylers\": [{ \"color\": \"#f5f5f5\" }]\n    },\n    {\n        \"featureType\": \"all\",\n        \"elementType\": \"labels.icon\",\n        \"stylers\": [{ \"visibility\": \"off\" }]\n    },\n    {\n        \"featureType\": \"administrative.country\",\n        \"elementType\": \"geometry\",\n        \"stylers\": [\n            { \"color\": \"#9e9e9e\" },\n            { \"lightness\": 35 },\n            { \"weight\": 0.5 }\n        ]\n    },\n    {\n        \"featureType\": \"administrative.province\",\n        \"elementType\": \"all\",\n        \"stylers\": [{ \"visibility\": \"off\" }]\n    },\n    {\n        \"featureType\": \"administrative.land_parcel\",\n        \"elementType\": \"labels.text.fill\",\n        \"stylers\": [{ \"color\": \"#bdbdbd\" }]\n    },\n    {\n        \"featureType\": \"poi\",\n        \"elementType\": \"geometry\",\n        \"stylers\": [{ \"color\": \"#eeeeee\" }]\n    },\n    {\n        \"featureType\": \"poi\",\n        \"elementType\": \"labels.text.fill\",\n        \"stylers\": [{ \"color\": \"#757575\" }]\n    },\n    {\n        \"featureType\": \"poi.park\",\n        \"elementType\": \"labels.text\",\n        \"stylers\": [{ \"visibility\": \"off\" }]\n    },\n    {\n        \"featureType\": \"poi.park\",\n        \"elementType\": \"labels.text.fill\",\n        \"stylers\": [{ \"color\": \"#9e9e9e\" }]\n    },\n    {\n        \"featureType\": \"road\",\n        \"elementType\": \"geometry\",\n        \"stylers\": [{ \"color\": \"#ffffff\" }]\n    },\n    {\n        \"featureType\": \"road.highway\",\n        \"elementType\": \"geometry\",\n        \"stylers\": [{ \"color\": \"#dadada\" }]\n    },\n    {\n        \"featureType\": \"road.highway\",\n        \"elementType\": \"labels\",\n        \"stylers\": [{ \"visibility\": \"off\" }]\n    },\n    {\n        \"featureType\": \"road.highway\",\n        \"elementType\": \"labels.text.fill\",\n        \"stylers\": [{ \"color\": \"#616161\" }]\n    },\n    {\n        \"featureType\": \"road.arterial\",\n        \"elementType\": \"labels\",\n        \"stylers\": [{ \"visibility\": \"off\" }]\n    },\n    {\n        \"featureType\": \"road.arterial\",\n        \"elementType\": \"labels.text.fill\",\n        \"stylers\": [{ \"color\": \"#757575\" }]\n    },\n    {\n        \"featureType\": \"road.local\",\n        \"elementType\": \"all\",\n        \"stylers\": [{ \"visibility\": \"off\" }]\n    },\n    {\n        \"featureType\": \"road.local\",\n        \"elementType\": \"labels.text.fill\",\n        \"stylers\": [{ \"color\": \"#9e9e9e\" }]\n    },\n    {\n        \"featureType\": \"transit.line\",\n        \"elementType\": \"geometry\",\n        \"stylers\": [\n            { \"color\": \"#e5e5e5\" },\n            { \"visibility\": \"off\" }\n        ]\n    },\n    {\n        \"featureType\": \"transit.station\",\n        \"elementType\": \"all\",\n        \"stylers\": [{ \"visibility\": \"off\" }]\n    },\n    {\n        \"featureType\": \"transit.station\",\n        \"elementType\": \"geometry\",\n        \"stylers\": [{ \"color\": \"#eeeeee\" }]\n    },\n    {\n        \"featureType\": \"water\",\n        \"elementType\": \"geometry\",\n        \"stylers\": [{ \"color\": \"#c9c9c9\" }]\n    },\n    {\n        \"featureType\": \"water\",\n        \"elementType\": \"labels.text.fill\",\n        \"stylers\": [{ \"color\": \"#9e9e9e\" }]\n    }\n];\n\nfunction loadGoogleMapsAPI() {\n    const clusterScript = document.createElement('script');\n    clusterScript.src = 'https:\/\/unpkg.com\/@googlemaps\/markerclusterer\/dist\/index.min.js';\n    \n    clusterScript.onload = function() {\n        const mapsScript = document.createElement('script');\n        mapsScript.src = 'https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyDo7FVDCvDFE2kAofXeduEHY9VSJ8noV9E&callback=initMap';\n        document.head.appendChild(mapsScript);\n    };\n\n    document.head.appendChild(clusterScript);\n}\n\nfunction handleClientLoad() {\n    gapi.load('client', initClient);\n}\n\nfunction initClient() {\n    gapi.client.init({\n        \/\/ apiKey: 'AIzaSyDo7FVDCvDFE2kAofXeduEHY9VSJ8noV9E',\n        apiKey: 'AIzaSyBAdD2H8lTIld3uqlVN1aPBTweCi0g90d4',\n        discoveryDocs: [\"https:\/\/sheets.googleapis.com\/$discovery\/rest?version=v4\"]\n    }).then(function() {\n        console.log(\"GAPI client initialized\");\n    }, function(error) {\n        console.error(\"Error loading GAPI client for API\", error);\n    });\n}\n\nfunction loadCinemas() {\n    \/\/ const sheetId = '1H7P3Iay7uHM83_Qm9iXPLBySDPYmToik';\n    \/\/ const sheetId = '1N90zgVj9cidiVJoAZn1zxqkdZVnP0337IuncoESCeJs';\n    const sheetId = '160hZOwZYcvbRxaqbO7FQgmCM1AGbhWhBp7X522otv2k';\n    const url = `https:\/\/sheets.googleapis.com\/v4\/spreadsheets\/${sheetId}\/values\/A2:l1000?key=AIzaSyDo7FVDCvDFE2kAofXeduEHY9VSJ8noV9E`;\n\n    fetch(url)\n    .then(response => response.json())\n    .then(data => {\n        cinemasData = (data.values || []).map(row => ({\n            title: row[0] || '',\n            address: row[1] || '',\n            year: row[2] || '',\n            lat: parseFloat(row[3]),\n            lng: parseFloat(row[4]),\n            url: row[5] || '',\n            src: row[6] || '',\n            architect: row[7] || '',\n            country: row[8] || '',\n            city: row[9] || '',\n            color: row[10] || '',\n            markerIcon: row[10] || ''\n        })).filter(item => !isNaN(item.lat) && !isNaN(item.lng));\n\n        filteredData = [...cinemasData];\n        populateFilters();\n        displayCinemasOnMap(filteredData);\n        fitMapToFilteredResults(filteredData);\n        updateVisibleLocations();\n    })\n    .catch(error => console.error('Error fetching data:', error));\n}\n\n    \/\/ function populateFilters() {\n    \/\/     populateDropdown('architect-filter', cinemasData.map(item => item.architect), 'Search by Architect');\n    \/\/     populateDropdown('country-filter', cinemasData.map(item => item.country), 'Search by Country');\n    \/\/     populateDropdown('city-filter', cinemasData.map(item => item.city), 'Search by City');\n\n    \/\/     document.getElementById('architect-filter').addEventListener('change', function() {\n    \/\/         toggleClearButton(this);\n    \/\/         applyFilters();\n    \/\/     });\n\n    \/\/     document.getElementById('country-filter').addEventListener('change', function() {\n    \/\/         toggleClearButton(this);\n    \/\/         applyFilters();\n    \/\/     });\n\n    \/\/     document.getElementById('city-filter').addEventListener('change', function() {\n    \/\/         toggleClearButton(this);\n    \/\/         applyFilters();\n    \/\/     });\n\n    \/\/     document.querySelectorAll('.clear-filter-btn').forEach(button => {\n    \/\/         button.addEventListener('click', function(e) {\n    \/\/             e.preventDefault();\n    \/\/             const targetId = this.getAttribute('data-target');\n    \/\/             const select = document.getElementById(targetId);\n    \/\/             select.value = '';\n    \/\/             toggleClearButton(select);\n    \/\/             applyFilters();\n    \/\/         });\n    \/\/     });\n\n    \/\/     updateAllClearButtons();\n    \/\/ }\n    function populateFilters() {\n        populateArchitectDropdown();\n        populateCountryDropdown();\n        populateCityDropdown();\n        \/\/ populateDropdown('country-filter', cinemasData.map(item => item.country), 'Filtrar por Intervenci\u00f3n');\n        \/\/ populateDropdown('city-filter', cinemasData.map(item => item.city), 'Filtrar por T\u00e9cnica');\n\n        document.getElementById('architect-filter').addEventListener('change', function() {\n            toggleClearButton(this);\n            applyFilters();\n        });\n\n        document.getElementById('country-filter').addEventListener('change', function() {\n            toggleClearButton(this);\n            applyFilters();\n        });\n\n        document.getElementById('city-filter').addEventListener('change', function() {\n            toggleClearButton(this);\n            applyFilters();\n        });\n\n        document.querySelectorAll('.clear-filter-btn').forEach(button => {\n            button.addEventListener('click', function(e) {\n                e.preventDefault();\n                const targetId = this.getAttribute('data-target');\n                const select = document.getElementById(targetId);\n                select.value = '';\n                toggleClearButton(select);\n                applyFilters();\n            });\n        });\n\n        updateAllClearButtons();\n    }\n\n    function populateDropdown(selectId, values, defaultText) {\n        const select = document.getElementById(selectId);\n        select.innerHTML = `<option value=\"\">${defaultText}<\/option>`;\n\n        const uniqueValues = [...new Set(values.filter(v => v && v.trim() !== ''))].sort((a, b) => a.localeCompare(b));\n\n        uniqueValues.forEach(value => {\n            const option = document.createElement('option');\n            option.value = value;\n            option.textContent = value;\n            select.appendChild(option);\n        });\n    }\n\n    function populateArchitectDropdown() {\n        const select = document.getElementById('architect-filter');\n        \/\/ select.innerHTML = `<option value=\"\">Search by Architect<\/option>`;\n        select.innerHTML = `<option value=\"\">Filtrar por Iniciativa<\/option>`;\n\n        const architectMap = new Map();\n\n        cinemasData.forEach(item => {\n            const name = (item.architect || '').trim();\n            const color = (item.color || '').trim();\n\n            if (!name) return;\n\n            if (!architectMap.has(name)) {\n                architectMap.set(name, color);\n            }\n        });\n\n        const sortedArchitects = [...architectMap.entries()].sort((a, b) => a[0].localeCompare(b[0]));\n\n        sortedArchitects.forEach(([name, color]) => {\n            const option = document.createElement('option');\n            option.value = name;\n            option.textContent = name;\n\n            if (color) {\n                option.style.color = color;\n                option.setAttribute('data-color', color);\n            }\n\n            select.appendChild(option);\n        });\n    }\n    function populateCountryDropdown() {\n        const select = document.getElementById('country-filter');\n        \/\/ select.innerHTML = `<option value=\"\">Search by Architect<\/option>`;\n        select.innerHTML = `<option value=\"\">Filtrar por Iniciativa<\/option>`;\n\n        const architectMap = new Map();\n\n        cinemasData.forEach(item => {\n            const name = (item.country || '').trim();\n            const color = (item.color || '').trim();\n\n            if (!name) return;\n\n            if (!architectMap.has(name)) {\n                architectMap.set(name, color);\n            }\n        });\n\n        const sortedArchitects = [...architectMap.entries()].sort((a, b) => a[0].localeCompare(b[0]));\n\n        sortedArchitects.forEach(([name, color]) => {\n            const option = document.createElement('option');\n            option.value = name;\n            option.textContent = name;\n\n            if (color) {\n                option.style.color = color;\n                option.setAttribute('data-color', color);\n            }\n\n            select.appendChild(option);\n        });\n    }\n    function populateCityDropdown() {\n        const select = document.getElementById('city-filter');\n        \/\/ select.innerHTML = `<option value=\"\">Search by Architect<\/option>`;\n        select.innerHTML = `<option value=\"\">Filtrar por Iniciativa<\/option>`;\n\n        const architectMap = new Map();\n\n        cinemasData.forEach(item => {\n            const name = (item.city || '').trim();\n            const color = (item.color || '').trim();\n\n            if (!name) return;\n\n            if (!architectMap.has(name)) {\n                architectMap.set(name, color);\n            }\n        });\n\n        const sortedArchitects = [...architectMap.entries()].sort((a, b) => a[0].localeCompare(b[0]));\n\n        sortedArchitects.forEach(([name, color]) => {\n            const option = document.createElement('option');\n            option.value = name;\n            option.textContent = name;\n\n            if (color) {\n                option.style.color = color;\n                option.setAttribute('data-color', color);\n            }\n\n            select.appendChild(option);\n        });\n    }\nfunction toggleClearButton(select) {\n    const wrapper = select.closest('.filter-select-wrap');\n    if (!wrapper) return;\n\n    if (select.value) {\n        wrapper.classList.add('has-value');\n    } else {\n        wrapper.classList.remove('has-value');\n    }\n}\n\nfunction updateAllClearButtons() {\n    document.querySelectorAll('.filter-select-wrap select').forEach(select => {\n        toggleClearButton(select);\n    });\n}\n\nfunction applyFilters() {\n    const selectedArchitect = document.getElementById('architect-filter').value;\n    const selectedCountry = document.getElementById('country-filter').value;\n    const selectedCity = document.getElementById('city-filter').value;\n\n    filteredData = cinemasData.filter(item => {\n        const matchArchitect = !selectedArchitect || item.architect === selectedArchitect;\n        const matchCountry = !selectedCountry || item.country === selectedCountry;\n        const matchCity = !selectedCity || item.city === selectedCity;\n        return matchArchitect && matchCountry && matchCity;\n    });\n\n    displayCinemasOnMap(filteredData);\n\n    if (filteredData.length > 0) {\n        fitMapToFilteredResults(filteredData);\n    } else {\n        displayLocationsList([]);\n    }\n\n    updateVisibleLocations();\n}\n\nfunction fitMapToFilteredResults(data) {\n    if (!map || !data || !data.length) return;\n\n    const bounds = new google.maps.LatLngBounds();\n\n    data.forEach(item => {\n        bounds.extend(new google.maps.LatLng(item.lat, item.lng));\n    });\n\n    map.fitBounds(bounds);\n\n    \/\/ if (data.length === 1) {\n    \/\/     map.setZoom(15);\n    \/\/ }\n    console.log(\"Filtered results:\", data.length);\n    \/\/ if (data.length === 1) {\n    \/\/     map.setZoom(window.innerWidth > 800 ? 15 : 17);\n    \/\/ }\n\n    \/\/ google.maps.event.addListenerOnce(map, 'idle', function () {\n    \/\/ if (window.innerWidth <= 800) {\n    \/\/         map.setZoom(5);\n    \/\/     }\n    \/\/ });\n    google.maps.event.addListenerOnce(map, 'idle', function () {\n        if (window.innerWidth > 800) {\n            map.setZoom(map.getZoom() + 1); \/\/ Desktop\n        } else {\n                map.setZoom(map.getZoom() + 1.5); \/\/ Mobile\n        }\n    });\n}\n\nfunction initMap() {\n    const zoomLevel = window.innerWidth > 800 ? 5.2 : 17;\n\n    map = new google.maps.Map(document.getElementById('map'), {\n        center: {\n            lat: 51.91570482027695,\n            lng: 12.973610683735808\n        },\n        zoom: zoomLevel,\n        styles: mapStyles,\n        disableDefaultUI: true\n    });\n\n    map.addListener('idle', updateVisibleLocations);\n    loadCinemas();\n    console.log(\"Zoom after load:\", map.getZoom());\n}\n\nfunction clearMarkersAndCluster() {\n    markers.forEach(obj => {\n        if (obj.marker) obj.marker.setMap(null);\n    });\n    markers = [];\n\n    if (markerCluster) {\n        markerCluster.clearMarkers();\n        markerCluster = null;\n    }\n}\n\nfunction displayCinemasOnMap(data = []) {\n    if (!map) return;\n\n    clearMarkersAndCluster();\n\n    const googleMarkers = [];\n    const markerIcons = {\n        \"#2c402d\" : \"https:\/\/culturasconstructivas.org\/wp-content\/uploads\/2026\/06\/PIN-MAPA-PROYECTOS-4.png\",\n        \"#8e7c36\" : \"https:\/\/culturasconstructivas.org\/wp-content\/uploads\/2026\/06\/PIN-MAPA-PROYECTOS-1.png\",\n        \"#9b674b\" : \"https:\/\/culturasconstructivas.org\/wp-content\/uploads\/2026\/06\/PIN-MAPA-PROYECTOS-2.png\",\n        \"#67635f\" : \"https:\/\/culturasconstructivas.org\/wp-content\/uploads\/2026\/06\/PIN-MAPA-PROYECTOS-3.png\",\n        blank     : \"https:\/\/images.squarespace-cdn.com\/content\/630197a6ac89e2301fb03bcc\/8ab9e8aa-ef1e-4e44-8e5f-557efe407818\/map-marker-2-24.png\"\n    };\n\n    data.forEach(cinema => {\n        const marker = new google.maps.Marker({\n            position: new google.maps.LatLng(cinema.lat, cinema.lng),\n            map: map,\n            \/\/ icon: {  \n            \/\/     url: \"https:\/\/images.squarespace-cdn.com\/content\/630197a6ac89e2301fb03bcc\/8ab9e8aa-ef1e-4e44-8e5f-557efe407818\/map-marker-2-24.png\"\n            \/\/     \/\/ url: \"https:\/\/images.squarespace-cdn.com\/content\/6a25ac4b46c8b145b3ccf9ff\/daa298cb-9043-4899-bac1-98cb08178214\/PIN+MAPA+PROYECTOS+-4.png\"\n            \/\/ },\n            icon: {\n                url: markerIcons[(cinema.color || \"\").trim().toLowerCase()] ||\n                    markerIcons.blank\n            },\n            title: cinema.title\n        });\n\n        \/\/ const infoWindow = new google.maps.InfoWindow({\n        \/\/     content: `\n        \/\/         <div class=\"info-content\">\n        \/\/             <a class=\"location-information-link\" href=\"${cinema.url}\" target=\"_blank\">\n        \/\/                 <img decoding=\"async\" src=\"${cinema.src}\" alt=\"${cinema.title}\">\n        \/\/                 <div class=\"address-title-info\">${cinema.title}<\/div>\n        \/\/                 <br>\n        \/\/                 <div class=\"address-info\">${cinema.address}<\/div>\n        \/\/                 <br>\n        \/\/                 <div class=\"address-info\"><strong>Architect:<\/strong> ${cinema.architect || ''}<\/div>\n        \/\/                 <div class=\"address-info\"><strong>Country:<\/strong> ${cinema.country || ''}<\/div>\n        \/\/                 <div class=\"address-info\"><strong>City:<\/strong> ${cinema.city || ''}<\/div>\n        \/\/             <\/a>\n        \/\/         <\/div>\n        \/\/     `\n        \/\/ });\n        const infoWindow = new google.maps.InfoWindow({\n            content: `\n                <div class=\"info-content\">\n                    <a class=\"location-information-link\" href=\"${cinema.url}\" target=\"_blank\">\n                        <img decoding=\"async\" src=\"${cinema.src}\" alt=\"${cinema.title}\">\n                        <div class=\"address-year-info\">${cinema.year}<\/div>\n                        <div class=\"address-title-info\">${cinema.title}<\/div>\n                        <div class=\"address-info\">${cinema.address}<\/div>\n                    <\/a>\n                <\/div>\n            `\n        });\n\n        marker.addListener('click', function() {\n            infoWindow.open(map, marker);\n        });\n\n        markers.push({\n            marker: marker,\n            lat: cinema.lat,\n            lng: cinema.lng,\n            title: cinema.title\n        });\n\n        googleMarkers.push(marker);\n    });\n\n    if (googleMarkers.length) {\n        markerCluster = new markerClusterer.MarkerClusterer({\n            map,\n            markers: googleMarkers,\n            renderer: {\n                render: ({ count, position }) => new google.maps.Marker({\n                    position,\n                    label: { \n                        text: String(count), \n                        color: \"white\", \n                        fontSize: \"12px\" \n                    },\n                    icon: {\n                        path: google.maps.SymbolPath.CIRCLE,\n                        fillColor: \"black\",\n                        fillOpacity: 0.9,\n                        strokeColor: \"#fff\",\n                        strokeWeight: 2,\n                        scale: 22\n                    }\n                })\n            }\n        });\n    }\n}\n\nfunction updateVisibleLocations() {\n    if (!map || !filteredData) return;\n\n    const bounds = map.getBounds();\n    if (!bounds) return;\n\n    const visibleFilteredData = filteredData.filter(item => {\n        const latLng = new google.maps.LatLng(item.lat, item.lng);\n        return bounds.contains(latLng);\n    });\n\n    displayLocationsList(visibleFilteredData);\n}\n\nfunction displayLocationsList(data = []) {\n    const locationsContainer = document.getElementById('locations-container');\n    locationsContainer.innerHTML = '';\n\n    if (!data.length) {\n        locationsContainer.innerHTML = `<div class=\"no-results\">No properties found in the current visible map area.<\/div>`;\n        return;\n    }\n\n    data.forEach(cinema => {\n        const locationItem = document.createElement('div');\n        locationItem.classList.add('location-item');\n\n        \/\/ locationItem.innerHTML = `\n        \/\/     <img decoding=\"async\" src=\"${cinema.src}\" alt=\"${cinema.title}\">\n        \/\/     <div class=\"location-details\">\n        \/\/         <div class=\"location-address\">\n        \/\/             <p class=\"location-title-paragraph\">${cinema.title}<\/p>\n        \/\/         <\/div>\n        \/\/         <div class=\"location-address\">\n        \/\/             <p class=\"location-address-paragraph\">${cinema.address}<\/p>\n        \/\/         <\/div>\n        \/\/       <!---  <div class=\"location-meta\"><strong>Architect:<\/strong> ${cinema.architect || ''}<\/div>\n        \/\/         <div class=\"location-meta\"><strong>Country:<\/strong> ${cinema.country || ''}<\/div>\n        \/\/         <div class=\"location-meta\"><strong>City:<\/strong> ${cinema.city || ''}<\/div> --->\n        \/\/     <\/div>\n        \/\/ `;\n        locationItem.innerHTML = `\n            <div class=\"location-image-parent\">\n                <img decoding=\"async\" src=\"${cinema.src}\" alt=\"${cinema.title}\">\n            <\/div>\n            <div class=\"location-details\">\n                <div class=\"location-address\">\n                    <p class=\"location-year-paragraph\">${cinema.year}<\/p>\n                <\/div>\n                <div class=\"location-address\">\n                    <p class=\"location-title-paragraph\">${cinema.title}<\/p>\n                <\/div>\n                <div class=\"location-address\">\n                    <p class=\"location-address-paragraph\">${cinema.address}<\/p>\n                <\/div>\n            <\/div>\n        `;\n\n        locationItem.addEventListener('click', function() {\n            map.setCenter({ lat: cinema.lat, lng: cinema.lng });\n            map.setZoom(15);\n\n            const markerObj = markers.find(m => m.lat === cinema.lat && m.lng === cinema.lng);\n            if (markerObj) {\n                google.maps.event.trigger(markerObj.marker, 'click');\n            }\n\n            document.getElementById('map-container').scrollIntoView({ behavior: 'smooth' });\n        });\n\n        locationsContainer.appendChild(locationItem);\n    });\n}\n\nfunction mapCustomHeightMobile() {\n    function getElementVerticalSize(selector) {\n    const el = document.querySelector(selector);\n\n    if (!el) return 0;\n\n    const styles = window.getComputedStyle(el);\n\n    const height = el.offsetHeight;\n    const marginTop = parseFloat(styles.marginTop) || 0;\n    const marginBottom = parseFloat(styles.marginBottom) || 0;\n    const paddingTop = parseFloat(styles.paddingTop) || 0;\n    const paddingBottom = parseFloat(styles.paddingBottom) || 0;\n\n    const total = height + marginTop + marginBottom + paddingTop + paddingBottom;\n\n    return {\n        height,\n        marginTop,\n        marginBottom,\n        paddingTop,\n        paddingBottom,\n        total\n        };\n    }\n\n    const header = getElementVerticalSize('.elementor-location-header');\n    const pageHeader = getElementVerticalSize('.page-header .entry-title');\n\n    const combinedTotal =\n        (header?.total || 0) +\n        (pageHeader?.total || 0);\n\n    const customMap = document.querySelector(\"#custom-cs-id-map .custom-map-fnc-main-container\");\n    const windowHeight = window.innerHeight;\n\n    customMap.style.height = (windowHeight - combinedTotal - 5) + 'px'; \n}\n\nwindow.onload = function() {\n    loadGoogleMapsAPI();\n    handleClientLoad();\n    if (window.innerWidth < 801) {\n        mapCustomHeightMobile();\n    }\n};\n<\/script>\n<\/body>\n<\/html><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Map Loading Filtrar por Iniciativa &times; Filtrar por Intervenci\u00f3n &times; Filtrar por T\u00e9cnica &times;<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":1422,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_piecal_is_event":false,"_piecal_start_date":"","_piecal_end_date":"","_piecal_is_allday":false,"footnotes":""},"class_list":["post-24602","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Map of published works - Fundaci\u00f3n Culturas Constructivas Tradicionales<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Map of published works - Fundaci\u00f3n Culturas Constructivas Tradicionales\" \/>\n<meta property=\"og:description\" content=\"Map Loading Filtrar por Iniciativa &times; Filtrar por Intervenci\u00f3n &times; Filtrar por T\u00e9cnica &times;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/\" \/>\n<meta property=\"og:site_name\" content=\"Fundaci\u00f3n Culturas Constructivas Tradicionales\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-08T07:39:22+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/initiatives\\\/map\\\/\",\"url\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/initiatives\\\/map\\\/\",\"name\":\"Map of published works - Fundaci\u00f3n Culturas Constructivas Tradicionales\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/#website\"},\"datePublished\":\"2026-04-24T21:20:16+00:00\",\"dateModified\":\"2026-07-08T07:39:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/initiatives\\\/map\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/initiatives\\\/map\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/initiatives\\\/map\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/traditional-constructive-cultures-foundation\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Map of published works\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/\",\"name\":\"Fundaci\u00f3n Culturas Constructivas Tradicionales\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/#organization\",\"name\":\"Fundaci\u00f3n Culturas Constructivas Tradicionales\",\"url\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/culturasconstructivas.org\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/BUILDING-CULTURES-FOUNDATION-Logo.png\",\"contentUrl\":\"https:\\\/\\\/culturasconstructivas.org\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/BUILDING-CULTURES-FOUNDATION-Logo.png\",\"width\":538,\"height\":290,\"caption\":\"Fundaci\u00f3n Culturas Constructivas Tradicionales\"},\"image\":{\"@id\":\"https:\\\/\\\/culturasconstructivas.org\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Map of published works - Fundaci\u00f3n Culturas Constructivas Tradicionales","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/","og_locale":"en_US","og_type":"article","og_title":"Map of published works - Fundaci\u00f3n Culturas Constructivas Tradicionales","og_description":"Map Loading Filtrar por Iniciativa &times; Filtrar por Intervenci\u00f3n &times; Filtrar por T\u00e9cnica &times;","og_url":"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/","og_site_name":"Fundaci\u00f3n Culturas Constructivas Tradicionales","article_modified_time":"2026-07-08T07:39:22+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/","url":"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/","name":"Map of published works - Fundaci\u00f3n Culturas Constructivas Tradicionales","isPartOf":{"@id":"https:\/\/culturasconstructivas.org\/en\/#website"},"datePublished":"2026-04-24T21:20:16+00:00","dateModified":"2026-07-08T07:39:22+00:00","breadcrumb":{"@id":"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/culturasconstructivas.org\/en\/initiatives\/map\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/culturasconstructivas.org\/en\/traditional-constructive-cultures-foundation\/"},{"@type":"ListItem","position":2,"name":"Map of published works"}]},{"@type":"WebSite","@id":"https:\/\/culturasconstructivas.org\/en\/#website","url":"https:\/\/culturasconstructivas.org\/en\/","name":"Fundaci\u00f3n Culturas Constructivas Tradicionales","description":"","publisher":{"@id":"https:\/\/culturasconstructivas.org\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/culturasconstructivas.org\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/culturasconstructivas.org\/en\/#organization","name":"Fundaci\u00f3n Culturas Constructivas Tradicionales","url":"https:\/\/culturasconstructivas.org\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/culturasconstructivas.org\/en\/#\/schema\/logo\/image\/","url":"https:\/\/culturasconstructivas.org\/wp-content\/uploads\/2023\/10\/BUILDING-CULTURES-FOUNDATION-Logo.png","contentUrl":"https:\/\/culturasconstructivas.org\/wp-content\/uploads\/2023\/10\/BUILDING-CULTURES-FOUNDATION-Logo.png","width":538,"height":290,"caption":"Fundaci\u00f3n Culturas Constructivas Tradicionales"},"image":{"@id":"https:\/\/culturasconstructivas.org\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/pages\/24602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/comments?post=24602"}],"version-history":[{"count":262,"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/pages\/24602\/revisions"}],"predecessor-version":[{"id":26278,"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/pages\/24602\/revisions\/26278"}],"up":[{"embeddable":true,"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/pages\/1422"}],"wp:attachment":[{"href":"https:\/\/culturasconstructivas.org\/en\/wp-json\/wp\/v2\/media?parent=24602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}