{"id":67345,"date":"2023-08-22T14:24:39","date_gmt":"2023-08-22T12:24:39","guid":{"rendered":"https:\/\/rasolar.be\/carte-de-nos-realisations\/"},"modified":"2026-10-28T09:03:13","modified_gmt":"2026-10-28T08:03:13","slug":"carte-de-nos-realisations","status":"publish","type":"page","link":"https:\/\/rasolar.be\/fr\/carte-de-nos-realisations\/","title":{"rendered":"Carte de nos r\u00e9alisations"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"67345\" class=\"elementor elementor-67345 elementor-13394\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3d0d943 section-m e-flex e-con-boxed e-con e-child\" data-id=\"3d0d943\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d1f3e3b e-con-full e-flex e-con e-child\" data-id=\"d1f3e3b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8fe3001 elementor-widget elementor-widget-image\" data-id=\"8fe3001\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"22\" height=\"22\" src=\"https:\/\/rasolar.be\/wp-content\/uploads\/g-icon.svg\" class=\"attachment-full size-full wp-image-66372\" alt=\"ic\u00f4ne g\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-baa5040 elementor-widget elementor-widget-heading\" data-id=\"baa5040\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/maps.app.goo.gl\/f1MgXtZdSXAzx4Q27\" target=\"_blank\">4,8 <i class=\"fa-sharp fa-solid fa-star\"><\/i><i class=\"fa-sharp fa-solid fa-star\"><\/i><i class=\"fa-sharp fa-solid fa-star\"><\/i><i class=\"fa-sharp fa-solid fa-star\"><\/i><i class=\"fa-sharp fa-solid fa-star\"><\/i> 866  Avis Google<\/a><\/span>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a32221 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"1a32221\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">D\u00e9couvre nos 5.743 r\u00e9alisations dans toute la Belgique<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6bac6de elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"6bac6de\" 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>De la c\u00f4te aux Ardennes, nous installons chaque jour des solutions \u00e9nerg\u00e9tiques chez des clients dans toute la Belgique. Sur la carte, tu peux voir o\u00f9 nous avons d\u00e9j\u00e0 pos\u00e9 des panneaux solaires, des batteries domestiques, des bornes de recharge et d&rsquo;autres solutions, chaque fois adapt\u00e9es \u00e0 l&rsquo;habitation et \u00e0 la consommation. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bcc7490 elementor-widget__width-inherit elementor-widget elementor-widget-shortcode\" data-id=\"bcc7490\" 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\"><link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\">\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet.markercluster@1.5.3\/dist\/MarkerCluster.css\">\n<style>\n\/* Realisatiemap in Google Maps-stijl met Rasolar-accent #0E4A9A en lettertype Figtree. *\/\n.rasolar-realisatiemap { position: relative; width: 100%; border-radius: 16px; overflow: hidden; background: #E5E3DF; font-family: figtree, Roboto, sans-serif; opacity: 0; transition: opacity .6s ease; }\n.rasolar-realisatiemap.rrm-ready { opacity: 1; }\n.rasolar-realisatiemap .leaflet-control-attribution { font-size: 10px; background: rgba(255,255,255,.75); }\n\/* Knoppen zoals Google Maps: wit, zachte schaduw. *\/\n.rasolar-realisatiemap .leaflet-bar { border: 0; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.3); }\n.rasolar-realisatiemap .leaflet-bar a { width: 40px; height: 40px; line-height: 40px; font-size: 22px; color: #666; border-bottom-color: #eee; transition: color .2s, background .2s; }\n.rasolar-realisatiemap .leaflet-bar a:hover { color: #0E4A9A; background: #f5f5f5; }\n.rasolar-realisatiemap .rrm-home svg { width: 20px; height: 20px; vertical-align: middle; }\n\/* Badge met totaal en filterknoppen linksboven. *\/\n.rasolar-realisatiemap .rrm-panel { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }\n.rasolar-realisatiemap .rrm-badge { background: #fff; border-radius: 8px; box-shadow: 0 1px 4px rgba(0,0,0,.3); padding: 8px 12px; color: #202124; font-size: 13px; }\n.rasolar-realisatiemap .rrm-badge b { color: #0E4A9A; font-size: 18px; margin-right: 4px; }\n.rasolar-realisatiemap .rrm-chips { display: flex; flex-wrap: wrap; gap: 6px; max-width: 560px; }\n.rasolar-realisatiemap .rrm-chips button.rrm-chip,\n.rasolar-realisatiemap .rrm-chips button.rrm-chip:hover,\n.rasolar-realisatiemap .rrm-chips button.rrm-chip:focus,\n.rasolar-realisatiemap .rrm-chips button.rrm-chip:active { border: 0 !important; border-radius: 16px !important; cursor: pointer; background: #fff !important; color: #3c4043 !important; padding: 6px 12px !important; margin: 0 !important; font: 600 12px\/1.2 figtree, Roboto, sans-serif !important; letter-spacing: 0 !important; text-transform: none !important; text-decoration: none !important; box-shadow: 0 1px 4px rgba(0,0,0,.25) !important; outline: none; transition: background .2s, color .2s; }\n\/* Hover: lichtblauwe achtergrond met donkerblauwe tekst, goed leesbaar. *\/\n.rasolar-realisatiemap .rrm-chips button.rrm-chip:hover { background: #E8F0FB !important; color: #0E4A9A !important; }\n\/* Actieve filter: Rasolar-blauw met witte tekst, ook bij hover. *\/\n.rasolar-realisatiemap .rrm-chips button.rrm-chip.is-active,\n.rasolar-realisatiemap .rrm-chips button.rrm-chip.is-active:hover,\n.rasolar-realisatiemap .rrm-chips button.rrm-chip.is-active:focus { background: #0E4A9A !important; color: #fff !important; }\n\/* Toetsenbord: zichtbare focusrand. *\/\n.rasolar-realisatiemap .rrm-chips button.rrm-chip:focus-visible { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #0E4A9A !important; }\n\/* Clusters: blauwe bol met halo; poppen zacht in beeld. *\/\n.rasolar-realisatiemap .rrm-cluster { border-radius: 50%; background: rgba(14,74,154,.22); display: flex; align-items: center; justify-content: center; }\n.rasolar-realisatiemap .rrm-cluster span { width: calc(100% - 10px); height: calc(100% - 10px); border-radius: 50%; background: #0E4A9A; color: #fff; border: 2px solid #fff; box-sizing: border-box; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; box-shadow: 0 2px 6px rgba(0,0,0,.3); animation: rrm-pop .45s cubic-bezier(.34,1.56,.64,1) backwards; transition: transform .2s ease; }\n.rasolar-realisatiemap .rrm-cluster-l span { background: #00214E; font-size: 14px; }\n.rasolar-realisatiemap .rrm-cluster:hover span { transform: scale(1.12); }\n\/* Speld zoals Google Maps, in Rasolar-blauw. Groeit bij hover. *\/\n.rasolar-realisatiemap .rrm-pin svg { display: block; transform-origin: 50% 100%; transition: transform .2s ease; filter: drop-shadow(0 2px 2px rgba(0,0,0,.35)); animation: rrm-drop .4s cubic-bezier(.34,1.56,.64,1) backwards; }\n.rasolar-realisatiemap .rrm-pin:hover svg { transform: scale(1.25); }\n\/* Tooltip bij hover en popup bij klik, zoals een Google infovenster. *\/\n.rasolar-realisatiemap .leaflet-tooltip.rrm-tip { background: #fff; border: 0; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,.25); padding: 6px 10px; font: 600 13px\/1.3 figtree, Roboto, sans-serif; color: #202124; }\n.rasolar-realisatiemap .leaflet-popup-content-wrapper { border-radius: 8px; box-shadow: 0 2px 12px rgba(0,0,0,.3); }\n.rasolar-realisatiemap .leaflet-popup-content { margin: 12px 16px; font-family: figtree, Roboto, sans-serif; color: #202124; }\n.rasolar-realisatiemap .rrm-pop-kicker { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: #0E4A9A; font-weight: 700; margin-bottom: 2px; }\n.rasolar-realisatiemap .rrm-pop-type { font-size: 15px; font-weight: 600; }\n\/* Popup met foto: foto bovenaan over de volle breedte, tekst eronder. *\/\n.rasolar-realisatiemap .rrm-has-photo .leaflet-popup-content { margin: 0; width: 260px !important; }\n.rasolar-realisatiemap .rrm-has-photo .leaflet-popup-content-wrapper { padding: 0; overflow: hidden; }\n.rasolar-realisatiemap .rrm-pop-img { display: block; width: 100%; height: 160px; object-fit: cover; background: #eee; animation: rrm-fade .35s ease; }\n.rasolar-realisatiemap .rrm-pop-body { padding: 10px 14px 12px; }\n.rasolar-realisatiemap .rrm-pop-note { font-size: 11px; color: #70757a; margin-top: 4px; }\n@keyframes rrm-fade { from { opacity: 0; } to { opacity: 1; } }\n\/* Op gsm: eerst tikken om de kaart te gebruiken, zodat de pagina blijft scrollen. *\/\n.rasolar-realisatiemap .rrm-touch { position: absolute; inset: 0; z-index: 900; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.25); color: #fff; font-weight: 600; font-size: 15px; transition: opacity .3s; }\n.rasolar-realisatiemap .rrm-touch span { background: rgba(0,0,0,.55); padding: 10px 16px; border-radius: 24px; }\n@media (max-width: 640px) { .rasolar-realisatiemap .rrm-chips button.rrm-chip, .rasolar-realisatiemap .rrm-chips button.rrm-chip:hover { padding: 5px 10px !important; font-size: 11px !important; } .rasolar-realisatiemap .rrm-chips { max-width: 260px; } }\n@keyframes rrm-pop { from { transform: scale(.3); opacity: 0; } to { transform: scale(1); opacity: 1; } }\n@keyframes rrm-drop { from { transform: translateY(-14px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }\n<\/style>\n<div id=\"rrm-9532\" class=\"rasolar-realisatiemap\" style=\"height:600px\"><\/div>\n<script>\n(function () {\n\t\/\/ Laadt een script en wacht tot het klaar is.\n\tfunction load(src) {\n\t\treturn new Promise(function (ok, ko) {\n\t\t\tvar s = document.createElement('script');\n\t\t\ts.src = src; s.onload = ok; s.onerror = ko;\n\t\t\tdocument.head.appendChild(s);\n\t\t});\n\t}\n\tvar el = document.getElementById(\"rrm-9532\");\n\tvar TOTAL = 5743;\n\tvar TYPES = ['Zonnepanelen', 'Thuisbatterij', 'Laadpaal', 'Warmtepomp', 'Airco'];\n\t\/\/ Teksten in de taal van de pagina en optionele startfilter.\n\tvar T = {\"real\":\"r\\u00e9alisations\",\"all\":\"Tout\",\"kicker\":\"R\\u00e9alisation Rasolar\",\"in\":\" \\u00e0 \",\"photo\":\"Photo d\\u2019une r\\u00e9alisation \\u00e0 \",\"tap\":\"Touchez pour utiliser la carte\",\"zin\":\"Zoom avant\",\"zout\":\"Zoom arri\\u00e8re\",\"home\":\"Afficher toutes les r\\u00e9alisations\",\"types\":{\"Zonnepanelen\":\"Panneaux solaires\",\"Thuisbatterij\":\"Batterie\",\"Laadpaal\":\"Borne de recharge\",\"Warmtepomp\":\"Boiler thermodynamique\",\"Airco\":\"Climatisation\",\"Installatie\":\"Installation\"}};\n\tvar START = \"\";\n\t\/\/ Vertaalt een (gecombineerd) type, bv. \"Zonnepanelen + Thuisbatterij\".\n\tvar tr = function (s) { return String(s).split(' + ').map(function (x) { return T.types[x] || x; }).join(' + '); };\n\t\/\/ Google Maps-achtige speld (SVG) in Rasolar-blauw met witte kern.\n\tvar PIN = '<svg width=\"26\" height=\"36\" viewBox=\"0 0 26 36\"><path d=\"M13 0C5.8 0 0 5.8 0 13c0 9.7 13 23 13 23s13-13.3 13-23C26 5.8 20.2 0 13 0z\" fill=\"#0E4A9A\"\/><circle cx=\"13\" cy=\"13\" r=\"5\" fill=\"#fff\"\/><\/svg>';\n\tvar HOME = '<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm9 3h-2.07A7 7 0 0 0 13 5.07V3h-2v2.07A7 7 0 0 0 5.07 11H3v2h2.07A7 7 0 0 0 11 18.93V21h2v-2.07A7 7 0 0 0 18.93 13H21v-2zm-9 6a5 5 0 1 1 0-10 5 5 0 0 1 0 10z\"\/><\/svg>';\n\t\/\/ Pas laden als de kaart in beeld komt, zodat de rest van de pagina sneller is.\n\tvar io = new IntersectionObserver(function (entries) {\n\t\tif (!entries[0].isIntersecting) return;\n\t\tio.disconnect();\n\t\t(window.L ? Promise.resolve() : load('https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js'))\n\t\t\t.then(function () { return window.L.markerClusterGroup ? null : load('https:\/\/unpkg.com\/leaflet.markercluster@1.5.3\/dist\/leaflet.markercluster.js'); })\n\t\t\t.then(function () { return fetch(\"https:\\\/\\\/rasolar.be\\\/wp-content\\\/uploads\\\/rasolar-realisaties.json?v=1794614181\").then(function (r) { return r.json(); }); })\n\t\t\t.then(function (data) {\n\t\t\t\t\/\/ Hele zoomstappen: vlotter klikken en altijd scherpe kaarttegels (geen opgeschaalde tussenstappen).\n\t\t\t\tvar map = L.map(el, { scrollWheelZoom: false, zoomControl: false, zoomSnap: 1, zoomDelta: 1, wheelPxPerZoomLevel: 80 }).setView([50.65, 4.45], 7);\n\t\t\t\tL.control.zoom({ position: 'bottomright', zoomInTitle: T.zin, zoomOutTitle: T.zout }).addTo(map);\n\t\t\t\t\/\/ Straatkaart in Google Maps-stijl (Esri World Street Map, gratis en zonder sleutel).\n\t\t\t\tL.tileLayer('https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Street_Map\/MapServer\/tile\/{z}\/{y}\/{x}', {\n\t\t\t\t\tmaxZoom: 15, \/\/ Niet verder inzoomen dan straatniveau, voor de privacy van klanten.\n\t\t\t\t\tminZoom: 6,\n\t\t\t\t\tattribution: '&copy; Esri, OpenStreetMap'\n\t\t\t\t}).addTo(map);\n\t\t\t\t\/\/ Scrollzoomen pas na een klik op de kaart, zodat de pagina gewoon blijft scrollen (zoals Google).\n\t\t\t\tmap.once('click', function () { map.scrollWheelZoom.enable(); });\n\n\t\t\t\tvar icon = L.divIcon({ className: 'rrm-pin', html: PIN, iconSize: [26, 36], iconAnchor: [13, 36], popupAnchor: [0, -32], tooltipAnchor: [0, -34] });\n\t\t\t\tvar group = L.markerClusterGroup({\n\t\t\t\t\tchunkedLoading: true,\n\t\t\t\t\tshowCoverageOnHover: false,\n\t\t\t\t\tzoomToBoundsOnClick: false, \/\/ We zoomen zelf, met een vloeiende vlucht.\n\t\t\t\t\tspiderfyOnMaxZoom: true,\n\t\t\t\t\tmaxClusterRadius: 55,\n\t\t\t\t\ticonCreateFunction: function (c) {\n\t\t\t\t\t\tvar n = c.getChildCount();\n\t\t\t\t\t\tvar size = n < 25 ? 's' : (n < 250 ? 'm' : 'l');\n\t\t\t\t\t\tvar px = { s: 40, m: 50, l: 62 }[size];\n\t\t\t\t\t\treturn L.divIcon({ html: '<span>' + n.toLocaleString('nl-BE') + '<\/span>', className: 'rrm-cluster rrm-cluster-' + size, iconSize: [px, px] });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\/\/ Klik op een cluster: vloeiend inzoomen, of uitwaaieren als we al maximaal ingezoomd zijn.\n\t\t\t\tgroup.on('clusterclick', function (e) {\n\t\t\t\t\tif (map.getZoom() >= map.getMaxZoom()) { e.layer.spiderfy(); return; }\n\t\t\t\t\tmap.flyToBounds(e.layer.getBounds(), { padding: [50, 50], duration: 0.8, maxZoom: map.getMaxZoom() });\n\t\t\t\t});\n\t\t\t\t\/\/ Hover op een cluster toont het aantal realisaties.\n\t\t\t\tgroup.on('clustermouseover', function (e) {\n\t\t\t\t\te.layer.bindTooltip(e.layer.getChildCount().toLocaleString('nl-BE') + ' ' + T.real, { className: 'rrm-tip', direction: 'top', offset: [0, -20] }).openTooltip();\n\t\t\t\t});\n\n\t\t\t\t\/\/ Alle spelden aanmaken; het type bewaren we voor de filterknoppen.\n\t\t\t\tvar cities = data.cities || [], photos = data.photos || {};\n\t\t\t\t\/\/ Tekst veilig in HTML zetten (gemeentenamen komen uit Odoo).\n\t\t\t\tvar esc = function (s) { return String(s).replace(\/[&<>\"]\/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]; }); };\n\t\t\t\t\/\/ Hover-gedrag enkel op toestellen met een muis; op gsm en tablet blijft het tikken.\n\t\t\t\tvar canHover = window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n\t\t\t\tvar hoverTimer = null, pinned = null;\n\t\t\t\t\/\/ Muis op het kaartje zelf houdt het open; weggaan sluit het (behalve als het vastgezet is).\n\t\t\t\tmap.on('popupopen', function (e) {\n\t\t\t\t\tvar pel = e.popup.getElement();\n\t\t\t\t\tpel.addEventListener('mouseenter', function () { clearTimeout(hoverTimer); });\n\t\t\t\t\tpel.addEventListener('mouseleave', function () { if (!pinned) hoverTimer = setTimeout(function () { map.closePopup(e.popup); }, 250); });\n\t\t\t\t});\n\t\t\t\tvar all = data.points.map(function (p) {\n\t\t\t\t\tvar type = data.types[p[2]] || 'Installatie';\n\t\t\t\t\tvar typeLabel = tr(type);\n\t\t\t\t\tvar city = p[3] > -1 ? cities[p[3]] : '';\n\t\t\t\t\tvar list = photos[p[3]] || [];\n\t\t\t\t\tvar pick = null; \/\/ Foto voor deze speld: \u00e9\u00e9n keer willekeurig gekozen, daarna vast (geen wissel bij elke hover).\n\t\t\t\t\tvar m = L.marker([p[0], p[1]], { icon: icon })\n\t\t\t\t\t\t\/\/ De popup wordt pas bij het openen opgebouwd: zo laadt een foto pas als iemand de speld aanwijst of aanklikt.\n\t\t\t\t\t\t.bindPopup(function () {\n\t\t\t\t\t\t\tvar body = '<div class=\"rrm-pop-kicker\">' + esc(T.kicker) + (city ? esc(T.in) + esc(city) : '') + '<\/div><div class=\"rrm-pop-type\">' + esc(typeLabel) + '<\/div>';\n\t\t\t\t\t\t\tif (!list.length) return body;\n\t\t\t\t\t\t\tpick = pick || data.base + list[Math.floor(Math.random() * list.length)];\n\t\t\t\t\t\t\treturn '<img decoding=\"async\" class=\"rrm-pop-img\" src=\"' + esc(pick) + '\" alt=\"' + esc(T.kicker + T.in + city) + '\">' +\n\t\t\t\t\t\t\t\t'<div class=\"rrm-pop-body\">' + body + '<div class=\"rrm-pop-note\">' + esc(T.photo + city) + '<\/div><\/div>';\n\t\t\t\t\t\t}, { className: list.length ? 'rrm-has-photo' : '', autoPanPaddingTopLeft: [20, 120], autoPanPaddingBottomRight: [70, 20], maxWidth: 260, minWidth: list.length ? 260 : 50 });\n\t\t\t\t\tm.rrmType = type;\n\t\t\t\t\tif (canHover) {\n\t\t\t\t\t\t\/\/ Muis: kaartje opent bij aanwijzen en sluit kort na het weggaan, tenzij de muis naar het kaartje zelf gaat.\n\t\t\t\t\t\t\/\/ Bij aanwijzen schuift de kaart niet mee (rustiger); een klik zet het kaartje vast en schuift wel in beeld.\n\t\t\t\t\t\tm.off('click', m._openPopup, m);\n\t\t\t\t\t\tm.on('mouseover', function () {\n\t\t\t\t\t\t\tclearTimeout(hoverTimer);\n\t\t\t\t\t\t\tif (pinned && pinned !== m) return;\n\t\t\t\t\t\t\tm.getPopup().options.autoPan = false;\n\t\t\t\t\t\t\tm.openPopup();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tm.on('mouseout', function () {\n\t\t\t\t\t\t\tif (pinned === m) return;\n\t\t\t\t\t\t\thoverTimer = setTimeout(function () { m.closePopup(); }, 250);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tm.on('click', function () {\n\t\t\t\t\t\t\tif (pinned && pinned !== m) pinned.closePopup();\n\t\t\t\t\t\t\tpinned = m;\n\t\t\t\t\t\t\tm.getPopup().options.autoPan = true;\n\t\t\t\t\t\t\tm.closePopup();\n\t\t\t\t\t\t\tm.openPopup();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tm.on('popupclose', function () { if (pinned === m) pinned = null; });\n\t\t\t\t\t}\n\t\t\t\t\treturn m;\n\t\t\t\t});\n\t\t\t\t\/\/ Centreren op de kern van de spelden: de 1% uitschieters aan elke kant tellen niet mee.\n\t\t\t\tvar q = function (arr, f) { arr = arr.slice().sort(function (a, b) { return a - b; }); return arr[Math.floor((arr.length - 1) * f)]; };\n\t\t\t\tvar lats = data.points.map(function (p) { return p[0]; }), lngs = data.points.map(function (p) { return p[1]; });\n\t\t\t\tvar bounds = L.latLngBounds([q(lats, 0.01), q(lngs, 0.01)], [q(lats, 0.99), q(lngs, 0.99)]);\n\t\t\t\tgroup.addLayers(all);\n\t\t\t\tmap.addLayer(group);\n\n\t\t\t\t\/\/ Telt een getal vloeiend op of af (ca. 0,5 s) naar de nieuwe waarde.\n\t\t\t\tvar countTo = function (elm, to) {\n\t\t\t\t\tvar from = parseInt(elm.textContent.replace(\/\\D\/g, ''), 10) || 0, t0 = null;\n\t\t\t\t\tcancelAnimationFrame(elm._raf);\n\t\t\t\t\tvar step = function (ts) {\n\t\t\t\t\t\tt0 = t0 || ts;\n\t\t\t\t\t\tvar k = Math.min(1, (ts - t0) \/ 500), e = 1 - Math.pow(1 - k, 3);\n\t\t\t\t\t\telm.textContent = Math.round(from + (to - from) * e).toLocaleString('nl-BE');\n\t\t\t\t\t\tif (k < 1) elm._raf = requestAnimationFrame(step);\n\t\t\t\t\t};\n\t\t\t\t\telm._raf = requestAnimationFrame(step);\n\t\t\t\t};\n\t\t\t\t\/\/ Paneel linksboven: totaal realisaties en filterknoppen per type.\n\t\t\t\tvar panel = L.control({ position: 'topleft' });\n\t\t\t\tpanel.onAdd = function () {\n\t\t\t\t\tvar d = L.DomUtil.create('div', 'rrm-panel');\n\t\t\t\t\td.innerHTML = '<div class=\"rrm-badge\"><b class=\"rrm-count\">' + (TOTAL || all.length).toLocaleString('nl-BE') + '<\/b>' + T.real + '<\/div>' +\n\t\t\t\t\t\t'<div class=\"rrm-chips\"><button class=\"rrm-chip is-active\" data-t=\"\">' + T.all + '<\/button>' +\n\t\t\t\t\t\tTYPES.map(function (t) { return '<button class=\"rrm-chip\" data-t=\"' + t + '\">' + tr(t) + '<\/button>'; }).join('') + '<\/div>';\n\t\t\t\t\tL.DomEvent.disableClickPropagation(d);\n\t\t\t\t\td.addEventListener('click', function (e) {\n\t\t\t\t\t\tvar b = e.target.closest('.rrm-chip');\n\t\t\t\t\t\tif (!b) return;\n\t\t\t\t\t\td.querySelectorAll('.rrm-chip').forEach(function (x) { x.classList.toggle('is-active', x === b); });\n\t\t\t\t\t\tvar t = b.getAttribute('data-t');\n\t\t\t\t\t\tgroup.clearLayers();\n\t\t\t\t\t\tvar shown = t ? all.filter(function (m) { return m.rrmType.indexOf(t) > -1; }) : all;\n\t\t\t\t\t\tgroup.addLayers(shown);\n\t\t\t\t\t\t\/\/ Teller bijwerken: aantal orders met dit type (of het totaal bij \"Alles\").\n\t\t\t\t\t\tvar target = t ? ((data.counts && data.counts[t]) || shown.length) : (TOTAL || all.length);\n\t\t\t\t\t\tcountTo(d.querySelector('.rrm-count'), target);\n\t\t\t\t\t});\n\t\t\t\t\treturn d;\n\t\t\t\t};\n\t\t\t\tpanel.addTo(map);\n\t\t\t\t\/\/ Startfilter uit de shortcode (bv. op een dienstenpagina): zelfde als op die knop klikken.\n\t\t\t\tif (START) { var sb = el.querySelector('.rrm-chip[data-t=\"' + START + '\"]'); if (sb) sb.click(); }\n\n\t\t\t\t\/\/ Knop rechtsonder om terug heel Belgi\u00eb te tonen.\n\t\t\t\tvar home = L.control({ position: 'bottomright' });\n\t\t\t\thome.onAdd = function () {\n\t\t\t\t\tvar d = L.DomUtil.create('div', 'leaflet-bar rrm-home');\n\t\t\t\t\td.innerHTML = '<a href=\"#\" title=\"' + T.home + '\" role=\"button\">' + HOME + '<\/a>';\n\t\t\t\t\tL.DomEvent.disableClickPropagation(d);\n\t\t\t\t\td.firstChild.addEventListener('click', function (e) { e.preventDefault(); map.flyToBounds(bounds, { padding: [30, 30], duration: 0.9 }); });\n\t\t\t\t\treturn d;\n\t\t\t\t};\n\t\t\t\thome.addTo(map);\n\n\t\t\t\t\/\/ Op touchtoestellen eerst tikken om te slepen, anders blijft de pagina scrollbaar.\n\t\t\t\tif (window.matchMedia('(pointer: coarse)').matches) {\n\t\t\t\t\tmap.dragging.disable();\n\t\t\t\t\tvar ov = L.DomUtil.create('div', 'rrm-touch', el);\n\t\t\t\t\tov.innerHTML = '<span>' + T.tap + '<\/span>';\n\t\t\t\t\tov.addEventListener('click', function () { map.dragging.enable(); ov.style.opacity = 0; setTimeout(function () { ov.remove(); }, 300); });\n\t\t\t\t}\n\n\t\t\t\t\/\/ Kaart zacht laten verschijnen en daarna centreren op alle realisaties.\n\t\t\t\tel.classList.add('rrm-ready');\n\t\t\t\tsetTimeout(function () { map.flyToBounds(bounds, { padding: [30, 30], duration: 1.2 }); }, 250);\n\t\t\t})\n\t\t\t.catch(function (e) { console.error('Realisatiemap kon niet laden', e); });\n\t}, { rootMargin: '200px' });\n\tio.observe(el);\n})();\n<\/script>\n\t\t<\/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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>4,8 861 Avis Google D\u00e9couvre nos 5.677 r\u00e9alisations dans toute la Belgique De la c\u00f4te aux Ardennes, nous installons chaque jour des solutions \u00e9nerg\u00e9tiques chez des clients dans toute la Belgique. Sur la carte, tu peux voir o\u00f9 nous avons d\u00e9j\u00e0 pos\u00e9 des panneaux solaires, des batteries domestiques, des bornes de recharge et d&rsquo;autres solutions, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[],"hf_cat_page":[52],"class_list":["post-67345","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/pages\/67345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/comments?post=67345"}],"version-history":[{"count":2,"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/pages\/67345\/revisions"}],"predecessor-version":[{"id":81490,"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/pages\/67345\/revisions\/81490"}],"wp:attachment":[{"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/media?parent=67345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/categories?post=67345"},{"taxonomy":"hf_cat_page","embeddable":true,"href":"https:\/\/rasolar.be\/fr\/wp-json\/wp\/v2\/hf_cat_page?post=67345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}