{"id":189514,"date":"2025-09-25T12:07:27","date_gmt":"2025-09-25T10:07:27","guid":{"rendered":"https:\/\/hossoland.pl\/?page_id=189514"},"modified":"2025-09-25T12:55:05","modified_gmt":"2025-09-25T10:55:05","slug":"mapa","status":"publish","type":"page","link":"https:\/\/hossoland.pl\/de\/mapa\/","title":{"rendered":"Mapa"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"189514\" class=\"elementor elementor-189514\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-196d926 e-flex e-con-boxed e-con e-parent\" data-id=\"196d926\" 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-1983026 elementor-widget elementor-widget-html\" data-id=\"1983026\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- Paste this into an Elementor HTML widget -->\n<div class=\"ezc-wrapper\">\n  <div class=\"ezc-toolbar\">\n    <button id=\"ezc-zoom-out\">-<\/button>\n    <button id=\"ezc-zoom-in\">+<\/button>\n    <button id=\"ezc-reset\">Reset<\/button>\n  <\/div>\n\n  <div class=\"ezc-viewport\" style=\"touch-action: none;\">\n    <img decoding=\"async\" id=\"ezc-img\" src=\"\/wp-content\/uploads\/2025\/09\/mapa_pl-scaled.png\" \/>\n  <\/div>\n<\/div>\n\n<style>\n.ezc-wrapper { margin: 0 auto; user-select: none; }\n.ezc-toolbar { display:flex; gap:8px; align-items:center; margin-bottom:8px;position:absolute;z-index:99;top:15px;left:15px; }\n.ezc-toolbar button {\n  padding: 6px 12px;\n  border: none;\n  background: #333;\n  color: #fff;\n  border-radius: 4px;\n  cursor: pointer;\n}\n.ezc-toolbar button:hover {\n  background: #555;\n}\n.ezc-viewport {\n  width:100%;\n  height:810px; \/* adjust as needed *\/\n  overflow:hidden;\n  position:relative;\n  background:#f6f6f6;\n  border-radius:8px;\n  box-shadow: 0 0 10px rgba(0,0,0,0.5);\n}\n.ezc-viewport img {\n  position:absolute;\n  left:0;\n  top:0;\n  transform-origin: 0 0;\n  will-change: transform;\n  touch-action: none;\n  user-drag: none;\n  user-select: none;\n  max-width:none;\n  height:auto;\n  width:auto;\n  cursor: move;\n}\n<\/style>\n\n<script>\n(() => {\n  const img = document.getElementById('ezc-img');\n  const container = document.querySelector('.ezc-viewport');\n  const zoomInBtn = document.getElementById('ezc-zoom-in');\n  const zoomOutBtn = document.getElementById('ezc-zoom-out');\n  const resetBtn = document.getElementById('ezc-reset');\n\n  let scale = 1;\n  let minScale = 1; \/\/ will be updated to \"fit to screen\"\n  const maxScale = 6;\n  let translate = { x: 0, y: 0 };\n\n  let dragging = false;\n  let lastPointer = { x: 0, y: 0 };\n\n  function clampScale(s) {\n    return Math.min(maxScale, Math.max(minScale, s));\n  }\n\n  function clampTranslate() {\n    const rect = container.getBoundingClientRect();\n    const imgWidth = img.naturalWidth * scale;\n    const imgHeight = img.naturalHeight * scale;\n\n    const minX = rect.width - imgWidth;\n    const minY = rect.height - imgHeight;\n\n    if (imgWidth > rect.width) {\n      translate.x = Math.min(0, Math.max(translate.x, minX));\n    } else {\n      translate.x = (rect.width - imgWidth) \/ 2;\n    }\n\n    if (imgHeight > rect.height) {\n      translate.y = Math.min(0, Math.max(translate.y, minY));\n    } else {\n      translate.y = (rect.height - imgHeight) \/ 2;\n    }\n  }\n\n  function applyTransform() {\n    clampTranslate();\n    img.style.transform = `translate(${translate.x}px, ${translate.y}px) scale(${scale})`;\n  }\n\n  function zoomAt(factor, cx, cy) {\n    const oldScale = scale;\n    let newScale = clampScale(oldScale * factor);\n    if (Math.abs(newScale - oldScale) < 0.0001) return;\n\n    translate.x += (1 - newScale \/ oldScale) * (cx - translate.x);\n    translate.y += (1 - newScale \/ oldScale) * (cy - translate.y);\n\n    scale = newScale;\n    applyTransform();\n  }\n\n  \/\/ wheel zoom\n  container.addEventListener('wheel', (ev) => {\n    ev.preventDefault();\n    const rect = container.getBoundingClientRect();\n    const cx = ev.clientX - rect.left;\n    const cy = ev.clientY - rect.top;\n    zoomAt(1 + (-ev.deltaY * 0.0015), cx, cy);\n  }, { passive: false });\n\n  \/\/ drag\n  container.addEventListener('pointerdown', (ev) => {\n    ev.preventDefault();\n    dragging = true;\n    container.setPointerCapture(ev.pointerId);\n    lastPointer.x = ev.clientX;\n    lastPointer.y = ev.clientY;\n  });\n\n  container.addEventListener('pointermove', (ev) => {\n    if (!dragging) return;\n    const dx = ev.clientX - lastPointer.x;\n    const dy = ev.clientY - lastPointer.y;\n    lastPointer.x = ev.clientX;\n    lastPointer.y = ev.clientY;\n\n    translate.x += dx;\n    translate.y += dy;\n    applyTransform();\n  });\n\n  container.addEventListener('pointerup', (ev) => {\n    dragging = false;\n    try { container.releasePointerCapture(ev.pointerId); } catch(e) {}\n  });\n  container.addEventListener('pointercancel', () => dragging = false);\n\n  \/\/ buttons\n  zoomInBtn.addEventListener('click', () => {\n    const rect = container.getBoundingClientRect();\n    zoomAt(1.2, rect.width\/2, rect.height\/2);\n  });\n\n  zoomOutBtn.addEventListener('click', () => {\n    const rect = container.getBoundingClientRect();\n    zoomAt(0.8, rect.width\/2, rect.height\/2);\n  });\n\n  resetBtn.addEventListener('click', () => {\n    fitImage();\n  });\n\n  \/\/ double click zoom\n  container.addEventListener('dblclick', (ev) => {\n    const rect = container.getBoundingClientRect();\n    const cx = ev.clientX - rect.left;\n    const cy = ev.clientY - rect.top;\n    zoomAt(scale < 1.9 ? 2 : 0.5, cx, cy);\n  });\n\n  img.addEventListener('dragstart', (e) => e.preventDefault());\n\n  \/\/ initial fit\n  function fitImage() {\n    const rect = container.getBoundingClientRect();\n    const scaleX = rect.width \/ img.naturalWidth;\n    const scaleY = rect.height \/ img.naturalHeight;\n    minScale = Math.min(scaleX, scaleY); \/\/ dynamic minimum\n    scale = minScale;\n    translate.x = (rect.width - img.naturalWidth * scale) \/ 2;\n    translate.y = (rect.height - img.naturalHeight * scale) \/ 2;\n    applyTransform();\n  }\n\n  img.onload = fitImage;\n})();\n<\/script>\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>","protected":false},"excerpt":{"rendered":"<p>&#8211; + Reset<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-189514","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.8 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Mapa - HOSSOLAND - Nieziemski park rozrywki<\/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:\/\/hossoland.pl\/de\/mapa\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mapa\" \/>\n<meta property=\"og:description\" content=\"&#8211; + Reset\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hossoland.pl\/de\/mapa\/\" \/>\n<meta property=\"og:site_name\" content=\"HOSSOLAND - Nieziemski park rozrywki\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-25T10:55:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hossoland.pl\/wp-content\/uploads\/2025\/06\/image-2025-06-25-17-06-27-883_xnc.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hossoland.pl\\\/mapa\\\/\",\"url\":\"https:\\\/\\\/hossoland.pl\\\/mapa\\\/\",\"name\":\"Mapa - HOSSOLAND - Nieziemski park rozrywki\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hossoland.pl\\\/#website\"},\"datePublished\":\"2025-09-25T10:07:27+00:00\",\"dateModified\":\"2025-09-25T10:55:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hossoland.pl\\\/mapa\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hossoland.pl\\\/mapa\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hossoland.pl\\\/mapa\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/hossoland.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mapa\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hossoland.pl\\\/#website\",\"url\":\"https:\\\/\\\/hossoland.pl\\\/\",\"name\":\"HOSSOLAND - Nieziemski park rozrywki\",\"description\":\"Nieziemski park rozrywki\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/hossoland.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mapa - HOSSOLAND - Nieziemski park rozrywki","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:\/\/hossoland.pl\/de\/mapa\/","og_locale":"de_DE","og_type":"article","og_title":"Mapa","og_description":"&#8211; + Reset","og_url":"https:\/\/hossoland.pl\/de\/mapa\/","og_site_name":"HOSSOLAND - Nieziemski park rozrywki","article_modified_time":"2025-09-25T10:55:05+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/hossoland.pl\/wp-content\/uploads\/2025\/06\/image-2025-06-25-17-06-27-883_xnc.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/hossoland.pl\/mapa\/","url":"https:\/\/hossoland.pl\/mapa\/","name":"Mapa - HOSSOLAND - Nieziemski park rozrywki","isPartOf":{"@id":"https:\/\/hossoland.pl\/#website"},"datePublished":"2025-09-25T10:07:27+00:00","dateModified":"2025-09-25T10:55:05+00:00","breadcrumb":{"@id":"https:\/\/hossoland.pl\/mapa\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hossoland.pl\/mapa\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/hossoland.pl\/mapa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/hossoland.pl\/"},{"@type":"ListItem","position":2,"name":"Mapa"}]},{"@type":"WebSite","@id":"https:\/\/hossoland.pl\/#website","url":"https:\/\/hossoland.pl\/","name":"HOSSOLAND - Ein unheimlicher Freizeitpark","description":"Ein unheimlicher Themenpark","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hossoland.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"}]}},"_links":{"self":[{"href":"https:\/\/hossoland.pl\/de\/wp-json\/wp\/v2\/pages\/189514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hossoland.pl\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hossoland.pl\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hossoland.pl\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hossoland.pl\/de\/wp-json\/wp\/v2\/comments?post=189514"}],"version-history":[{"count":35,"href":"https:\/\/hossoland.pl\/de\/wp-json\/wp\/v2\/pages\/189514\/revisions"}],"predecessor-version":[{"id":189562,"href":"https:\/\/hossoland.pl\/de\/wp-json\/wp\/v2\/pages\/189514\/revisions\/189562"}],"wp:attachment":[{"href":"https:\/\/hossoland.pl\/de\/wp-json\/wp\/v2\/media?parent=189514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}