Skip to content

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?

Egenskablayerswitch2layerswitchDMP
UI-stilSeptimas egen, kompakt med grupper og evt. signaturforklaringDMP kortbutik med datakatalog og drag-and-drop
LagkildeDe lag du eksplicit har defineret i map.layerHele Danmarks Miljøportals datakatalog + evt. importerede widget-lag
Bruger-tilpasningFast — bruger kan kun til-/fravælge de lag du har sat opDynamisk — brugeren kan browse katalog og selv tilføje lag
Tilstand/persistensIngen persistens på tværs af sessionerBrugerens valgte datasæt gemmes i localStorage under api_datasets
Bedst tilKurateret sæt lag, fx kommune-temaer eller plandataBrugere 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:

  1. Baseonedoor-server's indbyggede style.yml (under config/onedoor/).
  2. Organisation — overskrivninger pr. organisation.
  3. 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 her

Væ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
            - vt

Options for layerswitch2

FeltTypeBeskrivelse
groupsarrayListe af grupper — se næste afsnit. Påkrævet for at lagvælgeren viser noget meningsfuldt.
showheaderbooleanVis overskrift øverst i lagvælgeren.
showheaderCollapsedbooleanStart med headeren foldet sammen. På små skærme (under 700 px) foldes der automatisk sammen.
positionstringleft eller right — placering af sidepanel.
classNamestringEkstra CSS-klasse på rod-elementet.
cssstringSti til ekstra stylesheet, der indlæses sammen med kontrollen.
activateButtonbooleanVis en knap der åbner/lukker lagvælgeren i stedet for at vise den fast.
buttonIndexnumberRækkefølge i knappanelet, hvis flere kontroller har en knap.
hideOpacityOptionbooleanSkjul opacity-slider på alle lag (kan også sættes pr. gruppe).
paramNamesobjectBrug egne navne for parametre (layers, groups) i URL/data-attributter.
keepInFullscreenbooleanHold lagvælgeren synlig når kortet går i fuldskærm.
disablebooleanSlå kontrollen helt fra (nyttigt i kaskaden — fx fravælge i en specifik konfiguration).
detachbooleanRender kontrollen uden for kortets DOM.

Grupper (groups)

Hver gruppe er et objekt med følgende felter:

FeltTypeBeskrivelse
titlestringGruppens overskrift i UI'et.
typestringcheckbox (default), radio eller slider.
expandedbooleanStart med gruppen åben (default: false).
selectAllbooleanVis "Vælg alle"-checkbox i gruppen.
showCountbooleanVis antal aktive lag i gruppens overskrift.
layersarrayListe af lag-id'er, som skal være defineret i map.layer.
hideOpacityOptionbooleanSkjul opacity-slider for lag i denne gruppe.

Lag-id'er i layers skal matche id på et lag i map.layerlayerswitch2 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
            - golf

Udsnit 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: tankstation

Illustration fra brugerfladen:

Layerswitch2 i 02-basis

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.5

Options for layerswitchDMP

FeltTypeBeskrivelse
zIndexnumberBasis z-index for lag tilføjet via DMP-kontrollen (default: 1).
positionstringPlacering — kombination af top/bottom og left/right, fx top left.
layerDefaultsarrayStandardlag som indsættes i localStorage første gang en bruger åbner kortet.
layerImportsarrayWidget-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:

FeltTypeBeskrivelse
idstringDMP datasæt-URN, fx urn:dmp:ds:ortofoto-foraar-nyeste-tilgaengelige.
visiblebooleanOm laget skal være tændt fra start (default: true).
opacitynumberLagets 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
        - skel

metadata-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:
              - matrikel

Indbyggede 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

namedlayerBeskrivelse
#septima_standardSeptimas standard baggrundskort (farver, veje, navne).
#septima_lightLyst/neutralt baggrundskort — godt til datavisualisering.
#septima_darkMørkt baggrundskort — godt til tematiske lag i lyse farver.
#septima_outdoorBaggrundskort 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

namedlayerBeskrivelse
#dk_standardSkærmkort (standard) — Datafordelerens klassiske baggrund.
#dk_skaermSkærmkort, klassisk udseende.
#dk_graaGrå variant af skærmkortet.
#dk_topoTopografisk kort (GeoDanmark).
#dk_vejkortVejkort.
#osmOpenStreetMap.

De fire skærmkort findes også som vectortiles: #dk_standard_vt, #dk_skaerm_vt, #dk_graa_vt, #dk_moerkt_vt.

Luftfoto

namedlayerBeskrivelse
#dk_luftfotoNyeste ortofoto fra Datafordeleren.
#dk_luftfoto_3857Samme ortofoto i EPSG:3857.
#dk_orto_tempHurtigt 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

namedlayerBeskrivelse
#dk_dhmDanmarks Højdemodel — terræn.
#dk_dhm_overfladeDanmarks Højdemodel — overflade (inkl. bygninger og træer).
#bluespotBluespot-kort — hvor vand samler sig ved kraftig nedbør. Kræver at du sætter layername for at vælge scenario.
#havvandHavvandsdybder og farvand.

Matrikel og administrativt

