const BRT_WMTS_TEMPLATE = 'https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/standaard/EPSG:3857/{z}/{x}/{y}.png'; const RESULTAAT_LAGEN = [ { type: 'zonnepanelen', id: 'zonnepanelen', label: 'Zonnepanelen', swatch: '#eab308', sourceId: 'resultaten-zonnepanelen', fillId: 'resultaten-zonnepanelen-fill', lineId: 'resultaten-zonnepanelen-line' }, { type: 'dakkapel', id: 'dakkapellen', label: 'Dakkapellen', swatch: '#8b5cf6', sourceId: 'resultaten-dakkapellen', fillId: 'resultaten-dakkapellen-fill', lineId: 'resultaten-dakkapellen-line' }, { type: 'contour', id: 'contourafwijking', label: 'Contourafwijking', swatch: '#ef4444', sourceId: 'resultaten-contourafwijking', fillId: 'resultaten-contourafwijking-fill', lineId: 'resultaten-contourafwijking-line' }, ]; function tileUrlVoorKaartmateriaal(km) { if (!km) return null; if (km.type === 'wms') { const enc = encodeURIComponent; return `${km.url}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=${enc(km.layer || '')}&CRS=EPSG:3857&BBOX={bbox-epsg-3857}&WIDTH=256&HEIGHT=256&FORMAT=image/png&STYLES=`; } if (km.type === 'wmts') { if ((km.naam || '').toLowerCase().includes('brt achtergrondkaart')) return BRT_WMTS_TEMPLATE; if (km.url.includes('{z}')) return km.url; const basis = km.url.replace(/\/+$/, ''); const laag = km.layer ? `/${km.layer}` : ''; return `${basis}${laag}/EPSG:3857/{z}/{x}/{y}.png`; } return km.url; } function zekerheidKleurExpressie() { return ['match', ['get', 'zekerheid'], 'hoog', '#22c55e', 'midden', '#fb923c', 'laag', '#ef4444', '#888' ]; } function voegResultaatLagenToe(map, laag, geojson, zichtbaar) { if (map.getLayer(laag.lineId)) map.removeLayer(laag.lineId); if (map.getLayer(laag.fillId)) map.removeLayer(laag.fillId); if (map.getLayer(laag.sourceId)) map.removeLayer(laag.sourceId); if (map.getSource(laag.sourceId)) map.removeSource(laag.sourceId); map.addSource(laag.sourceId, { type: 'geojson', data: geojson }); map.addLayer({ id: laag.fillId, type: 'fill', source: laag.sourceId, layout: { visibility: zichtbaar ? 'visible' : 'none' }, paint: { 'fill-color': zekerheidKleurExpressie(), 'fill-opacity': 0.4 }, }); map.addLayer({ id: laag.lineId, type: 'line', source: laag.sourceId, layout: { visibility: zichtbaar ? 'visible' : 'none' }, paint: { 'line-color': zekerheidKleurExpressie(), 'line-width': 2, 'line-dasharray': ['case', ['==', ['get', 'bron'], 'handmatig'], ['literal', [4, 2]], ['literal', [1]]], }, }); } function setMapLayerVisibility(map, layerIds, zichtbaar) { layerIds.forEach(layerId => { try { if (map.getLayer(layerId)) map.setLayoutProperty(layerId, 'visibility', zichtbaar ? 'visible' : 'none'); } catch (_) {} }); } Object.assign(window, { BRT_WMTS_TEMPLATE, RESULTAAT_LAGEN, tileUrlVoorKaartmateriaal, zekerheidKleurExpressie, voegResultaatLagenToe, setMapLayerVisibility, });