Sådan opsætter du lagvælger i OneDoor
OneDoor viser kortlag via en lagvælger, som brugeren kan tænde og slukke for. Lagvælgeren leveres af Septima Widget (widget3) og findes i to varianter:
layerswitch2— Septimas egen grupperede lagvælger med checkbox, radio og slider-grupper.layerswitchDMP— kortbutik baseret på Danmarks Miljøportals lagkatalog (@dmp/map-components).
Valget af lagvælger sker i style.yml ved at tilføje den ønskede control i kortets controls-liste.
Hvilken lagvælger skal jeg vælge?
| Egenskab | layerswitch2 | layerswitchDMP |
|---|---|---|
| UI-stil | Septimas egen, kompakt med grupper og evt. signaturforklaring | DMP kortbutik med datakatalog og drag-and-drop |
| Lagkilde | De lag du eksplicit har defineret i map.layer | Hele Danmarks Miljøportals datakatalog + evt. importerede widget-lag |
| Bruger-tilpasning | Fast — bruger kan kun til-/fravælge de lag du har sat op | Dynamisk — brugeren kan browse katalog og selv tilføje lag |
| Tilstand/persistens | Ingen persistens på tværs af sessioner | Brugerens valgte datasæt gemmes i localStorage under api_datasets |
| Bedst til | Kurateret sæt lag, fx kommune-temaer eller plandata | Brugere der skal kunne vælge frit fra DMP-katalog (typisk miljø-/natursager) |
Som tommelfingerregel: brug layerswitch2 til en kurateret oplevelse og layerswitchDMP når brugerne skal kunne udforske og tilføje lag fra Danmarks Miljøportal selv.
Du kan godt vise DMP-datakat-lag (urn:dmp:ds:…) i layerswitch2 — du skal blot definere dem som almindelige lag i map.layer. Forskellen er ikke "DMP-data ja/nej", men om brugeren skal have kortbutikken og dynamisk lagstyring.
Hvor konfigureres lagvælgeren?
Lagvælgeren konfigureres i style.yml under det relevante kort. Stilen kaskaderes på serveren:
- Base —
onedoor-server's indbyggedestyle.yml(underconfig/onedoor/). - Organisation — overskrivninger pr. organisation.
- Konfiguration — overskrivninger pr. profil/konfiguration.
Hver lag i kaskaden kan tilføje eller overskrive felter. På den måde kan en organisation eller profil ændre lagvælgerens type eller tilføje grupper uden at duplikere hele filen.
Strukturen i style.yml ser sådan ud:
yaml
maps:
- name: hovedkort
config:
map:
layer:
# Definér jeres lag her
- id: orto
namedlayer: '#orto'
- id: matrikelskel
namedlayer: '#matrikelskel'
controls:
- layerswitch2:
# options til layerswitch2 herVælg én af layerswitch2 eller layerswitchDMP som control — ikke begge.
layerswitch2 — grupperet lagvælger
layerswitch2 viser de lag du har defineret i map.layer, organiseret i grupper du selv vælger. Hver gruppe kan vises som en liste med checkboxe, en radioknap-gruppe (kun ét lag ad gangen), eller en slider der bytter mellem lag (typisk til årgange af flyfotos).
Lag-id'erne du bruger i groups, kan referere lag defineret direkte i map.layer eller via en namedlayer-genvej — se Indbyggede lag for genveje og Egne lag for hvordan du definerer dine egne.
Minimal konfiguration af layerswitch2
yaml
controls:
- layerswitch2:
showheader: true
groups:
- title: Baggrundskort
type: radio
expanded: true
layers:
- orto
- vtOptions for layerswitch2
| Felt | Type | Beskrivelse |
|---|---|---|
groups | array | Liste af grupper — se næste afsnit. Påkrævet for at lagvælgeren viser noget meningsfuldt. |
showheader | boolean | Vis overskrift øverst i lagvælgeren. |
showheaderCollapsed | boolean | Start med headeren foldet sammen. På små skærme (under 700 px) foldes der automatisk sammen. |
position | string | left eller right — placering af sidepanel. |
className | string | Ekstra CSS-klasse på rod-elementet. |
css | string | Sti til ekstra stylesheet, der indlæses sammen med kontrollen. |
activateButton | boolean | Vis en knap der åbner/lukker lagvælgeren i stedet for at vise den fast. |
buttonIndex | number | Rækkefølge i knappanelet, hvis flere kontroller har en knap. |
hideOpacityOption | boolean | Skjul opacity-slider på alle lag (kan også sættes pr. gruppe). |
paramNames | object | Brug egne navne for parametre (layers, groups) i URL/data-attributter. |
keepInFullscreen | boolean | Hold lagvælgeren synlig når kortet går i fuldskærm. |
disable | boolean | Slå kontrollen helt fra (nyttigt i kaskaden — fx fravælge i en specifik konfiguration). |
detach | boolean | Render kontrollen uden for kortets DOM. |
Grupper (groups)
Hver gruppe er et objekt med følgende felter:
| Felt | Type | Beskrivelse |
|---|---|---|
title | string | Gruppens overskrift i UI'et. |
type | string | checkbox (default), radio eller slider. |
expanded | boolean | Start med gruppen åben (default: false). |
selectAll | boolean | Vis "Vælg alle"-checkbox i gruppen. |
showCount | boolean | Vis antal aktive lag i gruppens overskrift. |
layers | array | Liste af lag-id'er, som skal være defineret i map.layer. |
hideOpacityOption | boolean | Skjul opacity-slider for lag i denne gruppe. |
Lag-id'er i layers skal matche id på et lag i map.layer — layerswitch2 bygger UI ud fra eksisterende lag-konfiguration.
Eksempel med grupper, undergrupper og lag
Nedenfor er en layerswitch2 konfiguration. Konfigurationen er fra OneDoor demo. På screenshot kan du se hvordan lagvælgeren så ud på det tidspunkt vi lagde konfigurationen ind i vejledningen. Lagvælgeren kan se anderledes ud i OneDoor demo da vi løbende tilpasser konfigurationen til forskellige formål.
yaml
controls:
- layerswitch2:
menuButtons:
clear: true
search: false
expandAll: true
groups:
- title: Historiske kort
hideOpacityOption: true
icon: docs
type: checkbox
selectAll: false
expanded: false
showCount: true
layers:
- historiskekort_kort
- historiskekort_dokumenter
- title: Lokalplan
icon: docs
type: checkbox
selectAll: false
expanded: false
showCount: true
layers:
- title: Vedtaget
selectAll: true
layers:
- plansystem_vedtagetlokalplan
- plansystem_byggefelt
- plansystem_delområde
- title: Forslag
selectAll: true
layers:
- plansystem_lokalplanforslag
- title: Kommuneplan
icon: docs
type: checkbox
selectAll: false
showCount: true
expanded: false
layers:
- title: Vedtaget
selectAll: true
layers:
- plansystem_kommuneplanramme
- title: Matrikel
icon: Flag
type: checkbox
selectAll: false
expanded: false
showCount: true
layers:
- Kortforsyningen_matrikelnumre
- DAF_sfe
- title: Offentlig transport
icon: train
type: checkbox
selectAll: false
expanded: false
showCount: true
layers:
- metro
- title: Tog
selectAll: true
layers:
- s-train
- tog
- letbane
- bus
- title: Sundhed
icon: health_cross
hideOpacityOption: true
type: checkbox
selectAll: false
expanded: false
showCount: true
layers:
- apotek
- medic
- hospital
- title: Indkøb
icon: shopping_bag
type: checkbox
selectAll: false
expanded: false
showCount: true
layers:
- supermarked
- kiosk
- shopping
- tankstation
- title: Seværdigheder
icon: museum
type: checkbox
selectAll: false
expanded: false
showCount: true
layers:
- museum
- kulturhus_spillested
- title: Sport / Idræt
icon: sports
type: checkbox
selectAll: false
expanded: false
showCount: true
layers:
- swim
- fitness
- tennis
- football
- golfUdsnit af lagdefinitionerne (map.layer) i samme 02-basis/style.yml for de temaer, der vises i lagvælgeren:
yaml
map:
layer:
- id: metro
name: Metro
namedlayer: "#septima_poi"
features: true
params:
undertype: metro
- id: s-train
name: S-tog
namedlayer: "#septima_poi"
features: true
params:
undertype: s-tog
- id: tog
name: Togstation
namedlayer: "#septima_poi"
features: true
params:
undertype: tog
- id: bus
name: Busstoppested
namedlayer: "#septima_poi"
features: true
params:
undertype: bus
- id: apotek
name: Apotek
namedlayer: "#septima_poi"
features: true
params:
undertype: apotek
- id: hospital
name: Hospital
namedlayer: "#septima_poi"
features: true
params:
undertype: hospital
- id: supermarked
name: Supermarked
namedlayer: "#septima_poi"
features: true
params:
undertype: supermarked
- id: tankstation
name: Tankstation
namedlayer: "#septima_poi"
features: true
params:
undertype: tankstationIllustration fra brugerfladen:

layerswitchDMP — DMP kortbutik
layerswitchDMP er en wrapper omkring @dmp/map-components fra Danmarks Miljøportal. Brugeren får en kortbutik-UI, hvor de kan browse hele DMP's lagkatalog og selv tilføje, fjerne og rangordne datasæt.
Har du brug for at inkludere dine egne lag i kortbutikken, bruger du layerImports nedenfor — se Egne lag for hvordan lagene defineres i map.layer. DMP-URN'er (urn:dmp:ds:…) kan også bruges direkte som namedlayer — se Indbyggede lag.
Brugerens valg gemmes i browseren under localStorage-nøglen api_datasets. Hvis en bruger oplever mærkelig adfærd med defaults eller forsvundne lag, kan det ofte løses ved at slette den nøgle (eller browserens site data) og genindlæse.
Minimal konfiguration af layerswitchDMP
yaml
controls:
- layerswitchDMP:
position: top left
zIndex: 50
layerDefaults:
- id: urn:dmp:ds:ortofoto-foraar-nyeste-tilgaengelige
visible: false
opacity: 0.5Options for layerswitchDMP
| Felt | Type | Beskrivelse |
|---|---|---|
zIndex | number | Basis z-index for lag tilføjet via DMP-kontrollen (default: 1). |
position | string | Placering — kombination af top/bottom og left/right, fx top left. |
layerDefaults | array | Standardlag som indsættes i localStorage første gang en bruger åbner kortet. |
layerImports | array | Widget-lag der importeres som datasæt i DMP-butikken, så brugeren kan tænde/slukke dem fra kortbutikken. |
layerDefaults
Hvert element i listen er et objekt med:
| Felt | Type | Beskrivelse |
|---|---|---|
id | string | DMP datasæt-URN, fx urn:dmp:ds:ortofoto-foraar-nyeste-tilgaengelige. |
visible | boolean | Om laget skal være tændt fra start (default: true). |
opacity | number | Lagets opacity 0–1 (default: 1). |
layerDefaults skrives kun til localStorage, hvis nøglen api_datasets ikke allerede findes — altså første gang brugeren besøger kortet i den browser. Eksisterende brugere skal rydde localStorage for at se ændringer i defaults.
layerImports
Importerer widget-lag (lag fra map.layer) som "fiktive datasæt" i DMP-butikken. Hvert element kan være:
yaml
layerImports:
- id: adresse
- id: matrikelskel
metadata:
thumbnail: /img/thumbs/matrikel.png
category: Ejendom
owners:
- Geodatastyrelsen
previewImages:
- /img/preview/matrikel.png
tags:
- matrikel
- skelmetadata-felterne styrer hvordan laget præsenteres i DMP's kortbutik.
Vigtigt om defaultLayers versus layerDefaults
Widget3-koden læser feltet layerDefaults. Nogle eksisterende style.yml-filer i OneDoor bruger defaultLayers — det er en ældre/forkert nøgle og virker ikke længere. Brug altid layerDefaults.
Dynamiske layerImports fra serveren
OneDoor-serverens style.js kan automatisk tilføje OWS- og admin-lag til layerswitchDMP.layerImports ved runtime. Det betyder at lag, der konfigureres centralt (fx via admin-grænsefladen eller OWS-kataloget), automatisk dukker op i DMP-kortbutikken uden at du skal liste dem manuelt i style.yml.
Du kan stadig liste lag manuelt under layerImports — server-side imports merges oven i din liste.
Eksempel: DMP-lagvælger med baggrund og importeret adresselag
yaml
controls:
- layerswitchDMP:
position: top left
zIndex: 50
layerDefaults:
- id: urn:dmp:ds:ortofoto-foraar-nyeste-tilgaengelige
visible: true
opacity: 1
- id: urn:dmp:ds:dagi-kommuner
visible: false
opacity: 0.6
layerImports:
- id: adresse
- id: matrikelskel
metadata:
category: Ejendom
tags:
- matrikelIndbyggede lag (namedlayer)
namedlayer er en genvej til et færdigt lag. I stedet for selv at udfylde type, host, params og så videre peger du blot på en indbygget konfiguration:
yaml
map:
layer:
- id: skaermkort
namedlayer: '#dk_standard'Alle felter fra den indbyggede genvej kopieres ind i lag-definitionen. Du kan overskrive enkelte felter (fx visible, opacity, minResolution) ved siden af namedlayer.
Baggrundskort — Septima
namedlayer | Beskrivelse |
|---|---|
#septima_standard | Septimas standard baggrundskort (farver, veje, navne). |
#septima_light | Lyst/neutralt baggrundskort — godt til datavisualisering. |
#septima_dark | Mørkt baggrundskort — godt til tematiske lag i lyse farver. |
#septima_outdoor | Baggrundskort optimeret til natur og friluftsliv. |
Alle fire findes i _3857-variant (fx #septima_standard_3857) til kort der kører i EPSG:3857.
Baggrundskort — Danmark
namedlayer | Beskrivelse |
|---|---|
#dk_standard | Skærmkort (standard) — Datafordelerens klassiske baggrund. |
#dk_skaerm | Skærmkort, klassisk udseende. |
#dk_graa | Grå variant af skærmkortet. |
#dk_topo | Topografisk kort (GeoDanmark). |
#dk_vejkort | Vejkort. |
#osm | OpenStreetMap. |
De fire skærmkort findes også som vectortiles: #dk_standard_vt, #dk_skaerm_vt, #dk_graa_vt, #dk_moerkt_vt.
Luftfoto
namedlayer | Beskrivelse |
|---|---|
#dk_luftfoto | Nyeste ortofoto fra Datafordeleren. |
#dk_luftfoto_3857 | Samme ortofoto i EPSG:3857. |
#dk_orto_temp | Hurtigt foreløbigt ortofoto. |
Til årsspecifikke ortofotos (fx forår 2024, 2023, …) brug DMP-datasæt — se afsnittet "DMP-datasæt" nedenfor.
Terræn og vand
namedlayer | Beskrivelse |
|---|---|
#dk_dhm | Danmarks Højdemodel — terræn. |
#dk_dhm_overflade | Danmarks Højdemodel — overflade (inkl. bygninger og træer). |
#bluespot | Bluespot-kort — hvor vand samler sig ved kraftig nedbør. Kræver at du sætter layername for at vælge scenario. |
#havvand | Havvandsdybder og farvand. |
Matrikel og administrativt
namedlayer | Beskrivelse |
|---|---|
#dk_mat | Matrikelkort. |
#dk_dagi | DAGI — administrative grænser (kommuner, regioner, sogne m.m.). |
#dk_forvaltning | Forvaltningskortet. |
#dk_natur | Naturtemaer (beskyttede områder m.m.). |
Planlægning
namedlayer | Beskrivelse |
|---|---|
#plandata | Plandata-tjenesten (lokalplaner, kommuneplanrammer m.fl.). |
#plandata_wmts | Samme som #plandata, leveret via WMTS. |
#septima_plandk_3857 | Septimas eget plan-tile-lag i EPSG:3857. |
Point of interest
namedlayer | Beskrivelse |
|---|---|
#septima_poi | POI-vektorlag — kræver at du sætter features_host til en endpoint der leverer POI'er som features. |
DMP-datasæt (Danmarks Miljøportal)
Alle datasæt fra Danmarks Miljøportals datakatalog kan bruges som namedlayer-genveje. Formatet er en URN uden #:
urn:dmp:ds:<datasæt-id>— ét datasæt.urn:dmp:dsgroup:<gruppe-id>— en datagruppe (flere datasæt samlet).
Minimaleksempel:
yaml
- id: ortofoto
namedlayer: 'urn:dmp:ds:ortofoto-foraar-nyeste-tilgaengelige'Søg efter datasættet i Danmarks Miljøportals datakatalog — datasæt-ID'et er den del der står efter urn:dmp:ds: i katalogets URL.
Nogle ofte brugte URN'er fra OneDoor-konfigurationer:
| URN | Beskrivelse |
|---|---|
urn:dmp:ds:ortofoto-foraar-nyeste-tilgaengelige | Nyeste tilgængelige forårsortofoto. |
urn:dmp:ds:jordstykker-matrikel | Matrikelkort (DMP-version). |
urn:dmp:ds:samlet-fast-ejendom-gaeldende | Samlet fast ejendom (gældende). |
urn:dmp:ds:adgangsadresser | Adgangsadresser. |
urn:dmp:ds:lokalplaner-vedtaget | Vedtagne lokalplaner. |
urn:dmp:ds:lokalplaner-forslag | Lokalplanforslag. |
urn:dmp:ds:kommuneplanramme-vedtaget | Vedtagne kommuneplanrammer. |
urn:dmp:ds:beskyttede-naturtyper | §3-beskyttede naturtyper. |
urn:dmp:ds:natura2000-habitatomraader | Natura 2000 – habitatområder. |
urn:dmp:ds:natura2000-fuglebeskyttelse | Natura 2000 – fuglebeskyttelsesområder. |
Egne lag
Udover de indbyggede genveje kan du selv definere lag i map.layer — fx et WMS-lag mod din egen Geoserver, et GeoJSON-tema med virksomhedens arbejdsområder, eller et vektorlag bygget over en API. Et egendefineret lag består af to ting:
- En definition i
map.layermed et uniktidog en datakilde (WMS, GeoJSON, vectortile, features-API m.m.). - En reference til dét
idfralayerswitch2.groups[*].layersellerlayerswitchDMP.layerImports.
Lagvælgeren slår op på id — skriver du matrikelskel i en gruppe, finder widget'et laget med id: matrikelskel i map.layer. Der er ingen forskel på indbyggede namedlayer-genveje og dine egne lag, set fra lagvælgerens perspektiv.
Fire trin til et nyt lag
- Definér laget i
map.layermed uniktid,name,type(ellerfeatures: true) samt nødvendige server-felter (host,layername,features_hostosv.). - Style (kun vektor/features): brug
features_stylemed etnamedstyle-preset eller eksplicitte farver og symboler. - Giv en signaturforklaring med
legendConfig— valgfrit, men pænere i lagvælgeren. - Referér
id'et ilayerswitch2.groups[*].layersellerlayerswitchDMP.layerImports.
Vigtigste felter på alle lag
| Felt | Beskrivelse |
|---|---|
id | Unikt ID. Bruges af lagvælgeren til at matche laget — påkrævet hvis laget skal kunne tændes/slukkes. |
name | Visningsnavn i lagvælgeren og som default-titel på signaturforklaringen. |
type | Lagtype — fx WMS, WMTS, XYZ, ArcGISRest, VectorTile, eller geojson/gml for features-lag. |
visible | true/false — om laget er tændt fra start. |
opacity | 0–1, lagets gennemsigtighed. |
zIndex | Stabling — højere tal ligger ovenpå lavere. Default = rækkefølgen i map.layer. |
minResolution / maxResolution | Zoom-grænser. Udenfor dette interval vises laget ikke (og disables i lagvælgeren). |
legendConfig | Signaturforklaring — se afsnit nedenfor. |
srs | Koordinatsystem for laget, hvis det afviger fra kortets. |
Eksempel A — WMS mod egen server
Et klassisk WMS-lag (her matrikelkortet fra Datafordeleren):
yaml
map:
layer:
- id: matrikelskel
name: Matrikelkort
type: WMS
host: https://min-kommune.dk/WMS/daginstitutioner?username=...&password=...
layername: Jordstykke_Gaeldende,OptagetVej_Gaeldende
params:
VERSION: 1.3.0
STYLES: bornehave_Roed,bornehave_Gul
visible: false
crossOrigin: anonymous
singleTile: truehost— fuld URL til WMS-endpointet (inkl. evt. credentials eller API-nøgle).layername(alias:layer_name) — komma-separeret liste af lag på WMS-serveren. Svarer tilLAYERS-parameteren i GetMap.params— ekstra GetMap-parametre, typiskVERSIONogSTYLES.singleTile: true— henter hele billedet i én request (god til dynamiske/labels-tunge WMS). Udelad for at bruge tile-grid.crossOrigin: anonymous— nødvendigt hvis kortet skal eksporteres som billede.
Eksempel B — GeoJSON fra URL (features-lag)
Et vektorlag hvor geometrierne hentes som GeoJSON — her en datafil under OneDoor-serverens assets-mappe:
yaml
- id: dybdegraenser
name: Dybdegrænser
features: true
type: geojson
features_host: /api/onedoor/v1/organisations/min-kommune/configurations/byggesager/assets/data/biblioteker.geojson
features_dataType: json
visible: true
features_style:
namedstyle: "#004"
strokecolor: rgba(0,0,0,1)
strokewidth: 1
lineDash: [5, 5]features: truegør laget til et vektorlag med klikbare features.features_hostkan være relativ (mod OneDoor-serveren) eller absolut, og kan indeholde<%= bbox %>-skabelon-tokens hvis API'et skal kaldes per udsnit.features_dataType: jsonparser svaret som JSON; brugxmlfor WFS/GML-responser.features_stylestyler features — se næste afsnit.
Eksempel C — GeoJSON inline (data)
Et vektorlag hvor geometrien ligger inline eller udfyldes dynamisk fra kode (fx et "flow"-lag der opdateres løbende):
yaml
- id: flow
features: true
type: geojson
data:
type: FeatureCollection
crs:
type: name
properties:
name: urn:ogc:def:crs:EPSG::4326
features: []
features_dataType: json
features_style:
namedstyle: "#004"
strokecolor: rgba(83,178,230,0.9)
strokewidth: 5Brug data når GeoJSON'en er lille og statisk, eller når laget skal fyldes af klient-kode senere.
Feature-styling (features_style)
Styling af vektorfeatures sker med features_style. Du kan enten bruge et namedstyle-preset og evt. overskrive enkelte felter, eller angive alt eksplicit:
yaml
features_style:
namedstyle: "#004" # preset — kan udelades helt
symbol: circle # circle, square, triangle, star, cross, x
radius: 8
fillcolor: rgba(2,168,18,0.5)
strokecolor: rgba(0,0,0,1)
strokewidth: 2
lineDash: [5, 5]
text: "<%= name %>" # skabelon mod feature-propertiesAngiver du et array af style-objekter, tegnes laget i flere "omgange" — nyttigt hvis du vil have fx en lys outline under en mørk streg, eller to linjer med forskellig lineDash.
Signaturforklaring (legendConfig)
Giv dit lag en visuel signatur i lagvælgeren:
yaml
legendConfig:
img: /assets/signaturer/matrikel.png
size: [16, 16]Andre former:
legendConfig: { svgIcon: '<svg xmlns="http://www.w3.org/2000/svg" ...>...</svg>' }— inline SVG.legendConfig: { html: '<span style="...">...</span>' }— vilkårlig HTML.legendConfig: { legends: [ { title: 'Kategori A', ... }, { title: 'Kategori B', ... } ] }— flere signaturer i ét lag.
For features-lag uden legendConfig afledes en simpel signatur automatisk fra features_style.
Koordinatsystemer
OneDoors kort kører som udgangspunkt i EPSG:25832. Hvis dit WMS eller WFS kun understøtter fx EPSG:3857, er det ikke nok at sætte srs: på laget — tile-requests sendes i kortets projektion. Du skal enten:
- bruge en tjeneste der udstiller EPSG:25832, eller
- lade kortet køre i den projektion dit lag understøtter (
map.srs), eller - proxy/reprojektere på serversiden.
Referér laget fra lagvælgeren
Når laget er defineret, skriver du id'et ordret i layerswitch2.groups[*].layers:
yaml
controls:
- layerswitch2:
groups:
- title: Egne temaer
type: checkbox
expanded: true
layers:
- matrikelskel # WMS-laget fra eksempel A
- dybdegraenser # GeoJSON-laget fra eksempel BFor layerswitchDMP importeres laget i stedet via layerImports:
yaml
controls:
- layerswitchDMP:
layerImports:
- id: matrikelskel
- id: dybdegraenserDu kan frit blande indbyggede namedlayer-ID'er og egne lag-ID'er i samme gruppe.
Fejlfinding
| Symptom | Sandsynlig årsag | Løsning |
|---|---|---|
Unknown plugin: layerswitch-dmp | Forkert nøgle i YAML | Brug layerswitchDMP (camelCase) — ikke layerswitch-dmp. |
| Lagvælgeren er tom | Lag-id'er i groups[*].layers matcher ikke noget i map.layer | Tjek at id'erne er defineret som lag. |
layerDefaults har ingen effekt | Brugeren har allerede api_datasets i localStorage | Ryd browserens lokale data, eller bed testbrugere om at slette nøglen. |
| Lag skifter ikke ved klik | Lag mangler en gyldig kilde (WMS, vector, namedlayer) | Tjek lag-definitionen i map.layer. |
Interne lag (resultLayer, itemsLayer) optræder | OneDoor's egne dynamiske lag er ikke ekskluderet | Klassisk layerswitch ekskluderer dem automatisk i Ember-stien; for layerswitch2/layerswitchDMP skal du undgå at lægge dem i grupper/imports. |
| YAML giver parse-fejl | Indrykning eller manglende bindestreg | Validér YAML — controls er en liste, hvert element er et objekt med én nøgle (layerswitch2: eller layerswitchDMP:). |