namedlayerBeskrivelse
#dk_matMatrikelkort.
#dk_dagiDAGI — administrative grænser (kommuner, regioner, sogne m.m.).
#dk_forvaltningForvaltningskortet.
#dk_naturNaturtemaer (beskyttede områder m.m.).

Planlægning

namedlayerBeskrivelse
#plandataPlandata-tjenesten (lokalplaner, kommuneplanrammer m.fl.).
#plandata_wmtsSamme som #plandata, leveret via WMTS.
#septima_plandk_3857Septimas eget plan-tile-lag i EPSG:3857.

Point of interest

namedlayerBeskrivelse
#septima_poiPOI-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:

URNBeskrivelse
urn:dmp:ds:ortofoto-foraar-nyeste-tilgaengeligeNyeste tilgængelige forårsortofoto.
urn:dmp:ds:jordstykker-matrikelMatrikelkort (DMP-version).
urn:dmp:ds:samlet-fast-ejendom-gaeldendeSamlet fast ejendom (gældende).
urn:dmp:ds:adgangsadresserAdgangsadresser.
urn:dmp:ds:lokalplaner-vedtagetVedtagne lokalplaner.
urn:dmp:ds:lokalplaner-forslagLokalplanforslag.
urn:dmp:ds:kommuneplanramme-vedtagetVedtagne kommuneplanrammer.
urn:dmp:ds:beskyttede-naturtyper§3-beskyttede naturtyper.
urn:dmp:ds:natura2000-habitatomraaderNatura 2000 – habitatområder.
urn:dmp:ds:natura2000-fuglebeskyttelseNatura 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:

  1. En definition i map.layer med et unikt id og en datakilde (WMS, GeoJSON, vectortile, features-API m.m.).
  2. En reference til dét id fra layerswitch2.groups[*].layers eller layerswitchDMP.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

  1. Definér laget i map.layer med unikt id, name, type (eller features: true) samt nødvendige server-felter (host, layername, features_host osv.).
  2. Style (kun vektor/features): brug features_style med et namedstyle-preset eller eksplicitte farver og symboler.
  3. Giv en signaturforklaring med legendConfig — valgfrit, men pænere i lagvælgeren.
  4. Referér id'et i layerswitch2.groups[*].layers eller layerswitchDMP.layerImports.

Vigtigste felter på alle lag

FeltBeskrivelse
idUnikt ID. Bruges af lagvælgeren til at matche laget — påkrævet hvis laget skal kunne tændes/slukkes.
nameVisningsnavn i lagvælgeren og som default-titel på signaturforklaringen.
typeLagtype — fx WMS, WMTS, XYZ, ArcGISRest, VectorTile, eller geojson/gml for features-lag.
visibletrue/false — om laget er tændt fra start.
opacity0–1, lagets gennemsigtighed.
zIndexStabling — højere tal ligger ovenpå lavere. Default = rækkefølgen i map.layer.
minResolution / maxResolutionZoom-grænser. Udenfor dette interval vises laget ikke (og disables i lagvælgeren).
legendConfigSignaturforklaring — se afsnit nedenfor.
srsKoordinatsystem 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: true
  • host — 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 til LAYERS-parameteren i GetMap.
  • params — ekstra GetMap-parametre, typisk VERSION og STYLES.
  • 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: true gør laget til et vektorlag med klikbare features.
  • features_host kan være relativ (mod OneDoor-serveren) eller absolut, og kan indeholde <%= bbox %>-skabelon-tokens hvis API'et skal kaldes per udsnit.
  • features_dataType: json parser svaret som JSON; brug xml for WFS/GML-responser.
  • features_style styler 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: 5

Brug 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-properties

Angiver 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 B

For layerswitchDMP importeres laget i stedet via layerImports:

yaml
controls:
  - layerswitchDMP:
      layerImports:
        - id: matrikelskel
        - id: dybdegraenser

Du kan frit blande indbyggede namedlayer-ID'er og egne lag-ID'er i samme gruppe.

Fejlfinding

SymptomSandsynlig årsagLøsning
Unknown plugin: layerswitch-dmpForkert nøgle i YAMLBrug layerswitchDMP (camelCase) — ikke layerswitch-dmp.
Lagvælgeren er tomLag-id'er i groups[*].layers matcher ikke noget i map.layerTjek at id'erne er defineret som lag.
layerDefaults har ingen effektBrugeren har allerede api_datasets i localStorageRyd browserens lokale data, eller bed testbrugere om at slette nøglen.
Lag skifter ikke ved klikLag mangler en gyldig kilde (WMS, vector, namedlayer)Tjek lag-definitionen i map.layer.
Interne lag (resultLayer, itemsLayer) optræderOneDoor's egne dynamiske lag er ikke ekskluderetKlassisk layerswitch ekskluderer dem automatisk i Ember-stien; for layerswitch2/layerswitchDMP skal du undgå at lægge dem i grupper/imports.
YAML giver parse-fejlIndrykning eller manglende bindestregValidér YAML — controls er en liste, hvert element er et objekt med én nøgle (layerswitch2: eller layerswitchDMP:).