Kørselskonfiguration (configs)
Når vidi startes i browseren læses værdier ind fra Systemkonfiguration. I flere tilfælde kan denne konfiguration ændres til eksempelvis at inkludere bestemte extensions, eller print-templates.
Vidi startes med en URL som denne (uden fragments [1]):
https://vidi.dk/app/mindb/?config=minconfig.json
Som kan læses sådan:
https://<host>/app/<database>/?config=<kørselskonfiguration>.json
schemata
Her angives hvilke lag, der skal hente ind i lagtræet. Der er tre måder at angive på:
Schema. Alle lag i schemaet.
Lag. Et enkelt lag.
Tag. Alle lag med taggen.
De tre måder kan kombineres.
"schemata": [
"my_schema",
"my_schema.my_layer",
"tag:my_tag_1",
"tag:my_tag_2"
],
Bemærk
Lag skal være placeret i en laggruppe for at kunne hentes ind. Dette gøres i GC2 Admin.
enabledExtensions
Her angives hvilke extensions, som skal aktiveres.
"enabledExtensions": [
"conflictSearch",
"streetView",
"session",
"coordinates",
"offlineMap",
"editor",
"configSwitcher",
"embed"
],
extensionConfig
Her kan opsætningen af de enkelte extensions laves. Det er ikke alle extensions, som har sine egne indstillinger.
Opsætningen sker efter følgende princip:
"extensionConfig": {
"extensionNavn1": {},
"extensionNavn2": {}
}
Her følger hvordan de enkelte extensions kan opsættes (Pt. omfatter denne del af dokumentationen ikke alle extensions)
"extensionConfig": {
"streetView": {
"cowi": "https://cmv.cowi.com/?...",
"mapillary": "https://mapillary.com/app/?..."
"symbols": {
"files": [
{"file": "symbolset1.json", "title": "Symbolsæt 1"},
{"file": "symbolset2.json", "title": "Symbolsæt 2"}
],
"options": {
"scale": true,
"rotate": true,
"delete": true,
"callback": "function(file, state, operation){alert('Et symbol placeret')}",
"validate": "function(file, group, state){return true}"
},
"symbolOptions": {
"symbol34.svg": {
"onlyOne": true,
"rotate": false,
"callback": "function(file, state, operation){alert('Symbol 34 placeret')}"
}
}
}
}
enabledPrints
Her angives hvilke print-templates der skal være adgang til. Angives flere end én kan brugeren vælge mellem dem i print-dialogen.
"enabledPrints": ["print", "print_sagsbehandler"],
enabledSearch
Her angives hvilket søgemodul, der skal være aktiveret. Pt. er der to standard moduler:
danishSøgning på danske adresser, jordstykker og ejendommegoogleGoogle’s Place Search (kræver Google API Key. Se searchConfig)
"enabledSearch": "danish",
searchConfig
Her kan det valgte søgemodul konfigureres.
sizeHvor mange forslag skal der vises.komkodeHvilket eller hvilke kommunekoder skal søgningen omfatte. Angives enten som »851«, [»851«, »727«] eller »*«esrSearchActiveAktiver søgning på esr ejendomsnummersfeSearchActiveAktiver søgning på sfe ejendomsnummerplaceholderTextUdskift standard-teksten med en andengoogleGoogle API key.extraSearchesListe af ekstra søgninger.
"searchConfig": {
"size": 10,
"komkode": "851",
"esrSearchActive": true,
"sfeSearchActive": true,
"placeholderText": "Søg på et eller andet",
"google": {"apiKey": "abc123"}
},
Bemærk
Indstillerne har kun indflydelse på »danish« søgemodulet Kun »google« vedrører Google Place Search og behøver ikke udfyldes, hvis det ikke bruges. Google API kan også sættes i GC2.
Det er muligt at opsætte flere søgemoduler, blandt andet ved at udstille et eller flere lag i en elasticsearch. For at implementere lagene i søgefeltet, skal lagene tilføjes til konfigurationen.
De ekstra søgemoduler kan opsættes således:
searchConfig: {
extraSearches: [,{
name: "stednavne_search",
db: "dk",
host: "https://dk.gc2.io",
heading: "Stednavne",
zoom: 20, // Zoomniveau, når der klikkes på et søgeresultat
index: {
name: "stednavne/navne_samlet",
field: "string",
key: "gid",
},
relation: {
name: "stednavne.navne_samlet_geom",
key: "gid",
geom: "the_geom"
}
}]
},
template
Her angives hvilken template, som skal bruges. Angives det ikke, bruges standard-templaten default.tmpl.
Egne Templates kan placeres på egen server ved angivelse af configUrl indstillingen.
"template": "default.tmpl",
brandName
Her kan sættes en tekst som placeres vha. en placeholder i templates.
"brandName": "Mit brandnavn",
baseLayers
Opsætning af tilgængelige base layers kan ske på fire forskellige metoder:
Indbyggede lag
WMS lag
XYZ lag
GC2 lag
"baseLayers": [
{"id": "osm", "name": "Open Street Map"},
{"id": "bingRoad", "name": "Bing Road"},
{"id": "bingAerial", "name": "Bing Aerial"},
{"id": "hereNormalDay", "name": "HERE Normal Day"},
{"id": "hereNormalDayGrey", "name": "HERE Normal Day Grey"},
{"id": "hereNormalNightGrey", "name": "HERE Normal Night Grey"},
{"id": "hereSatelliteDay", "name": "HERE Satellite Day"},
{"id": "hereHybridDay", "name": "HERE Hybrid Day"},
{"id": "googleStreets", "name": "Google Streets"},
{"id": "googleHybrid", "name": "Google Hybrid"},
{"id": "googleSatellite", "name": "Google Satellite"},
{"id": "googleTerrain", "name": "Google Terrain"},
{
"inDrawer": true,
"thumbnail": "https://mapcentia.github.io/vidi_configs_common/forvaltningskort.png",
"type": "wms",
"url": "https://services.kortforsyningen.dk/service?SERVICENAME=forvaltning2&token=abc123&",
"layers": ["Basis_kort", "Navne_basis_kort", "Husnummer"],
"id": "Basis_kort",
"name": "Forvaltningskort",
"description": "Basis_kort",
"attribution": "Styrelsen for Dataforsyning og Effektivisering",
"minZoom": 8,
"maxZoom": 22,
"maxNativeZoom": 22
},
{
"type": "XYZ",
"url": "https://m3.mapserver.mapy.cz/base-m/{z}-{x}-{y}?s=0.3&dm=Luminosity",
"id": "mapy",
"name": "Mapy",
"description": "Kort fra Mapy",
"attribution": "Mapy",
"minZoom": 8,
"maxZoom": 20,
"maxNativeZoom": 19
},
{
"type": "gc2",
"id": "geodk.bright-01052019",
"name": "GeoDanmark kort",
"db": "baselayers",
"host": "https://dk.gc2.io",
"config": {
"minZoom": 8,
"maxZoom": 30,
"maxNativeZoom": 26,
"attribution": "© SDFE & MapCentia ApS"
}
}
],
De to egenskaber inDrawer og thumbnail anvendes til baggrundskort »skuffe« og toggle knap. Se mere på baselayerDrawer
Til WMS baggrundskort fra Datafordeler og Dataforsyningen kan der anvendes en proxy, som til dels fixer et problem med Datafordeler og til dels kan forsyne kaldene med brugernavn/kodeord eller token, så disse ikke bliver eksponeret til Vidi brugerne.
Se hvordan bruger-information opsættes i Systemkonfigurationen df
Derefter kan WMS’er opsættes således. Fx hvis man ønsker at anvende:
https://services.datafordeler.dk/GeoDanmarkOrto/orto_foraar/1.0.0/WMS
skal »url« angives til:
/api/datafordeler/GeoDanmarkOrto/orto_foraar/1.0.0/WMS
Vidi sørger så for at tilføje bruger-infomationen og tilrette URL.
"baseLayers": [
{
"type": "wms",
"url": "/api/datafordeler/GeoDanmarkOrto/orto_foraar/1.0.0/WMS",
"layers": ["geodanmark_2020_12_5cm"],
"id": "geodanmark_2020_12_5cm",
"name": "TEST geodanmark_2020_12_5cm",
"description": "geodanmark_2020_12_5cm",
"attribution": "Styrelsen for Dataforsyning og Effektivisering",
"minZoom": 8,
"maxZoom": 22,
"maxNativeZoom": 22,
"transparent": true
},
{
"type": "wms",
"url": "/api/dataforsyningen/topo_skaermkort_DAF",
"layers": ["topo_skaermkort"],
"id": "topo_skaermkort",
"name": "TEST topo_skaermkort",
"description": "geodanmark_2020_12_5cm",
"attribution": "Styrelsen for Dataforsyning og Effektivisering",
"minZoom": 8,
"maxZoom": 22,
"maxNativeZoom": 22,
"transparent": true
}
]
Bemærk
HERE, Bing og Google Maps kræver API nøgle opsat i GC2. Google Maps fungerer på en anden måde end andre lag og langt fra optimalt. Fx kan man ikke printe Google Maps.
baseLayerGroups
Det er muligt at gruppere flere baggrundskort i en gruppe. Grupperne kan vises indledningsvis i en skuffe.
For at gruppere baggrundskortene, angives strukturen i baseLayerGroups. De enkelte baggrundskort angives med samme id som beskrevet i baseLayers.
"baseLayerGroups": [
{
"groupName": "Hexagon DDO ortofoto 2022-1995 + 1954",
"layers": [
"DK-DDOland2022_125mm_UTM32ETRS89",
"DK-DDOland2020_125mm_UTM32ETRS89",
"DK_HxIP-ORTO2018_30cm_UTM32ETRS89",
"DK-DDOland2016_125mm_UTM32ETRS89",
"DK-DDOland2015_25CM_UTM32ETRS89",
"DK-DDOland2014_12CM_UTM32ETRS89",
"DK-DDObasis2013_25cm_UTM32ETRS89",
"DK-DDOland2012_125mm_UTM32ETRS89",
"DK-DDOland2010_125mm_UTM32ETRS89",
"DK-DDOland2008_125mm_UTM32ETRS89",
"DK-DDOland2006_25cm_UTM32ETRS89",
"DK-DDOland2004_25cm_UTM32ETRS89",
"DK-DDOland2002_40cm_UTM32ETRS89",
"DK-DDOland1999_40cm_UTM32ETRS89",
"DK-DDOland1995_80cm_UTM32ETRS89",
"DK-DDOland1954_25cm_UTM32ETRS89"
]
},
{
"groupName": "GeoDanmark forår ortofoto 2023-2015 + quick-orto",
"layers": [
"ortofoto_foraar_temp_DF",
"ortofoto_foraar_2023",
"ortofoto_foraar_2022",
"ortofoto_foraar_2021",
"ortofoto_foraar_2020",
"ortofoto_foraar_2019",
"ortofoto_foraar_2018",
"ortofoto_foraar_2017",
"ortofoto_foraar_2016",
"ortofoto_foraar_2015"
]
}
]
aboutBox
Her kan sættes en tekst eller HTML som vises i About Box.
"aboutBox": "<p>Her kan der indsættes HTML</p>",
startUpModal
Hvis angivet, vil et modal-vindue vises ved opstart med tekst eller HTML. Vinduet kan skjules en gang eller for altid (indtil cookies nulstilles eller indeholdet ændres).
"startUpModal": "<p>Her kan der indsættes HTML</p>",
startupModalSupressionTemplates
startUpModal kan undertrykkes ved udvalgte templates. Templates kan angives ved navn eller regular expression.
"startupModalSupressionTemplates": ["print.tmpl", "blank.tmpl", {
"regularExpression": true,
"name": "print_[\\w]+\\.tmpl"
}],
featureInfoTableOnMap
Når denne er sat til true vises feature-info tabellerne i en popup på kortet i stedet for i sidepanelet. Det gør indstillingen veleget til embed template.
Ved brug af »avanceret forespørgelse« vises tabellerne dog stadig i sidepanelet.
"featureInfoTableOnMap": true,
Bemærk
Kan ikke anvendes i sammenhæng med crossMultiSelect
crossMultiSelect
Når denne er sat til true vil feature info klik fange både raster- og vektor-lag og opstille de enkelte resultater i en »harmonika«. Derved inddeles resultatet ikke efter hvilke lag de tilhører.
Overskrifterne har to dele:
Accordion summery prefixEn fritekst efter eget valg.Accordion summeryEn celle værdi, angivet med kolonnenavn.
Ovenstående sættes i GC2 Meta.
"crossMultiSelect": true,
Bemærk
Hvis extension editor er aktiv vil crossMultiSelect bliver sat til false.
activateMainTab
Sæt hvilket modul, som skal være aktivt fra starten. Mulighederne er:
search
info
layer
baselayer
legend
draw
state-snapshot
print
conflict
streetView
coordinates
"activateMainTab": "info"
cssFiles
Load eksterne CSS filer. Filerne skal placeres på en HTTP server, som forbindes til vha. configUrl
"cssFiles": [
"myStyles1.css",
"myStyles2.css"
]
dontUseAdvancedBaseLayerSwitcher
Deaktiver dobbelt baggrundskort funktionen.
"dontUseAdvancedBaseLayerSwitcher": true
advancedBaseLayerSwitcher
Opsætning af dobbelt baggrundskort funktionen.
modebestemmer om kun Slider1eller kun Overlap2eller begge3skal være tilgængelig. Default er3(begge).defaultbestemmer om det er Silder1eller Overlap2, der skal være aktiv fra starten. Default er1(Slider). Hvismodeer1eller2, så erdefaultligegyldig.activebestemmer om dobbelt baggrundskort funktionen skal være aktiv fra starten. Default erfalse.
"advancedBaseLayerSwitcher": {
"mode": 3,
"default": 1,
"active": false,
}
infoClickCursorStyle
Sæt hvilken CSS cursor style markøren skal have når feature-info modulet er aktivt. Default er »crosshair«.
Andre muligheder kan ses her.
"infoClickCursorStyle": "crosshair"
showLayerGroupCheckbox
Viser en tjekboks i hver lag-gruppe og under-gruppe, som tænder/slukker alle lag i den pågældende gruppe.
"showLayerGroupCheckbox": true
activeLayers
Liste over lag, som skal tændes fra starten. Lag angives schema qualified og med evt. type præfiks (v:, mvt:, w:). De angivne lag behøver ikke at være includeret i schemata. Hvis Vidi startes med et projekt link, vil denne konfiguration blive ignoreret.
"activeLayers": [
"schema.lag1",
"v:schema.lag2"
]
removeDisabledLayersFromLegend
Hvis sættes til true, så fjernes lag fra signaturforklaringen, når laget slukkes. Ellers forbliver det på signaturen, men tjekboksen bliver tom. Default er »false«.
"removeDisabledLayersFromLegend": true
autoPanPopup
Denne indstilling bevirker, at når en pop-up åbnes, så panoreres kort således, at pop-up’en kommer indenfor kortets udsnit. Bemærk, at indstillingen helst skal sættes til »false«, hvis der anvendes vektor-lag med dynamisk loading af data, fordi panoreringen evt. kan bevirke reload af data og derefter lukkes pop-up’en Default er »false«.
"autoPanPopup": true
vectorTable
Denne indstilling styrer om vektorlag tabellen skal vises til højre for eller i bunden af kortet. Endvidere kan højde/bredde styres. Hvis positionen er sat til right
vil kun width have effekt og tabellen vil altid fylde højden ud. Hvis position er sat til bottom vil kun height have effekt og bredden bliver den samme som kortet.
width kan både være relativ % og absolute px mens height kun kan angives som absolute px. Hvis ikke denne indstilling sættes bruges default værdier som vist nedenunder.
"vectorTable": {
"position": "bottom",
"width": "30%",
"height": "250px"
}
initFunction
Her kan angives en JavaScript funktion eller kommandoer, som bliver kørt når Vidi er klar.
initFunction angives på forskellige måder:
Som et funktions-kald startende med function() og den efterfølgende blok er den, som bliver eksekveret. Her er der mulighed for at skrive flere statements, som er afhængige af hinanden:
"initFunction": "function(){let text = 'Hello world'; alert(text)}"
Som en enkelt kommando:
"initFunction": "alert('Hello world')"
Som en liste af kommandoer uafhængige kommandoer:
"initFunction": [
"alert('Hello')",
"alert('world')"
]
Nedenstående vil IKKE virke. Her skal den øverste metode med at wrappe det hele i et samlet funktionskald anvendes:
"initFunction": [
"let text='Hello world'",
"alert(text)"
]
En typisk brug af initFunction er at lave »virtuelle« klik på i brugergrænsefalden. Fx tænd signaturen automatisk fra start:
"initFunction": "document.querySelector('#btn-show-legend-in-map').click()"
initZoomCenter
Hvis sat vil Vidi starte op på det angivet zoom/center. Denne indstilling vil have forrang over zoom/center sat i URL og projekt-link. Kan fx anvendes til at sikre, at alle indlejrede kort starter med samme zoom/center.
Angives således /z/x/y. Dette svarer til det, der vises i Vidi URL’en.
"initZoomCenter": "/16/9.875/56.142"
popupDraggable
Hvis sat til true kan man flytte feature-info pop-up’en på kortet.
"popupDraggable": false
title
Sæt titel på siden (den der vises på browser-fanen).
"title": "Mit overfede kort"
Bemærk
Titlen bliver sat dynamisk efter Vidi er startet og derfor vil titlen under opstart et øjeblik være sat til standardteksten.
baselayerDrawer
Anvend baggrundskort »skuffe« i stedet for toggle knappen. Skuffen kan indeholde et vilkårlig antal muligheder. Udvælgelsen af baggrundskort til skuffen og thumbnails/ skal opsættes i baseLayers
"baselayerDrawer": true
Bemærk
Template default.tmpl viser hverken skuffe eller toggle knap. Anvendes på embed.tmpl og lign., som ikke har den store baggrundskortsvælger.
showOffcanvas
Her kan angives, om menuen skal være vist fra starten. Værdierne kan være true, false eller "mobile". Den sidste viser menuen, hvis skærmen er bred men ikke på fx en smal telefonskærm.
"showOffcanvas": false
expandFirstInLayerTree
Angiver om den første/øverste gruppe i lagtræet skal være foldet ud fra starten.
"expandFirstInLayerTree": false
infoCallback
En funktion som køres, når feature info rammer et eller flere lag. En liste af med de ramte lag sendes med.
"infoCallback": "function(layers){console.log('You hit:', layers)}"
emptyInfoCallback
En funktion som køres, når feature info IKKE rammer noget.
"emptyInfoCallback": "function(){console.log('You hit nothing')}"
dateFormats
Det er muligt at formatere datoer i templates (både popup- og felt-templates). Det gøres ved at kalde en template »helper« og angive et defineret datoformat.
Man kan definere et eller flere mulige datoformater i config’en:
"dateFormats": {
"kort": "D MMMM - YYYY",
"lang": "dddd DD.MM.YYYY HH:mm"
}
Derefter kan formaterne anvendes således i templates:
Hvor formatDate er helper funktionen, dato er feltet med datoer og "lang" er henvisningen til et af de definerede formater i config’en.
Hvis ens datoer ikke er et standardformat, men fx Plandata’s, hvor datoer bliver angivet som fx 20250206 (6. februar 2025), kan man tilføje et inputformat som her:
statelessDraw
Hvis man ikke vil have at tegninger »hænger ved« efter refresh af browser, kan denne option sættes til true.
"statelessDraw": false
openLayerTreeGroups
Angiv hvilke grupper, som skal være foldet ud i lagtræet fra starten.
"openLayerTreeGroups": ["Gruppe1", "Gruppe2"]
crs
Angiv den kort projektion/grid, som skal anvendes. Default er EPSG3857 and den eneste anden mulighed er EPSG25832, som er det danske UTM32 grid.
"crs": "EPSG25832"
Referencer
En konfiguration kan henvise til andre konfigurationer og på den måde kan dele af en opsætning genbruges i flere konfigurationer.
Fx kan man definere sine standard baggrundskort i en konfiguration og så henvise til den fra andre konfigurationer:
Først baggrundskort opsætningen:
[
{
"id": "osm",
"name": "Open Street Map"
},
{
"id": "bingRoad",
"name": "Bing Road"
},
{
"id": "bingAerial",
"name": "Bing Aerial"
}
]
Og så en konfiguration, som henviser til ovenstående:
{
"schemata": [
"public"
],
"brandName": "MapCentia ApS",
"aboutBox": "<p>My awesome web map</p>",
"template": "default.tmpl",
"baseLayers": {
"$ref": "http://127.0.0.1:8080/api/v2/configuration/mydb/configuration_defs_65a15aa97c2df746526680.json"
}
}
Som det ses, så henviser baseLayers til konfigurationen med baggrundskort. Dvs. at indholdet i baseLayers bliver skiftet ud med indholdet i den konfiguration, der henvises til.
Det er også muligt at henvise længere ned i en konfiguration. Fx her henvises til en anden konfigurationens baseLayers egenskab:
{
"baseLayers": {
"$ref": "http://127.0.0.1:8080/api/v2/configuration/mydb/configuration_en_anden_config_65a15aa97c2df746526680.json#/baseLayers"
}
}
URL’en til konfigurationen fås ved at anvende knappen KOPIER LINK:
Bemærk
Henvisninger virker kun for konfigurationer lavet i GC2 Kontrolcenter. Konfigurationer, som anvendes i henvisninger, skal være udgivet. Hvis en henvisning ikke virker (fx hvis url’en er forkert) vises »$ref« egenskaben uforandret.
Fodnoter