Rudolf-Diesel-Straße 3, 53359 Rheinbach
* {
box-sizing: border-box;
}
body {
margin: 0;
font-family: Arial, sans-serif;
}
.map-wrapper {
width: 100%;
min-width: 0;
border-radius: 12px;
overflow: hidden;
border: 1px solid #d9d9d9;
background: #f7f7f7;
}
.map-preview-block {
background: #f7f7f7;
}
.map-placeholder {
min-height: 420px;
background-image: url(‚https://sudoma.de/wp-content/uploads/2026/03/karte-rheinbach-vorschau.png‘);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-color: #e9e9e9;
cursor: pointer;
position: relative;
}
.map-placeholder:hover::after,
.map-placeholder:focus::after {
content: „“;
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.08);
}
.map-placeholder:focus {
outline: 3px solid #1f2937;
outline-offset: -3px;
}
.map-consent {
padding: 24px;
background: #fff;
border-top: 1px solid #e5e5e5;
}
.map-consent h2 {
margin: 0 0 12px;
font-size: 20px;
}
.map-consent p {
margin: 0;
line-height: 1.5;
color: #333;
}
.map-stage {
background: #fff;
}
#map {
width: 100%;
height: 420px;
display: block;
}
.map-error {
margin: 0;
padding: 16px 24px;
color: #8a1c1c;
background: #fff3f3;
border-top: 1px solid #f1d0d0;
}
@media (max-width: 640px) {
.map-placeholder,
#map {
min-height: 340px;
height: 340px;
}
.map-consent {
padding: 18px;
}
}
Interaktive Karte starten
Mit Klick auf die Karte willigen Sie ein, dass Inhalte von
unpkg.com (Leaflet) und OpenStreetMap
nachgeladen werden. Dabei wird Ihre IP-Adresse an diese externen Anbieter
übermittelt.
Die Karte konnte nicht geladen werden. Bitte versuchen Sie es erneut.
(function () {
const lat = 50.62363056;
const lon = 6.96828333;
const leafletCssHref = ‚https://unpkg.com/leaflet@1.9.4/dist/leaflet.css‘;
const leafletCssIntegrity = ’sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=‘;
const leafletJsHref = ‚https://unpkg.com/leaflet@1.9.4/dist/leaflet.js‘;
const leafletJsIntegrity = ’sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=‘;
const previewBlock = document.getElementById(‚map-preview-block‘);
const placeholder = document.getElementById(‚map-placeholder‘);
const stage = document.getElementById(‚map-stage‘);
const errorBox = document.getElementById(‚map-error‘);
let map = null;
let loading = false;
function ensureLeafletCss() {
return new Promise(function (resolve, reject) {
const existing = document.querySelector(‚link[href=“‚ + leafletCssHref + ‚“]‘);
if (existing) {
resolve();
return;
}
const link = document.createElement(‚link‘);
link.rel = ’stylesheet‘;
link.href = leafletCssHref;
link.integrity = leafletCssIntegrity;
link.crossOrigin = ‚anonymous‘;
link.onload = function () { resolve(); };
link.onerror = function () {
reject(new Error(‚Leaflet-CSS konnte nicht geladen werden.‘));
};
document.head.appendChild(link);
});
}
function ensureLeafletJs() {
return new Promise(function (resolve, reject) {
if (window.L) {
resolve();
return;
}
const existing = document.querySelector(’script[src=“‚ + leafletJsHref + ‚“]‘);
if (existing) {
existing.addEventListener(‚load‘, function () { resolve(); }, { once: true });
existing.addEventListener(‚error‘, function () {
reject(new Error(‚Leaflet-JS konnte nicht geladen werden.‘));
}, { once: true });
return;
}
const script = document.createElement(’script‘);
script.src = leafletJsHref;
script.integrity = leafletJsIntegrity;
script.crossOrigin = ‚anonymous‘;
script.onload = function () { resolve(); };
script.onerror = function () {
reject(new Error(‚Leaflet-JS konnte nicht geladen werden.‘));
};
document.body.appendChild(script);
});
}
function refreshMap() {
if (map) {
map.invalidateSize();
}
}
async function loadMap() {
if (loading || map) {
return;
}
loading = true;
errorBox.hidden = true;
try {
await ensureLeafletCss();
await ensureLeafletJs();
previewBlock.hidden = true;
stage.hidden = false;
await new Promise(function (resolve) {
requestAnimationFrame(function () {
resolve();
});
});
map = L.map(‚map‘, {
center: [lat, lon],
zoom: 14,
scrollWheelZoom: true
});
L.tileLayer(‚https://tile.openstreetmap.org/{z}/{x}/{y}.png‘, {
maxZoom: 19,
attribution: ‚©
OpenStreetMap contributors‘
}).addTo(map);
L.marker([lat, lon])
.addTo(map)
.bindPopup(
‚
SUDOMA GmbHRudolf-Diesel-Straße 3
53359 Rheinbach‘
)
.openPopup();
refreshMap();
setTimeout(refreshMap, 150);
setTimeout(refreshMap, 400);
} catch (error) {
console.error(error);
previewBlock.hidden = false;
stage.hidden = true;
errorBox.hidden = false;
} finally {
loading = false;
}
}
placeholder.addEventListener(‚click‘, loadMap);
placeholder.addEventListener(‚keydown‘, function (event) {
if (event.key === ‚Enter‘ || event.key === ‚ ‚) {
event.preventDefault();
loadMap();
}
});
window.addEventListener(‚resize‘, refreshMap);
})();