{"id":9617,"date":"2026-05-19T10:29:59","date_gmt":"2026-05-19T09:29:59","guid":{"rendered":"https:\/\/pelican.dk\/locations\/"},"modified":"2026-09-14T14:30:14","modified_gmt":"2026-09-14T13:30:14","slug":"locations","status":"publish","type":"page","link":"https:\/\/pelican.dk\/en\/locations\/","title":{"rendered":"Locations"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9617\" class=\"elementor elementor-9617 elementor-3069\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42bca31 e-flex e-con-boxed e-con e-parent\" data-id=\"42bca31\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-905a0e9 e-con-full e-flex e-con e-child\" data-id=\"905a0e9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-c47b34e e-con-full post-heading e-flex e-con e-child\" data-id=\"c47b34e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0096feb h2 elementor-widget elementor-widget-heading\" data-id=\"0096feb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Find a storage unit near you<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c797ab6 elementor-widget elementor-widget-text-editor\" data-id=\"c797ab6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>If you live in Copenhagen or the surrounding area, there is a good chance that you have a Pelican storage facility nearby. We have facilities from Amagerbro to Hiller\u00f8d, with storage units for both private and business customers. <\/p><p>Find your nearest facility below, or call <strong>80 20 70 40<\/strong>. We will be happy to help you find the unit that suits your needs. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-db6da2e e-con-full e-flex e-con e-child\" data-id=\"db6da2e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-60e12e4 elementor-widget elementor-widget-shortcode\" data-id=\"60e12e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"plm-shortcode-wrap\" style=\"display:block!important;width:100%!important;max-width:100%!important;min-width:1px!important;box-sizing:border-box!important;align-self:stretch!important;flex:1 1 100%!important;\"><div id=\"pelican-location-map-62e8d2a8-b12e-42bf-ac80-fb52307fb22c\" class=\"pelican-location-map\" data-plm-map=\"1\" data-plm-version=\"2.3.6\" data-plm-config-id=\"pelican-location-map-62e8d2a8-b12e-42bf-ac80-fb52307fb22c-config\" style=\"position:relative!important;width:100%!important;height:500px!important;min-height:320px!important;display:block!important;overflow:hidden!important;border-radius:24px!important;background:#e9e9e7!important;\"><div class=\"plm-map-canvas\" style=\"position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-height:320px!important;display:block!important;visibility:visible!important;opacity:1!important;\"><\/div><div class=\"plm-loading\" style=\"position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;background:#e9e9e7;color:#555;font:600 14px\/1.4 Arial,sans-serif;\">Indl\u00e6ser lokationer...<\/div><\/div><script type=\"application\/json\" id=\"pelican-location-map-62e8d2a8-b12e-42bf-ac80-fb52307fb22c-config\" class=\"plm-map-config\">{\"apiKey\":\"AIzaSyAzcDWgBbtQUL9QlTaN1DdrNC_ZJayQahY\",\"activeSiteId\":\"\",\"locations\":[{\"postId\":10654,\"siteId\":\"RI0W01JB260420170001\",\"title\":\"Pelican Amagerbro\",\"lat\":55.667305052699,\"lng\":12.609901428223,\"geocodeAddress\":\"Vermlandsgade 66, 2300 K\u00f8benhavn S, Denmark\",\"address\":\"Vermlandsgade 66\",\"zip\":\"2300\",\"city\":\"K\u00f8benhavn S\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/amagerbro\/\"},{\"postId\":10661,\"siteId\":\"RI13IIJB190520160004\",\"title\":\"Pelican Damhus Valby\",\"lat\":55.672834953538,\"lng\":12.484205381479,\"geocodeAddress\":\"Roskildevej 170, 2500 Valby, Denmark\",\"address\":\"Roskildevej 170\",\"zip\":\"2500\",\"city\":\"Valby\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/damhus-valby\/\"},{\"postId\":10647,\"siteId\":\"RI13M6LJ191020210002\",\"title\":\"Pelican Ellebjerg Valby\",\"lat\":55.649167553946,\"lng\":12.508790199813,\"geocodeAddress\":\"Blush\u00f8jvej 9, 2450 K\u00f8benhavn, Denmark\",\"address\":\"Blush\u00f8jvej 9\",\"zip\":\"2450\",\"city\":\"K\u00f8benhavn\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/ellebjerg-valby\/\"},{\"postId\":10637,\"siteId\":\"RI1GRWXX250320060000\",\"title\":\"Pelican Gladsaxe\",\"lat\":55.744496072749,\"lng\":12.492400472984,\"geocodeAddress\":\"Buddingevej 310, 2860 S\u00f8borg, Denmark\",\"address\":\"Buddingevej 310\",\"zip\":\"2860\",\"city\":\"S\u00f8borg\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/gladsaxe\/\"},{\"postId\":10626,\"siteId\":\"HI10KTXX100120120000\",\"title\":\"Pelican Hiller\u00f8d\",\"lat\":55.933362746541,\"lng\":12.285816734657,\"geocodeAddress\":\"Frejasvej 30, 3400 Hiller\u00f8d, Denmark\",\"address\":\"Frejasvej 30\",\"zip\":\"3400\",\"city\":\"Hiller\u00f8d\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/hilleroed\/\"},{\"postId\":10659,\"siteId\":\"RI11E7RI100920130001\",\"title\":\"Pelican Kastellet\",\"lat\":55.696253175221,\"lng\":12.59328908287,\"geocodeAddress\":\"Kalkbr\u00e6nderihavnsgade 3, 2100 K\u00f8benhavn \u00d8, Denmark\",\"address\":\"Kalkbr\u00e6nderihavnsgade 3\",\"zip\":\"2100\",\"city\":\"K\u00f8benhavn \u00d8\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/kastellet\/\"},{\"postId\":10639,\"siteId\":\"RI0X8XJB300320170001\",\"title\":\"Pelican Nordvest\",\"lat\":55.704362563502,\"lng\":12.520626448095,\"geocodeAddress\":\"Hulg\u00e5rdsvej 131, 2400 K\u00f8benhavn NV, Denmark\",\"address\":\"Hulg\u00e5rdsvej 131\",\"zip\":\"2400\",\"city\":\"K\u00f8benhavn NV\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/nordvest\/\"},{\"postId\":10630,\"siteId\":\"RI0V0GLJ270320190001\",\"title\":\"Pelican \u00d8restad\",\"lat\":55.619846069949,\"lng\":12.57462205179,\"geocodeAddress\":\"\u00d8restads Boulevard 190, 2300 K\u00f8benhavn S, Denmark\",\"address\":\"\u00d8restads Boulevard 190\",\"zip\":\"2300\",\"city\":\"K\u00f8benhavn S\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/oerestad\/\"},{\"postId\":10657,\"siteId\":\"RI0X6AXX240620150001\",\"title\":\"Pelican \u00d8sterbro\",\"lat\":55.710003652632,\"lng\":12.562202280387,\"geocodeAddress\":\"Sejr\u00f8gade 8, 2100 K\u00f8benhavn, Denmark\",\"address\":\"Sejr\u00f8gade 8\",\"zip\":\"2100\",\"city\":\"K\u00f8benhavn\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/oesterbro\/\"},{\"postId\":10644,\"siteId\":\"RI1K5OTR131220120001\",\"title\":\"Pelican R\u00f8dovre\",\"lat\":55.667678796884,\"lng\":12.423773473129,\"geocodeAddress\":\"Roskildevej 519, 2605 Br\u00f8ndby, Denmark\",\"address\":\"Roskildevej 519\",\"zip\":\"2605\",\"city\":\"Br\u00f8ndby\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/roedovre\/\"},{\"postId\":10628,\"siteId\":\"RI109ELJ17072024000G\",\"title\":\"Pelican Skovlunde\",\"lat\":55.716382100653,\"lng\":12.426946309002,\"geocodeAddress\":\"Mileparken 2A, 2740 Skovlunde, Denmark\",\"address\":\"Mileparken 2A\",\"zip\":\"2740\",\"city\":\"Skovlunde\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/skovlunde\/\"},{\"postId\":10632,\"siteId\":\"RI0YVORI230120120001\",\"title\":\"Pelican Sydhavnen\",\"lat\":55.651526637606,\"lng\":12.54054969259,\"geocodeAddress\":\"A. C. Meyers V\u00e6nge 138, 2450 K\u00f8benhavn SV, Denmark\",\"address\":\"A. C. Meyers V\u00e6nge 138\",\"zip\":\"2450\",\"city\":\"K\u00f8benhavn SV\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/sydhavnen\/\"},{\"postId\":10641,\"siteId\":\"VI115UXX100120120000\",\"title\":\"Pelican Virum\",\"lat\":55.798808817839,\"lng\":12.491612059,\"geocodeAddress\":\"Skodsborgvej 48B, 2830 Virum, Denmark\",\"address\":\"Skodsborgvej 48B\",\"zip\":\"2830\",\"city\":\"Virum\",\"type\":\"private\",\"url\":\"https:\/\/pelican.dk\/en\/lokationer\/virum\/\"}],\"debug\":false,\"mapId\":\"pelican-location-map-62e8d2a8-b12e-42bf-ac80-fb52307fb22c\",\"markerIconDefault\":\"data:image\/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2260%22%20height%3D%2272%22%20viewBox%3D%220%200%2060%2072%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Ccircle%20cx%3D%2230%22%20cy%3D%2228%22%20r%3D%2227%22%20fill%3D%22%231C1C1C%22%2F%3E%3Cpath%20d%3D%22M22%2C50%20Q26%2C60%2030%2C64%20Q34%2C60%2038%2C50%22%20fill%3D%22%231C1C1C%22%2F%3E%3Ccircle%20cx%3D%2230%22%20cy%3D%2228%22%20r%3D%2222%22%20fill%3D%22%23ffffff%22%2F%3E%3Ccircle%20cx%3D%2230%22%20cy%3D%2228%22%20r%3D%2218%22%20fill%3D%22%23B9B9B9%22%2F%3E%3Cimage%20href%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAEoAAABKBAMAAADu%2Ft9CAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAAbUExURf%2F%2F%2F729veXl5czMzN3d3cTExPDw8Pf399TU1Ko3AocAAAJNSURBVEjHjVZLb5tAEN4QDD5mA34csYtEj6VW0ittEinHrKWoV9NY7RWcOurRD0XOzy6O2WV2ZxbynYz1aZ7fzgxjGl7urwQfzHYLZod3wyV2hY30lwMEEU164hoGCUV65gYGWYe7moacegKz%2BNhM4Tun8FMn%2FeM0tND81MIKIWvNebcxX1hZ4UdMQWPbFtZQklxZHjIHWbOy%2Fr4uqKp9qVmiqfWdNX63UUtcfLK5LNX3t2RaLAXfpYRLlWHoRiyuVL18wln66vNwm7H%2BnHlfpxorOLL6Sk7LVfWZzv1DrAe2gGGNfk8rfH6bxs%2B4Fluzyn6U66wRrNaoZq2YQBXzuMmKXKNgAQheenTYBNe1Z7ISn1DPmfp9eTJV9BBrw3KjrS%2FEc3oA%2F43fWRl2WOUFdHpy6FB6TfVOuCBpELGAQR7rcE4J0ZDIn07W0WXEXGKqaKywYBljooPFg%2F2GEcYMVp3Baxfr9OCdOyP6FNt6n43bj7C06Tg0J8mDYjmQNcEaR5PoguXWqVYCB2eWQQS1nqG2NcO7ERpuW9AYE419JM05qkXAiOZeS1YOnk2OmnswkrzQElaoN2MP9INQnRNppVhoCSu4cQRYY8vS6%2F8Kkmb7Do1OyMx71eKd3e41yXnoka61htQZaxJ7fBxku5JQyRotp3NKvTCm2RFX4BBQDZu0bL4RoST74mtdo0Ow3e3GtBNr2xmV8ay0S8c4YUqStTHPIcrnJb72UmIgYSA1huRp6KTtx5d0CvU4tx6ZbCnNjRPWhlW8n739MI%2Fa%2FxADujXlBisRAAAAAElFTkSuQmCC%22%20x%3D%2217%22%20y%3D%2215%22%20width%3D%2226%22%20height%3D%2226%22%20preserveAspectRatio%3D%22xMidYMid%20meet%22%20%2F%3E%3C%2Fsvg%3E\",\"markerIconActive\":\"data:image\/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2260%22%20height%3D%2272%22%20viewBox%3D%220%200%2060%2072%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Ccircle%20cx%3D%2230%22%20cy%3D%2228%22%20r%3D%2227%22%20fill%3D%22%231C1C1C%22%2F%3E%3Cpath%20d%3D%22M22%2C50%20Q26%2C60%2030%2C64%20Q34%2C60%2038%2C50%22%20fill%3D%22%231C1C1C%22%2F%3E%3Ccircle%20cx%3D%2230%22%20cy%3D%2228%22%20r%3D%2222%22%20fill%3D%22%23ffffff%22%2F%3E%3Ccircle%20cx%3D%2230%22%20cy%3D%2228%22%20r%3D%2218%22%20fill%3D%22%23F07E02%22%2F%3E%3Cimage%20href%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAFwAAABcCAMAAADUMSJqAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAA8UExURfF%2BAvevYPGGEfrPofvfwPi%2Fgf%2F38P%2F%2F%2F%2F3w4fOOIfe3cPvYsv3lzPWfQPnHkf%2F8%2BvOXMPWnUP3s2PWhRlf768gAAAOFSURBVGjetZpZYqMwDEDlTd4xpPe%2F6wApDQleZOLRZ0NfHEnWCuj%2FKEB7DNEE6aVfRcrwMIiD4MbgDFdZ%2F%2F41HC0Uhev0BdxLDnWxD7wHNxYowm7APZCFpT448dSHqNQB70NvuhdUeIAb4hIJbuGWWEOAc7gp3Dfh8IWoBhxgHB2Gsj%2FoMJb9TofBbABfgI9gAzdZ%2BMW%2FGRrW7%2FQWM%2FArhk1GG9GNd1d4PgpGqXU3Xl7ghQcXt%2BpQsluKgUZAUXpyasUb9fuAtXR%2FPOCPIlvqJDa8li7O3HlDCfXmDZ6PVmJlb4HazOpwsDAJ2YbHM3zKeqxEJfcskNDaJ95ZnDTVplA%2BuA3ITAx%2FaW%2FHCwgkeHzBsz%2BUTYtTkxBrjbWK2L7OmbXwmkiJCv%2FgtvSxxsfGOyQIxaRm1AC2wxUl8j9TpFjvLC3EHHBJgT8Nv5qAka8plP1Q5dmCWik94Q6IcL%2FGakPN3xx3OBLhZuqqxOQOtzS4EYms8GfkhZI5r9WrK93k4j2qwOOHMbfY2BV5sQLnb2yxhZa%2BsB6g6CxH3DwpXHaxQUDlP6bT9fRGV45RsCiUHPFD6bvrxD44A51a%2BWRPEf5G%2FTtX4cvLVfBG0WSrcBBvWuntCngd%2FmfTJ1z1lkcVg%2B5GMSd4tk2vwlPrFk9iir%2BlK7LB8LcCTfdVpkT4qQ80ns1DDHo5%2BTHLkCryL12xCH8WJA0VRSLcF0YE1ep6Adq9m4pjk7kauEjw8kylkrA9Ec7L86By5pNEeFkvlUCsiQY9tWhXp6kl6J%2B%2BFo085thLC7w1kThnqUpRRISX6bJUPKzwRM1erDQCtZVClBxHucrjWeFSQ19uzA7hslW11dX6nI4PhTu9wxP00DOqL5QlGzx1wTkKZ5oWZa9WsauUMtoqhY0IYF7wrqNjmNc4%2Fqb6JR9FQfce3Woft0tpmf%2FVTmD1wQLS4UwzdhyGx8gW2xyJqB6Vi4bzfg5zErUccdpbbHQB4nMM1Xie%2BSClEHKbSclGo5sZoFXbhuXc%2Fzcezo3%2B0s2xOW1oafgQeGHc6kewi4NiNZb9MYVWQ9mf83M1kn2Z%2FKuB7OvOwo9btmS2LWbYmii3J0J3h%2B2QuD7rn8dbSV%2F8YaddFfatLDs6zmi6l61UfJT31sTthpYrvL3gTpJV3J4z%2Be3eX7psaRCdbL5YQHtjIXi3RLv%2FCG5n5kQgvbHwD%2BniWQJjQYE7AAAAAElFTkSuQmCC%22%20x%3D%2217%22%20y%3D%2215%22%20width%3D%2226%22%20height%3D%2226%22%20preserveAspectRatio%3D%22xMidYMid%20meet%22%20%2F%3E%3C%2Fsvg%3E\",\"locationType\":\"private\",\"locationTypeName\":\"Private\",\"highlightMode\":\"all\",\"overviewMode\":true,\"zoom\":9}<\/script><script data-plm-inline-runtime=\"2.3.6\">(() => {\n  'use strict';\n\n  if (window.__pelicanLocationMapV236Loaded) {\n    if (typeof window.PelicanLocationMapBoot === 'function') {\n      window.PelicanLocationMapBoot();\n      window.setTimeout(window.PelicanLocationMapBoot, 60);\n      window.setTimeout(window.PelicanLocationMapBoot, 500);\n      window.setTimeout(window.PelicanLocationMapBoot, 1500);\n    }\n    return;\n  }\n  window.__pelicanLocationMapV236Loaded = true;\n\n  const googleMapsState = window.__pelicanGoogleMapsLoaderState || {\n    promise: null,\n    key: ''\n  };\n  window.__pelicanGoogleMapsLoaderState = googleMapsState;\n\n  const escapeHtml = (value) => String(value ?? '')\n    .replace(\/&\/g, '&amp;')\n    .replace(\/<\/g, '&lt;')\n    .replace(\/>\/g, '&gt;')\n    .replace(\/\"\/g, '&quot;')\n    .replace(\/'\/g, '&#039;');\n\n  const updateDebug = (mapId, line, replaceWaiting = false) => {\n    const panel = document.querySelector('[data-plm-debug-for=\"' + CSS.escape(mapId) + '\"]');\n    if (!panel) return;\n    if (replaceWaiting) {\n      panel.textContent = panel.textContent.replace('JS status: venter p\u00e5 frontend-script...', 'JS status: ' + line);\n      return;\n    }\n    panel.textContent += '\\n' + line;\n  };\n\n  const showError = (shell, message) => {\n    shell.classList.remove('is-ready');\n    shell.classList.add('is-error');\n    const loading = shell.querySelector('.plm-loading');\n    if (loading) {\n      loading.style.display = 'flex';\n      loading.textContent = message;\n    }\n    updateDebug(shell.id, 'FEJL: ' + message);\n    console.error('[Pelican Location Map]', message, shell);\n  };\n\n  const loadGoogleMaps = (apiKey) => {\n    if (window.google && window.google.maps && typeof window.google.maps.Map === 'function') {\n      return Promise.resolve(window.google.maps);\n    }\n\n    if (googleMapsState.promise) return googleMapsState.promise;\n\n    googleMapsState.key = apiKey;\n    googleMapsState.promise = new Promise((resolve, reject) => {\n      const callbackName = '__pelicanGoogleMapsReadyV236';\n      let timeoutId = null;\n\n      window.gm_authFailure = () => {\n        window.clearTimeout(timeoutId);\n        reject(new Error('Google Maps afviste API-n\u00f8glen p\u00e5 frontend.'));\n      };\n\n      window[callbackName] = () => {\n        window.clearTimeout(timeoutId);\n        if (window.google && window.google.maps) {\n          resolve(window.google.maps);\n        } else {\n          reject(new Error('Google callback blev k\u00f8rt, men google.maps mangler.'));\n        }\n      };\n\n      const existing = Array.from(document.scripts).find((script) => script.src && script.src.includes('maps.googleapis.com\/maps\/api\/js'));\n      if (existing) {\n        const pollStarted = Date.now();\n        const poll = window.setInterval(() => {\n          if (window.google && window.google.maps && typeof window.google.maps.Map === 'function') {\n            window.clearInterval(poll);\n            window.clearTimeout(timeoutId);\n            resolve(window.google.maps);\n          } else if (Date.now() - pollStarted > 15000) {\n            window.clearInterval(poll);\n            reject(new Error('Et eksisterende Google Maps-script blev fundet, men API-et blev ikke klar.'));\n          }\n        }, 100);\n        return;\n      }\n\n      const script = document.createElement('script');\n      script.src = 'https:\/\/maps.googleapis.com\/maps\/api\/js?key=' + encodeURIComponent(apiKey) + '&callback=' + encodeURIComponent(callbackName) + '&v=weekly&loading=async';\n      script.async = true;\n      script.defer = true;\n      script.onerror = () => {\n        window.clearTimeout(timeoutId);\n        reject(new Error('Google Maps JavaScript-filen kunne ikke indl\u00e6ses.'));\n      };\n      document.head.appendChild(script);\n\n      timeoutId = window.setTimeout(() => {\n        reject(new Error('Google Maps blev ikke klar inden for 15 sekunder.'));\n      }, 15000);\n    });\n\n    return googleMapsState.promise;\n  };\n\n  const ensureMapsLibrary = async (maps) => {\n    if (typeof maps.importLibrary !== 'function') return maps;\n    try {\n      await maps.importLibrary('maps');\n    } catch (error) {\n      console.warn('[Pelican Location Map] importLibrary(\"maps\") kunne ikke k\u00f8res. Bruger allerede indl\u00e6st Maps API.', error);\n    }\n    return maps;\n  };\n\n  const mapStyles = [\n    { elementType: 'geometry', stylers: [{ color: '#e9e9e7' }] },\n    { elementType: 'labels.icon', stylers: [{ visibility: 'off' }] },\n    { elementType: 'labels.text.fill', stylers: [{ color: '#686868' }] },\n    { elementType: 'labels.text.stroke', stylers: [{ color: '#f4f4f2' }] },\n    { featureType: 'administrative', elementType: 'geometry.stroke', stylers: [{ color: '#d2d2cf' }] },\n    { featureType: 'landscape.man_made', elementType: 'geometry', stylers: [{ color: '#ececea' }] },\n    { featureType: 'poi', stylers: [{ visibility: 'off' }] },\n    { featureType: 'road', elementType: 'geometry', stylers: [{ color: '#ffffff' }] },\n    { featureType: 'road', elementType: 'geometry.stroke', stylers: [{ color: '#d9d9d6' }] },\n    { featureType: 'road', elementType: 'labels.text.fill', stylers: [{ color: '#7a7a7a' }] },\n    { featureType: 'road.highway', elementType: 'geometry', stylers: [{ color: '#f7f7f5' }] },\n    { featureType: 'transit', stylers: [{ visibility: 'off' }] },\n    { featureType: 'water', elementType: 'geometry', stylers: [{ color: '#d6d9d8' }] },\n    { featureType: 'water', elementType: 'labels.text.fill', stylers: [{ color: '#858585' }] }\n  ];\n\n  const markerSvg = (active, config) => {\n    if (active && config && typeof config.markerIconActive === 'string' && config.markerIconActive) return config.markerIconActive;\n    if (!active && config && typeof config.markerIconDefault === 'string' && config.markerIconDefault) return config.markerIconDefault;\n    const fill = active ? '#F07E02' : '#B9B9B9';\n    const svg = '<svg width=\"60\" height=\"72\" viewBox=\"0 0 60 72\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">'\n      + '<circle cx=\"30\" cy=\"28\" r=\"27\" fill=\"#1C1C1C\"\/>'\n      + '<path d=\"M22,50 Q26,60 30,64 Q34,60 38,50\" fill=\"#1C1C1C\"\/>'\n      + '<circle cx=\"30\" cy=\"28\" r=\"22\" fill=\"#ffffff\"\/>'\n      + '<circle cx=\"30\" cy=\"28\" r=\"18\" fill=\"' + fill + '\"\/>'\n      + '<text x=\"30\" y=\"34\" text-anchor=\"middle\" font-size=\"18\" font-family=\"Arial,sans-serif\" font-weight=\"700\" fill=\"#fff\">P<\/text>'\n      + '<\/svg>';\n    return 'data:image\/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);\n  };\n\n  const geocode = (geocoder, address) => new Promise((resolve) => {\n    geocoder.geocode({ address }, (results, status) => {\n      if (status === 'OK' && results && results[0]) {\n        resolve(results[0].geometry.location);\n      } else {\n        resolve(null);\n      }\n    });\n  });\n\n  const repairElementorWidth = (shell) => {\n    if (!shell) return;\n\n    const wrapper = shell.closest('.plm-shortcode-wrap');\n    const widgetContainer = shell.closest('.elementor-widget-container');\n    const widget = shell.closest('.elementor-widget');\n\n    if (wrapper) {\n      wrapper.style.setProperty('display', 'block', 'important');\n      wrapper.style.setProperty('width', '100%', 'important');\n      wrapper.style.setProperty('max-width', '100%', 'important');\n      wrapper.style.setProperty('min-width', '1px', 'important');\n      wrapper.style.setProperty('box-sizing', 'border-box', 'important');\n      wrapper.style.setProperty('align-self', 'stretch', 'important');\n      wrapper.style.setProperty('flex', '1 1 100%', 'important');\n    }\n\n    if (widgetContainer) {\n      widgetContainer.style.setProperty('display', 'block', 'important');\n      widgetContainer.style.setProperty('width', '100%', 'important');\n      widgetContainer.style.setProperty('max-width', '100%', 'important');\n      widgetContainer.style.setProperty('min-width', '1px', 'important');\n      widgetContainer.style.setProperty('box-sizing', 'border-box', 'important');\n    }\n\n    if (widget) {\n      widget.style.setProperty('width', '100%', 'important');\n      widget.style.setProperty('max-width', '100%', 'important');\n      widget.style.setProperty('min-width', '1px', 'important');\n      widget.style.setProperty('flex-basis', '100%', 'important');\n      widget.style.setProperty('align-self', 'stretch', 'important');\n    }\n\n    shell.style.setProperty('display', 'block', 'important');\n    shell.style.setProperty('width', '100%', 'important');\n    shell.style.setProperty('max-width', '100%', 'important');\n    shell.style.setProperty('min-width', '1px', 'important');\n    shell.style.setProperty('box-sizing', 'border-box', 'important');\n  };\n\n  const findUsableAncestorWidth = (element) => {\n    let current = element ? element.parentElement : null;\n    while (current && current !== document.body) {\n      const rect = current.getBoundingClientRect();\n      if (rect.width >= 50) return rect.width;\n      current = current.parentElement;\n    }\n    return 0;\n  };\n\n  const waitForSize = (element, timeout = 20000) => new Promise((resolve) => {\n    const started = Date.now();\n    let lastRect = element.getBoundingClientRect();\n\n    const check = () => {\n      repairElementorWidth(element);\n      lastRect = element.getBoundingClientRect();\n\n      if (lastRect.width < 50) {\n        const ancestorWidth = findUsableAncestorWidth(element);\n        const wrapper = element.closest('.plm-shortcode-wrap');\n        const widget = element.closest('.elementor-widget');\n\n        \/\/ Elementor can give an auto-width Shortcode widget an intrinsic width\n        \/\/ of 0 when the map is the only content. Debug text previously masked\n        \/\/ this by supplying intrinsic width. If a parent has a real width, use\n        \/\/ that width as a one-frame recovery and then keep the normal 100% CSS.\n        if (ancestorWidth >= 50) {\n          if (widget && widget.getBoundingClientRect().width < 50) {\n            widget.style.setProperty('width', Math.floor(ancestorWidth) + 'px', 'important');\n            widget.style.setProperty('max-width', '100%', 'important');\n          }\n          if (wrapper && wrapper.getBoundingClientRect().width < 50) {\n            wrapper.style.setProperty('width', Math.floor(ancestorWidth) + 'px', 'important');\n            wrapper.style.setProperty('max-width', '100%', 'important');\n          }\n          lastRect = element.getBoundingClientRect();\n        }\n      }\n\n      if (lastRect.width >= 50 && lastRect.height >= 200) {\n        resolve(lastRect);\n        return;\n      }\n\n      if (!element.isConnected || Date.now() - started >= timeout) {\n        resolve(lastRect);\n        return;\n      }\n\n      window.setTimeout(check, 100);\n    };\n\n    check();\n  });\n\n  const waitForVisibleRetry = (shell) => {\n    if (!shell || shell.dataset.plmSizeWatcher === '1') return;\n    shell.dataset.plmSizeWatcher = '1';\n\n    const tryAgain = () => {\n      if (!shell.isConnected) return;\n      repairElementorWidth(shell);\n      const rect = shell.getBoundingClientRect();\n      if (rect.width < 50 || rect.height < 200) return;\n\n      shell.dataset.plmSizeWatcher = '0';\n      shell.dataset.plmInitialized = '0';\n      shell.classList.remove('is-error');\n      const loading = shell.querySelector('.plm-loading');\n      if (loading) {\n        loading.style.display = 'flex';\n        loading.textContent = 'Indl\u00e6ser lokationer...';\n      }\n      initializeOne(shell);\n    };\n\n    if ('ResizeObserver' in window) {\n      const ro = new ResizeObserver(tryAgain);\n      let current = shell;\n      for (let i = 0; current && i < 5; i++, current = current.parentElement) ro.observe(current);\n    }\n\n    if ('IntersectionObserver' in window) {\n      const io = new IntersectionObserver(tryAgain, { threshold: [0, 0.01] });\n      io.observe(shell);\n    }\n\n    window.addEventListener('resize', tryAgain, { passive: true });\n    document.addEventListener('elementor\/popup\/show', tryAgain);\n    window.setTimeout(tryAgain, 250);\n    window.setTimeout(tryAgain, 1000);\n    window.setTimeout(tryAgain, 3000);\n    window.setTimeout(tryAgain, 8000);\n  };\n\n  const getLatLng = (position) => {\n    if (!position) return { lat: 0, lng: 0 };\n    if (typeof position.lat === 'function' && typeof position.lng === 'function') {\n      return { lat: Number(position.lat()), lng: Number(position.lng()) };\n    }\n    return { lat: Number(position.lat), lng: Number(position.lng) };\n  };\n\n  const distanceKm = (a, b) => {\n    const p1 = getLatLng(a);\n    const p2 = getLatLng(b);\n    const toRad = (n) => (n * Math.PI) \/ 180;\n    const dLat = toRad(p2.lat - p1.lat);\n    const dLng = toRad(p2.lng - p1.lng);\n    const lat1 = toRad(p1.lat);\n    const lat2 = toRad(p2.lat);\n    const hav = Math.sin(dLat \/ 2) ** 2 + Math.cos(lat1) * Math.cos(lat2) * Math.sin(dLng \/ 2) ** 2;\n    return 6371 * 2 * Math.atan2(Math.sqrt(hav), Math.sqrt(1 - hav));\n  };\n\n  const initializeOne = async (shell) => {\n    if (!shell || shell.dataset.plmInitialized === '1' || shell.dataset.plmInitialized === 'initializing') return;\n    shell.dataset.plmInitialized = 'initializing';\n    repairElementorWidth(shell);\n\n    updateDebug(shell.id, 'frontend-script 2.3.6: indl\u00e6st', true);\n\n    const canvas = shell.querySelector('.plm-map-canvas');\n    const configId = shell.dataset.plmConfigId;\n    const configNode = configId ? document.getElementById(configId) : null;\n    if (!canvas || !configNode) {\n      showError(shell, 'Frontend-konfigurationen til kortet mangler.');\n      return;\n    }\n\n    let config;\n    try {\n      config = JSON.parse(configNode.textContent || '{}');\n    } catch (error) {\n      showError(shell, 'Kortets JSON-konfiguration kunne ikke l\u00e6ses.');\n      return;\n    }\n\n    const locations = Array.isArray(config.locations) ? config.locations : [];\n    updateDebug(shell.id, 'locations i JS: ' + locations.length);\n\n    const rect = await waitForSize(shell);\n    updateDebug(shell.id, 'shell st\u00f8rrelse: ' + Math.round(rect.width) + ' x ' + Math.round(rect.height));\n    const canvasRect = canvas.getBoundingClientRect();\n    updateDebug(shell.id, 'canvas st\u00f8rrelse: ' + Math.round(canvasRect.width) + ' x ' + Math.round(canvasRect.height));\n    updateDebug(shell.id, 'shell connected: ' + (shell.isConnected ? 'JA' : 'NEJ'));\n    updateDebug(shell.id, 'canvas connected: ' + (canvas.isConnected ? 'JA' : 'NEJ'));\n\n    if (rect.width < 50 || rect.height < 200) {\n      shell.dataset.plmInitialized = 'waiting-size';\n      const loading = shell.querySelector('.plm-loading');\n      if (loading) {\n        loading.style.display = 'flex';\n        loading.textContent = 'Venter p\u00e5 kortets bredde...';\n      }\n      updateDebug(shell.id, 'venter p\u00e5 brugbar bredde - nu: ' + Math.round(rect.width) + ' x ' + Math.round(rect.height));\n      waitForVisibleRetry(shell);\n      return;\n    }\n\n    let maps;\n    try {\n      maps = await loadGoogleMaps(String(config.apiKey || '').trim());\n      maps = await ensureMapsLibrary(maps);\n    } catch (error) {\n      showError(shell, error.message || 'Google Maps kunne ikke indl\u00e6ses.');\n      return;\n    }\n\n    updateDebug(shell.id, 'google.maps: OK');\n    updateDebug(shell.id, 'importLibrary maps: OK');\n\n    \/\/ Google Maps f\u00e5r et helt rent render-target. Det g\u00f8r os uafh\u00e6ngige af\n    \/\/ Elementors DOM-manipulation og af vores egne loading\/debug-elementer.\n    canvas.replaceChildren();\n    const target = document.createElement('div');\n    target.className = 'plm-google-map-target';\n    target.style.cssText = 'position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-height:320px!important;display:block!important;visibility:visible!important;opacity:1!important;';\n    canvas.appendChild(target);\n\n    let map;\n    let idleFired = false;\n    let tilesFired = false;\n    try {\n      const options = {\n        center: { lat: 55.6761, lng: 12.5683 },\n        zoom: 9,\n        styles: mapStyles,\n        disableDefaultUI: true,\n        zoomControl: true,\n        clickableIcons: false,\n        gestureHandling: 'cooperative',\n        backgroundColor: '#e9e9e7'\n      };\n      if (maps.RenderingType && maps.RenderingType.RASTER) {\n        options.renderingType = maps.RenderingType.RASTER;\n      }\n      map = new maps.Map(target, options);\n      shell.dataset.plmInitialized = '1';\n    } catch (error) {\n      shell.dataset.plmInitialized = '0';\n      showError(shell, 'Google Maps kunne ikke oprette kortet: ' + (error.message || String(error)));\n      return;\n    }\n\n    \/\/ Vigtigt: .gm-style er en intern Google-klasse og m\u00e5 ikke bruges som\n    \/\/ success\/failure-test. I nyere Maps-versioner kan DOM'en blive oprettet\n    \/\/ asynkront. Loading-overlayet fjernes derfor straks efter en succesfuld\n    \/\/ constructor, og vi bruger de officielle map-events til diagnostik.\n    shell.classList.remove('is-error');\n    shell.classList.add('is-ready');\n    const loading = shell.querySelector('.plm-loading');\n    if (loading) loading.style.display = 'none';\n    updateDebug(shell.id, 'Map constructor: OK');\n    updateDebug(shell.id, 'render target: ' + Math.round(target.getBoundingClientRect().width) + ' x ' + Math.round(target.getBoundingClientRect().height));\n\n    maps.event.addListenerOnce(map, 'idle', () => {\n      idleFired = true;\n      updateDebug(shell.id, 'Google event idle: JA');\n    });\n    maps.event.addListenerOnce(map, 'tilesloaded', () => {\n      tilesFired = true;\n      updateDebug(shell.id, 'Google event tilesloaded: JA');\n    });\n\n    const bounds = new maps.LatLngBounds();\n    const geocoder = new maps.Geocoder();\n    const infoWindow = new maps.InfoWindow();\n    const placedLocations = [];\n    let markerCount = 0;\n    let geocodeFailed = 0;\n\n    for (const location of locations) {\n      let position = null;\n      const lat = Number(location.lat);\n      const lng = Number(location.lng);\n      if (Number.isFinite(lat) && Number.isFinite(lng)) {\n        position = { lat, lng };\n      } else if (location.geocodeAddress) {\n        position = await geocode(geocoder, location.geocodeAddress);\n        if (!position) geocodeFailed++;\n      }\n\n      if (!position) continue;\n\n      const highlightMode = String(config.highlightMode || 'auto');\n      const active = highlightMode === 'all'\n        ? true\n        : (highlightMode === 'none'\n          ? false\n          : (String(location.siteId || '') !== '' && String(location.siteId || '') === String(config.activeSiteId || '')));\n      const marker = new maps.Marker({\n        map,\n        position,\n        title: String(location.title || ''),\n        icon: {\n          url: markerSvg(active, config),\n          scaledSize: active ? new maps.Size(50, 60) : new maps.Size(46, 55),\n          anchor: active ? new maps.Point(25, 53) : new maps.Point(23, 49)\n        },\n        zIndex: active ? 1000 : 10\n      });\n\n      marker.addListener('click', () => {\n        const address = [location.address, [location.zip, location.city].filter(Boolean).join(' ')].filter(Boolean).join('<br>');\n        const html = '<div class=\"plm-info-window\"><strong>' + escapeHtml(location.title || '') + '<\/strong>'\n          + (address ? '<div>' + address + '<\/div>' : '')\n          + (location.url ? '<a href=\"' + escapeHtml(location.url) + '\">Se lokation<\/a>' : '')\n          + '<\/div>';\n        infoWindow.setContent(html);\n        infoWindow.open({ map, anchor: marker });\n      });\n\n      bounds.extend(position);\n      placedLocations.push({ position, active, location });\n      markerCount++;\n    }\n\n    updateDebug(shell.id, 'markers: ' + markerCount);\n    updateDebug(shell.id, 'geocode fejl: ' + geocodeFailed);\n\n    if (markerCount === 0) {\n      showError(shell, 'Google Maps blev indl\u00e6st, men ingen Privat-lokationer kunne placeres p\u00e5 kortet.');\n      return;\n    }\n\n    let focusBounds = bounds;\n    let focusPadding = 55;\n    const contextualHighlight = String(config.highlightMode || 'auto') === 'auto' && !config.overviewMode;\n    const activePlaced = contextualHighlight ? placedLocations.find((item) => item.active) : null;\n\n    if (activePlaced && placedLocations.length > 1) {\n      const nearest = placedLocations\n        .filter((item) => !item.active)\n        .sort((a, b) => distanceKm(activePlaced.position, a.position) - distanceKm(activePlaced.position, b.position))\n        .slice(0, 4);\n\n      const focusItems = [activePlaced, ...nearest];\n      focusBounds = new maps.LatLngBounds();\n      focusItems.forEach((item) => focusBounds.extend(item.position));\n      focusPadding = 70;\n      updateDebug(shell.id, 'viewport: aktiv lokation + ' + nearest.length + ' n\u00e6rmeste');\n    }\n\n    const requestedZoomRaw = Number(config.zoom);\n    const hasRequestedZoom = Number.isFinite(requestedZoomRaw) && requestedZoomRaw >= 1 && requestedZoomRaw <= 22;\n    const requestedZoom = hasRequestedZoom ? requestedZoomRaw : null;\n\n    const applyViewport = () => {\n      if (markerCount === 1) {\n        map.setCenter(bounds.getCenter());\n        map.setZoom(requestedZoom !== null ? requestedZoom : 13);\n        return;\n      }\n\n      map.fitBounds(focusBounds, focusPadding);\n      if (requestedZoom !== null) {\n        window.setTimeout(() => map.setZoom(requestedZoom), 0);\n      }\n    };\n\n    applyViewport();\n    updateDebug(shell.id, 'zoom: ' + (requestedZoom !== null ? requestedZoom : 'auto'));\n\n    const forceResize = () => {\n      try {\n        maps.event.trigger(map, 'resize');\n        applyViewport();\n      } catch (error) {\n        \/\/ No-op.\n      }\n    };\n\n    window.setTimeout(forceResize, 250);\n    window.setTimeout(forceResize, 1000);\n    window.setTimeout(forceResize, 2500);\n    window.setTimeout(forceResize, 5000);\n\n    \/\/ Elementor can finish layout\/animations after the shortcode has already\n    \/\/ initialized. Repaint whenever the map becomes visible or the viewport\n    \/\/ changes, so non-debug mode behaves exactly like debug mode.\n    if ('IntersectionObserver' in window) {\n      const intersectionObserver = new IntersectionObserver((entries) => {\n        entries.forEach((entry) => {\n          if (entry.isIntersecting && entry.intersectionRatio > 0) {\n            forceResize();\n          }\n        });\n      }, { threshold: [0, 0.01, 0.25] });\n      intersectionObserver.observe(shell);\n    }\n\n    window.addEventListener('load', forceResize, { once: true });\n    window.addEventListener('resize', forceResize, { passive: true });\n\n    \/\/ Kun diagnostik - ingen fatal fejl baseret p\u00e5 Googles private DOM-klasser.\n    window.setTimeout(() => {\n      updateDebug(shell.id, 'target childElements efter 2s: ' + target.childElementCount);\n      updateDebug(shell.id, 'idle efter 2s: ' + (idleFired ? 'JA' : 'NEJ'));\n      updateDebug(shell.id, 'tilesloaded efter 2s: ' + (tilesFired ? 'JA' : 'NEJ'));\n      updateDebug(shell.id, 'target connected efter 2s: ' + (target.isConnected ? 'JA' : 'NEJ'));\n    }, 2000);\n\n    window.setTimeout(() => {\n      if (!idleFired && target.childElementCount === 0) {\n        updateDebug(shell.id, 'ADVARSEL: Google har endnu ikke indsat DOM efter 8s. Kortet skjules ikke af pluginet.');\n        console.warn('[Pelican Location Map] Google Map constructor lykkedes, men render-target er stadig tomt efter 8 sekunder.', { shell, target, map });\n      }\n    }, 8000);\n\n    if ('ResizeObserver' in window) {\n      const observer = new ResizeObserver(() => forceResize());\n      observer.observe(shell);\n    }\n  };\n\n  const boot = () => {\n    const shells = document.querySelectorAll('.pelican-location-map[data-plm-map=\"1\"]');\n    shells.forEach((shell) => initializeOne(shell));\n  };\n\n  window.PelicanLocationMapBoot = boot;\n  boot();\n  window.setTimeout(boot, 250);\n  window.setTimeout(boot, 1000);\n  window.setTimeout(boot, 2500);\n\n  document.addEventListener('elementor\/frontend\/init', () => {\n    boot();\n    window.setTimeout(boot, 300);\n    window.setTimeout(boot, 1500);\n  });\n})();\n<\/script><script>(function(){var run=function(){if(window.PelicanLocationMapBoot){window.PelicanLocationMapBoot();window.setTimeout(window.PelicanLocationMapBoot,80);window.setTimeout(window.PelicanLocationMapBoot,600);window.setTimeout(window.PelicanLocationMapBoot,1800);}};if(document.readyState===\"loading\"){document.addEventListener(\"DOMContentLoaded\",run);}run();window.addEventListener(\"load\",run,{once:true});})();<\/script><\/div><\/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\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7ce2995 e-flex e-con-boxed e-con e-child\" data-id=\"7ce2995\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-96c4189 elementor-widget elementor-widget-shortcode\" data-id=\"96c4189\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div class=\"results-page\">\n    <div class=\"results-page__main\" aria-label=\"Results page content\">\n\n        \n        <!-- Size selector -->\n        \n        <section class=\"results-page__sizes\">\n            <div class=\"container\">\n                <div class=\"results-sizes js-results-sizes\">\n                                                            <form class=\"results-sizes__form\" action=\"#\" method=\"get\" aria-label=\"Choose storage unit size\">\n                        <div class=\"results-sizes__slider swiper js-results-sizes-swiper\">\n                            <div class=\"results-sizes__list swiper-wrapper\" role=\"radiogroup\" aria-label=\"Available unit sizes\">\n\n                                <div class=\"results-sizes__item swiper-slide\">\n                                    <label class=\"results-sizes__card\" for=\"unit-size-small\">\n                                        <input class=\"results-sizes__input\" id=\"unit-size-small\" type=\"radio\" name=\"unit-size\" value=\"small\">\n                                        <span class=\"results-sizes__body\">\n                                            <span class=\"results-sizes__title\">Small<\/span>\n                                            <span class=\"results-sizes__metric\">Up to 3 m<sup>2<\/sup><\/span>\n                                            <span class=\"results-sizes__description\">\n                                                Perfect for boxes, suitcases, sports equipment and smaller pieces of furniture.                                            <\/span>\n                                            <span class=\"results-sizes__visual\">\n                                                <span class=\"results-sizes__media\" aria-hidden=\"true\">\n                                                    <img decoding=\"async\" src=\"https:\/\/pelican.dk\/wp-content\/themes\/pelican\/resources\/images\/results\/unit-sizes\/small-private.png\" alt=\"Small storage unit\" loading=\"lazy\">\n                                                <\/span>\n                                            <\/span>\n                                        <\/span>\n                                    <\/label>\n                                <\/div>\n\n                                <div class=\"results-sizes__item swiper-slide\">\n                                    <label class=\"results-sizes__card\" for=\"unit-size-medium\">\n                                        <input class=\"results-sizes__input\" id=\"unit-size-medium\" type=\"radio\" name=\"unit-size\" value=\"medium\">\n                                        <span class=\"results-sizes__body\">\n                                            <span class=\"results-sizes__title\">Medium<\/span>\n                                            <span class=\"results-sizes__metric\">From 4 up to 8 m<sup>2<\/sup><\/span>\n                                            <span class=\"results-sizes__description\">\n                                                Plenty of space for furniture, boxes and belongings from a smaller home.                                            <\/span>\n                                            <span class=\"results-sizes__visual\">\n                                                <span class=\"results-sizes__media\" aria-hidden=\"true\">\n                                                    <img decoding=\"async\" src=\"https:\/\/pelican.dk\/wp-content\/themes\/pelican\/resources\/images\/results\/unit-sizes\/medium-private.png\" alt=\"Medium storage unit\" loading=\"lazy\">\n                                                <\/span>\n                                            <\/span>\n                                        <\/span>\n                                    <\/label>\n                                <\/div>\n\n                                <div class=\"results-sizes__item swiper-slide\">\n                                    <label class=\"results-sizes__card\" for=\"unit-size-large\">\n                                        <input class=\"results-sizes__input\" id=\"unit-size-large\" type=\"radio\" name=\"unit-size\" value=\"large\">\n                                        <span class=\"results-sizes__body\">\n                                            <span class=\"results-sizes__title\">Large<\/span>\n                                            <span class=\"results-sizes__metric\">From 9 up to 14 m<sup>2<\/sup><\/span>\n                                            <span class=\"results-sizes__description\">\n                                                Ideal for larger amounts of household belongings, furniture, bicycles and items from several rooms.                                            <\/span>\n                                            <span class=\"results-sizes__visual\">\n                                                <span class=\"results-sizes__media\" aria-hidden=\"true\">\n                                                    <img decoding=\"async\" src=\"https:\/\/pelican.dk\/wp-content\/themes\/pelican\/resources\/images\/results\/unit-sizes\/large-private.png\" alt=\"Large storage unit\" loading=\"lazy\">\n                                                <\/span>\n                                            <\/span>\n                                        <\/span>\n                                    <\/label>\n                                <\/div>\n\n                                <div class=\"results-sizes__item swiper-slide\">\n                                    <label class=\"results-sizes__card\" for=\"unit-size-xl\">\n                                        <input class=\"results-sizes__input\" id=\"unit-size-xl\" type=\"radio\" name=\"unit-size\" value=\"extra-large\">\n                                        <span class=\"results-sizes__body\">\n                                            <span class=\"results-sizes__title\">Extra Large<\/span>\n                                            <span class=\"results-sizes__metric\">From 15 m<sup>2<\/sup> and larger<\/span>\n                                            <span class=\"results-sizes__description\">\n                                                Lots of space for the contents of an entire home, large furniture and plenty of moving boxes.                                            <\/span>\n                                            <span class=\"results-sizes__visual\">\n                                                <span class=\"results-sizes__media\" aria-hidden=\"true\">\n                                                    <img decoding=\"async\" src=\"https:\/\/pelican.dk\/wp-content\/themes\/pelican\/resources\/images\/results\/unit-sizes\/extra-large-private.png\" alt=\"Extra Large storage unit\" loading=\"lazy\">\n                                                <\/span>\n                                            <\/span>\n                                        <\/span>\n                                    <\/label>\n                                <\/div>\n\n                            <\/div>\n                            <div class=\"results-sizes__controls\">\n                                <button class=\"results-sizes__control js-results-sizes-prev\" type=\"button\" aria-label=\"Previous unit size\">\n                                    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                                        <path d=\"M13 4L6.75 10.25L13 16.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                    <\/svg>\n                                <\/button>\n                                <button class=\"results-sizes__control js-results-sizes-next\" type=\"button\" aria-label=\"Next unit size\">\n                                    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                                        <path d=\"M7 4L13.25 10.25L7 16.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                    <\/svg>\n                                <\/button>\n                            <\/div>\n                        <\/div>\n                    <\/form>\n                                    <\/div>\n            <\/div>\n        <\/section>\n        \n\n        <!-- Locations container (populated by JS) -->\n        <section class=\"results-page__locations\">\n            <div class=\"container\">\n                <div class=\"results-locations js-results-locations\" aria-label=\"Storage locations\">\n                    <div class=\"results-locations__loader\" role=\"status\" aria-live=\"polite\" aria-label=\"Loading locations\"><span><\/span><\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n    <\/div>\n<\/div>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bdea7dd e-flex e-con-boxed e-con e-parent\" data-id=\"bdea7dd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-063374b e-con-full reviews-slider e-flex e-con e-child\" data-id=\"063374b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-36a1624 e-con-full e-flex e-con e-child\" data-id=\"36a1624\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4568815 elementor-widget elementor-widget-html\" data-id=\"4568815\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script defer async src='https:\/\/cdn.trustindex.io\/loader.js?019ae18804c147206906c097290'><\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\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>Find a storage unit near you If you live in Copenhagen or the surrounding area, there is a good chance that you have a Pelican storage facility nearby. We have facilities from Amagerbro to Hiller\u00f8d, with storage units for both private and business customers. Find your nearest facility below, or call 80 20 70 40. [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-9617","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.5 (Yoast SEO v28.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Locations | Lej opbevaringsrum \u2013 sikker opbevaring | Pelican Self Storage<\/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:\/\/pelican.dk\/en\/locations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Locations\" \/>\n<meta property=\"og:description\" content=\"Find a storage unit near you If you live in Copenhagen or the surrounding area, there is a good chance that you have a Pelican storage facility nearby. We have facilities from Amagerbro to Hiller\u00f8d, with storage units for both private and business customers. Find your nearest facility below, or call 80 20 70 40. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pelican.dk\/en\/locations\/\" \/>\n<meta property=\"og:site_name\" content=\"Lej opbevaringsrum \u2013 sikker opbevaring | Pelican Self Storage\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/PelicanSelfStorageDenmark\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T13:30:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pelican.dk\/wp-content\/uploads\/2026\/06\/Pelican-Social-Image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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:\\\/\\\/pelican.dk\\\/en\\\/locations\\\/\",\"url\":\"https:\\\/\\\/pelican.dk\\\/en\\\/locations\\\/\",\"name\":\"Locations | Lej opbevaringsrum \u2013 sikker opbevaring | Pelican Self Storage\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pelican.dk\\\/en\\\/#website\"},\"datePublished\":\"2026-05-19T09:29:59+00:00\",\"dateModified\":\"2026-09-14T13:30:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/pelican.dk\\\/en\\\/locations\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/pelican.dk\\\/en\\\/locations\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/pelican.dk\\\/en\\\/locations\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/pelican.dk\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Locations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pelican.dk\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/pelican.dk\\\/en\\\/\",\"name\":\"Pelican Self Storage\",\"description\":\"Lej et sikkert opbevaringsrum hos Pelican. V\u00e6lg mellem mange st\u00f8rrelser, fleksible lejevilk\u00e5r og 13 lokationer i K\u00f8benhavn og Nordsj\u00e6lland.\",\"publisher\":{\"@id\":\"https:\\\/\\\/pelican.dk\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pelican.dk\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/pelican.dk\\\/en\\\/#organization\",\"name\":\"Pelican Self Storage\",\"url\":\"https:\\\/\\\/pelican.dk\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/pelican.dk\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/pelican.dk\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Logo.svg\",\"contentUrl\":\"https:\\\/\\\/pelican.dk\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Logo.svg\",\"width\":184,\"height\":20,\"caption\":\"Pelican Self Storage\"},\"image\":{\"@id\":\"https:\\\/\\\/pelican.dk\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/PelicanSelfStorageDenmark\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/2030773\\\/\",\"https:\\\/\\\/www.instagram.com\\\/pelicanselfstorage\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Locations | Lej opbevaringsrum \u2013 sikker opbevaring | Pelican Self Storage","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:\/\/pelican.dk\/en\/locations\/","og_locale":"en_US","og_type":"article","og_title":"Locations","og_description":"Find a storage unit near you If you live in Copenhagen or the surrounding area, there is a good chance that you have a Pelican storage facility nearby. We have facilities from Amagerbro to Hiller\u00f8d, with storage units for both private and business customers. Find your nearest facility below, or call 80 20 70 40. [&hellip;]","og_url":"https:\/\/pelican.dk\/en\/locations\/","og_site_name":"Lej opbevaringsrum \u2013 sikker opbevaring | Pelican Self Storage","article_publisher":"https:\/\/www.facebook.com\/PelicanSelfStorageDenmark","article_modified_time":"2026-09-14T13:30:14+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/pelican.dk\/wp-content\/uploads\/2026\/06\/Pelican-Social-Image.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/pelican.dk\/en\/locations\/","url":"https:\/\/pelican.dk\/en\/locations\/","name":"Locations | Lej opbevaringsrum \u2013 sikker opbevaring | Pelican Self Storage","isPartOf":{"@id":"https:\/\/pelican.dk\/en\/#website"},"datePublished":"2026-05-19T09:29:59+00:00","dateModified":"2026-09-14T13:30:14+00:00","breadcrumb":{"@id":"https:\/\/pelican.dk\/en\/locations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pelican.dk\/en\/locations\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/pelican.dk\/en\/locations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/pelican.dk\/en\/"},{"@type":"ListItem","position":2,"name":"Locations"}]},{"@type":"WebSite","@id":"https:\/\/pelican.dk\/en\/#website","url":"https:\/\/pelican.dk\/en\/","name":"Pelican Self Storage","description":"Lej et sikkert opbevaringsrum hos Pelican. V\u00e6lg mellem mange st\u00f8rrelser, fleksible lejevilk\u00e5r og 13 lokationer i K\u00f8benhavn og Nordsj\u00e6lland.","publisher":{"@id":"https:\/\/pelican.dk\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pelican.dk\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/pelican.dk\/en\/#organization","name":"Pelican Self Storage","url":"https:\/\/pelican.dk\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/pelican.dk\/en\/#\/schema\/logo\/image\/","url":"https:\/\/pelican.dk\/wp-content\/uploads\/2026\/05\/Logo.svg","contentUrl":"https:\/\/pelican.dk\/wp-content\/uploads\/2026\/05\/Logo.svg","width":184,"height":20,"caption":"Pelican Self Storage"},"image":{"@id":"https:\/\/pelican.dk\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/PelicanSelfStorageDenmark","https:\/\/www.linkedin.com\/company\/2030773\/","https:\/\/www.instagram.com\/pelicanselfstorage\/"]}]}},"_links":{"self":[{"href":"https:\/\/pelican.dk\/en\/wp-json\/wp\/v2\/pages\/9617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pelican.dk\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pelican.dk\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pelican.dk\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/pelican.dk\/en\/wp-json\/wp\/v2\/comments?post=9617"}],"version-history":[{"count":1,"href":"https:\/\/pelican.dk\/en\/wp-json\/wp\/v2\/pages\/9617\/revisions"}],"predecessor-version":[{"id":9619,"href":"https:\/\/pelican.dk\/en\/wp-json\/wp\/v2\/pages\/9617\/revisions\/9619"}],"wp:attachment":[{"href":"https:\/\/pelican.dk\/en\/wp-json\/wp\/v2\/media?parent=9617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}