{"id":1546,"date":"2025-10-17T18:04:10","date_gmt":"2025-10-17T18:04:10","guid":{"rendered":"https:\/\/des-pol.com\/metroreklama\/?page_id=1546"},"modified":"2026-04-14T16:45:19","modified_gmt":"2026-04-14T16:45:19","slug":"map-of-facilities","status":"publish","type":"page","link":"https:\/\/des-pol.com\/metroreklama\/en\/map-of-facilities\/","title":{"rendered":"Map of facilities"},"content":{"rendered":"<div id=\"pl-1546\"  class=\"panel-layout\" ><div id=\"pg-1546-0\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-1546-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-1546-0-0-0\" class=\"so-panel widget widget_themegrill_flash_heading tg-widget section-title-wrapper panel-first-child\" data-index=\"0\" >\t<h3 class=\"section-title\">Map of facilities<\/h3>\n<\/div><div id=\"panel-1546-0-0-1\" class=\"so-panel widget widget_text panel-last-child\" data-index=\"1\" >\t\t\t<div class=\"textwidget\">    <style>\n        .mr-wrap { max-width:100%; font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif; box-sizing:border-box; }\n        .mr-wrap *, .mr-wrap *::before, .mr-wrap *::after { box-sizing:border-box; }\n        .mr-map { width:100%; border-radius:8px; margin-bottom:20px; border:2px solid #e0e0e0; z-index:1; }\n        .mr-filters { display:flex; gap:15px; margin-bottom:20px; flex-wrap:wrap; align-items:center; }\n        .mr-filters label { font-weight:600; font-size:14px; color:#333; }\n        .mr-filters select { padding:8px 12px; border:1px solid #ccc; border-radius:4px; font-size:14px; min-width:180px; background:#fff; }\n        .mr-stats { background:#f5f5f5; padding:10px 16px; border-radius:6px; font-size:14px; color:#555; margin-left:auto; }\n        .mr-stats strong { color:#00796b; }\n        .mr-table-wrap { margin-top:10px; overflow-x:auto; width:100%; }\n        .mr-wrap .dataTables_wrapper { width:100%!important; overflow:hidden; padding:0; }\n        .mr-wrap .dataTables_wrapper .dataTables_length,\n        .mr-wrap .dataTables_wrapper .dataTables_filter { margin-bottom:8px; padding:0; }\n        .mr-wrap .dataTables_wrapper .dataTables_filter { float:right; text-align:right; padding-right:0; margin-right:0; }\n        .mr-wrap .dataTables_filter input { border:1px solid #ccc!important; border-radius:4px!important; padding:6px 10px!important; margin-left:5px; }\n        .mr-wrap .dataTables_length select { border:1px solid #ccc!important; border-radius:4px!important; padding:4px 8px!important; }\n        .mr-wrap .dataTables_wrapper .dataTables_info,\n        .mr-wrap .dataTables_wrapper .dataTables_paginate { margin-top:10px; padding:0; }\n        .mr-wrap .dataTables_wrapper .dataTables_paginate { float:right; padding-right:0; margin-right:0; }\n        .mr-table { width:100%!important; font-size:13px; table-layout:auto; }\n        .mr-table thead th { background:#00796b; color:#fff; padding:10px 8px; font-weight:600; white-space:nowrap; }\n        .mr-table tbody td { padding:8px; vertical-align:middle; word-break:break-word; }\n        .mr-table tbody td:nth-child(5) { max-width:400px; word-break:break-word; }\n        .mr-table tbody tr:hover { background:#e0f2f1!important; cursor:pointer; }\n        .mr-thumb { width:60px; height:40px; object-fit:cover; border-radius:3px; cursor:pointer; transition:opacity .2s; }\n        .mr-thumb:hover { opacity:.8; }\n        .mr-no-img { width:60px; height:40px; background:#eee; border-radius:3px; display:inline-flex; align-items:center; justify-content:center; font-size:10px; color:#999; }\n        .mr-lightbox { display:none; position:fixed; z-index:999999; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,.85); align-items:center; justify-content:center; cursor:pointer; }\n        .mr-lightbox.active { display:flex; }\n        .mr-lightbox img { max-width:90vw; max-height:90vh; object-fit:contain; border-radius:6px; box-shadow:0 4px 30px rgba(0,0,0,.5); }\n        .mr-lightbox-close { position:absolute; top:20px; right:30px; color:#fff; font-size:36px; font-weight:300; cursor:pointer; line-height:1; text-shadow:0 2px 8px rgba(0,0,0,.5); }\n        .mr-lightbox-close:hover { color:#ccc; }\n        .mr-lightbox-cap { position:absolute; bottom:20px; left:50%; transform:translateX(-50%); color:#fff; font-size:14px; background:rgba(0,0,0,.6); padding:6px 16px; border-radius:4px; max-width:90vw; text-align:center; }\n        .mr-popup { min-width:220px; max-width:320px; }\n        .mr-popup img { width:100%; max-height:200px; object-fit:cover; border-radius:4px; margin-bottom:8px; cursor:pointer; }\n        .mr-popup img:hover { opacity:.9; }\n        .mr-popup h4 { margin:0 0 4px; font-size:14px; color:#00796b; }\n        .mr-popup .det { font-size:12px; color:#555; line-height:1.5; }\n        .mr-popup .det span { display:inline-block; background:#e0f2f1; padding:2px 6px; border-radius:3px; margin:2px 2px 2px 0; font-size:11px; }\n        .marker-cluster-small { background-color:rgba(0,121,107,.3)!important; }\n        .marker-cluster-small div { background-color:rgba(0,121,107,.6)!important; color:#fff!important; }\n        .marker-cluster-medium { background-color:rgba(0,121,107,.4)!important; }\n        .marker-cluster-medium div { background-color:rgba(0,121,107,.7)!important; color:#fff!important; }\n        .marker-cluster-large { background-color:rgba(0,121,107,.5)!important; }\n        .marker-cluster-large div { background-color:rgba(0,121,107,.8)!important; color:#fff!important; }\n        @media(max-width:768px) {\n            .mr-map { height:350px!important; }\n            .mr-filters { flex-direction:column; gap:10px; }\n            .mr-filters select { width:100%; }\n            .mr-stats { margin-left:0; }\n            .mr-table tbody td:nth-child(5) { max-width:200px; }\n        }\n    <\/style>\n    <div class=\"mr-lightbox\" id=\"mr-lightbox\" onclick=\"mrCloseLB()\">\n        <span class=\"mr-lightbox-close\">&times;<\/span>\n        <img decoding=\"async\" id=\"mr-lb-img\" src=\"\" alt=\"\">\n        <div class=\"mr-lightbox-cap\" id=\"mr-lb-cap\"><\/div>\n    <\/div>\n    <script>\n    function mrOpenLB(src,cap){var l=document.getElementById('mr-lightbox');document.getElementById('mr-lb-img').src=src;document.getElementById('mr-lb-cap').textContent=cap||'';l.classList.add('active');document.body.style.overflow='hidden';}\n    function mrCloseLB(){var l=document.getElementById('mr-lightbox');l.classList.remove('active');document.getElementById('mr-lb-img').src='';document.body.style.overflow='';}\n    document.addEventListener('keydown',function(e){if(e.key==='Escape')mrCloseLB();});\n    <\/script>\n    \n    <div class=\"mr-wrap\" id=\"mr1-wrap\">\n                <div class=\"mr-filters\">\n                        <div>\n                <label>\u0422\u0438\u043f:<\/label>\n                <select class=\"mr-f-type\"><option value=\"\">\u0412\u0441\u0438\u0447\u043a\u0438 \u0442\u0438\u043f\u043e\u0432\u0435<\/option><\/select>\n            <\/div>\n                                    <div>\n                <label>\u041a\u0430\u043d\u0430\u043b:<\/label>\n                <select class=\"mr-f-channel\"><option value=\"\">\u0412\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438<\/option><\/select>\n            <\/div>\n                        <div class=\"mr-stats\">\u041f\u043e\u043a\u0430\u0437\u0430\u043d\u0438: <strong class=\"mr-count\">0<\/strong> \u043e\u0442 <strong class=\"mr-total\">0<\/strong> \u043e\u0431\u0435\u043a\u0442\u0430<\/div>\n        <\/div>\n        \n        <div class=\"mr-map\" id=\"mr1-map\" style=\"height:550px\"><\/div>\n\n        <div class=\"mr-table-wrap\">\n            <table class=\"mr-table display compact\" id=\"mr1-table\">\n                <thead><tr><th>\u041a\u043e\u0434<\/th><th>\u0422\u0438\u043f<\/th><th>\u041a\u0430\u043d\u0430\u043b<\/th><th>\u0421\u043d\u0438\u043c\u043a\u0430<\/th><th>\u041b\u043e\u043a\u0430\u0446\u0438\u044f<\/th><th>\u041f\u043e\u0441\u043e\u043a\u0430<\/th><\/tr><\/thead>\n                <tbody><\/tbody>\n            <\/table>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function(){\n        var uid='mr1';\n        var presetChannel='';\n        var presetType='';\n        var jsonUrl='https:\/\/des-pol.com\/metroreklama\/wp-content\/plugins\/metroreklama-map\/metroreklama-objects.json';\n        var imgBase='https:\/\/des-pol.com\/metroreklama\/wp-content\/uploads\/metroreklama-images\/';\n        \n        function imgUrl(filename) {\n            if (!filename) return '';\n            \/\/ If it's already a full URL (http), return as-is (backward compat)\n            if (filename.indexOf('http') === 0) return filename;\n            return imgBase + filename;\n        }\n\n        function esc(s) { return s ? s.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;') : ''; }\n        \n        function init(){\n            var wrap=document.getElementById(uid+'-wrap');\n            if(!wrap)return;\n            var allData=[],map,cg,dt,ml={};\n\n            map=L.map(uid+'-map').setView([42.7,25.5],7);\n            L.tileLayer('https:\/\/{s}.basemaps.cartocdn.com\/rastertiles\/voyager\/{z}\/{x}\/{y}{r}.png',{attribution:'&copy; \u00a9 OpenStreetMap \u00a9 CARTO',maxZoom:18}).addTo(map);\n            cg=L.markerClusterGroup({maxClusterRadius:50,spiderfyOnMaxZoom:true,showCoverageOnHover:false,zoomToBoundsOnClick:true});\n\n            fetch(jsonUrl).then(function(r){return r.json();}).then(function(data){\n                allData=data;\n                var te=wrap.querySelector('.mr-total');\n                if(te)te.textContent=data.length;\n\n                var ts=wrap.querySelector('.mr-f-type');\n                var cs=wrap.querySelector('.mr-f-channel');\n\n                if(ts){\n                    [...new Set(data.map(function(d){return d.type;}))].sort().forEach(function(t){\n                        var o=document.createElement('option');o.value=t;o.textContent=t;ts.appendChild(o);\n                    });\n                    ts.addEventListener('change',refresh);\n                }\n                if(cs){\n                    var rd=presetType?data.filter(function(d){return d.type===presetType;}):data;\n                    [...new Set(rd.map(function(d){return d.channel;}))].sort().forEach(function(c){\n                        var o=document.createElement('option');o.value=c;o.textContent=c;cs.appendChild(o);\n                    });\n                    cs.addEventListener('change',refresh);\n                }\n\n                dt=jQuery('#'+uid+'-table').DataTable({\n                    data:[],\n                    columns:[\n                        {data:'code'},\n                        {data:'type'},\n                        {data:'channel'},\n                        {data:'image',render:function(v,tp,row){\n                            if(tp!=='display')return v?'1':'0';\n                            if(v){\n                                var src=imgUrl(v);\n                                var cap=esc(row.code+' \\u2014 '+row.location);\n                                return '<img decoding=\"async\" class=\"mr-thumb\" src=\"'+src+'\" alt=\"\" loading=\"lazy\"'\n                                    +' onclick=\"event.stopPropagation();mrOpenLB(\\''+esc(src)+'\\',\\''+cap+'\\')\"'\n                                    +' onerror=\"this.outerHTML=\\'<span class=mr-no-img>\\u2014<\/span>\\'\">';\n                            }\n                            return '<span class=\"mr-no-img\">\\u2014<\/span>';\n                        },orderable:false},\n                        {data:'location'},\n                        {data:'direction',defaultContent:''}\n                    ],\n                    pageLength:50,\n                    lengthMenu:[25,50,100,200],\n                    language:{\n                        search:\"\u0422\u044a\u0440\u0441\u0435\u043d\u0435:\",\n                        lengthMenu:\"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 _MENU_ \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0430\",\n                        info:\"\u041f\u043e\u043a\u0430\u0437\u0430\u043d\u0438 _START_ \u0434\u043e _END_ \u043e\u0442 _TOTAL_ \u043e\u0431\u0435\u043a\u0442\u0430\",\n                        infoFiltered:\"(\u0444\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0438 \u043e\u0442 _MAX_ \u043e\u0431\u0449\u043e)\",\n                        paginate:{previous:\"\\u2039\",next:\"\\u203a\"},\n                        zeroRecords:\"\u041d\u044f\u043c\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0437\u0430\u043f\u0438\u0441\u0438\",\n                        infoEmpty:\"\u041d\u044f\u043c\u0430 \u0437\u0430\u043f\u0438\u0441\u0438\"\n                    },\n                    order:[[0,'asc']],\n                    deferRender:true,\n                    scrollX:false,\n                    autoWidth:false\n                });\n\n                jQuery('#'+uid+'-table tbody').on('click','tr',function(e){\n                    if(jQuery(e.target).hasClass('mr-thumb'))return;\n                    var rd=dt.row(this).data();\n                    if(rd&&ml[rd.code]){\n                        map.setView([rd.lat,rd.lng],16);\n                        ml[rd.code].openPopup();\n                        document.getElementById(uid+'-map').scrollIntoView({behavior:'smooth',block:'center'});\n                    }\n                });\n\n                refresh();\n            });\n\n            function refresh(){\n                var fT=presetType||(wrap.querySelector('.mr-f-type')?wrap.querySelector('.mr-f-type').value:'');\n                var fC=presetChannel||(wrap.querySelector('.mr-f-channel')?wrap.querySelector('.mr-f-channel').value:'');\n                var f=allData.filter(function(d){\n                    if(fT&&d.type!==fT)return false;\n                    if(fC&&d.channel!==fC)return false;\n                    return true;\n                });\n\n                wrap.querySelector('.mr-count').textContent=f.length;\n                cg.clearLayers();ml={};\n\n                f.forEach(function(d){\n                    var src=imgUrl(d.image);\n                    var cap=esc(d.code+' \\u2014 '+d.location);\n                    var h='<div class=\"mr-popup\">';\n                    if(d.image) h+='<img decoding=\"async\" src=\"'+src+'\" alt=\"'+d.code+'\" loading=\"lazy\" onclick=\"mrOpenLB(\\''+esc(src)+'\\',\\''+cap+'\\')\" onerror=\"this.style.display=\\'none\\'\">';\n                    h+='<h4>'+d.code+'<\/h4><div class=\"det\">'+d.location;\n                    if(d.direction) h+='<br>'+d.direction;\n                    h+='<br><span>'+d.type+'<\/span> <span>'+d.channel+'<\/span><\/div><\/div>';\n                    var m=L.marker([d.lat,d.lng]).bindPopup(h,{maxWidth:320});\n                    cg.addLayer(m);ml[d.code]=m;\n                });\n\n                map.addLayer(cg);\n                if(dt){dt.clear();dt.rows.add(f);dt.draw();}\n                if(f.length>0&&cg.getBounds().isValid()) map.fitBounds(cg.getBounds().pad(0.1));\n            }\n        }\n\n        if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',function(){setTimeout(init,100);});\n        else setTimeout(init,100);\n    })();\n    <\/script>\n    \n<\/div>\n\t\t<\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Map of facilities \u0422\u0438\u043f: \u0412\u0441\u0438\u0447\u043a\u0438 \u0442\u0438\u043f\u043e\u0432\u0435 \u041a\u0430\u043d\u0430\u043b: \u0412\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438 \u041f\u043e\u043a\u0430\u0437\u0430\u043d\u0438: 0 \u043e\u0442 0 \u043e\u0431\u0435\u043a\u0442\u0430 \u041a\u043e\u0434\u0422\u0438\u043f\u041a\u0430\u043d\u0430\u043b\u0421\u043d\u0438\u043c\u043a\u0430\u041b\u043e\u043a\u0430\u0446\u0438\u044f\u041f\u043e\u0441\u043e\u043a\u0430<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1546","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/des-pol.com\/metroreklama\/wp-json\/wp\/v2\/pages\/1546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/des-pol.com\/metroreklama\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/des-pol.com\/metroreklama\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/des-pol.com\/metroreklama\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/des-pol.com\/metroreklama\/wp-json\/wp\/v2\/comments?post=1546"}],"version-history":[{"count":4,"href":"https:\/\/des-pol.com\/metroreklama\/wp-json\/wp\/v2\/pages\/1546\/revisions"}],"predecessor-version":[{"id":1823,"href":"https:\/\/des-pol.com\/metroreklama\/wp-json\/wp\/v2\/pages\/1546\/revisions\/1823"}],"wp:attachment":[{"href":"https:\/\/des-pol.com\/metroreklama\/wp-json\/wp\/v2\/media?parent=1546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}