map0

Konfiguration

Config validieren

Eine Konfiguration vor dem Laden der Karte prüfen. Validierungsfehler nennen den JSON-Pfad der betroffenen Einstellung. Diese Seite verwendet den Validator des Viewers und zeigt weitere Möglichkeiten zur Prüfung.

Config einfügen

Diese Seite verwendet validateConfig von map0. Fehler verhindern das Laden der Karte. Bei Warnungen, etwa zu unbekannten Schlüsseln, wird die Karte geladen; die betroffenen Einstellungen sollten geprüft werden.

Vererbung: Der Viewer löst extends vor der Prüfung auf. Eine abgeleitete Konfiguration kann ihre Hintergrundkarten deshalb erben. Diese Seite prüft das eingefügte Dokument unverändert.

Jede Stelle, an der eine Config geprüft wird

Im Editor, noch beim Tippen

Ein $schema-Eintrag verknüpft die Konfiguration mit ihrem JSON Schema. Editoren wie VS Code und JetBrains können damit Autovervollständigung, Dokumentation und Validierung anbieten:

my-map.map0.json
{
  "$schema": "https://map0.net/schema/v1.json",
  "version": 1,
  "basemaps": [{ "type": "style", "url": "…" }]
}

In der CI, bevor sie ausgeliefert wird

Ein JSON-Schema-Validator kann in der Build-Pipeline oder beim Speichern im CMS eingesetzt werden:

shell
npx ajv-cli validate -s node_modules/map0-viewer/schema/v1.json -d my-map.map0.json

check-jsonschema bietet eine Python-Variante. Das Schema prüft Schlüssel, Typen, Wertebereiche und Pflichtfelder.

Im eigenen Code

Das npm-Paket exportiert den Validator über seinen SSR-Einstiegspunkt. Er läuft in Node ohne DOM und kann beispielsweise eine Konfiguration vor dem Speichern prüfen:

save-hook.js
import { validateConfig } from "map0-viewer/ssr";

const { valid, errors, warnings } = validateConfig(config);
// errors: [{ path: "$.layers[0].url", message: 'a "wms" layer needs a "url"' }]

Im Viewer, immer

Der Viewer prüft erneut vor der Darstellung und zeigt Fehler direkt an. Er prüft auch URL-Regeln, eindeutige IDs über Hintergrundkarten und Layer hinweg sowie Zusammenhänge zwischen Feldern, etwa dass min einer Farbrampe kleiner als max ist.

error panel
$.basemaps          at least one basemap is required, e.g. { "type": "style", "url": "…" }
$.layers[2].url     a "wms" layer needs a "url"
$.layers[2].layers  a "wms" layer needs "layers" (WMS LAYERS parameter)

Das veröffentlichte Schema

Dasselbe Schema ist an drei Stellen verfügbar:

Der Dateiname bezieht sich auf die Version des Konfigurationsformats ("version": 1). Die Beschreibungen im Schema liefern die Editor-Dokumentation. Tests vergleichen seine Schlüssel und Aufzählungswerte mit dem Laufzeit-Validator.