GeoLeaf Core API - v3.0.0
    Preparing search index...

    Per-layer config as declared in a profile (loose JSON).

    interface ProfileLayerConfig {
        id?: string;
        label?: string;
        style?: string;
        visible?: boolean;
        geometryType?: string;
        type?: string;
        dataFile?: string;
        _layerDirectory?: string;
        plugin?: unknown;
        data?: {
            url?: string;
            dataUrl?: string;
            vectorTiles?: { tilesUrl?: string };
        };
        clustering?: {
            enabled?: boolean;
            maxClusterRadius?: number;
            disableClusteringAtZoom?: number;
        };
        attributes?: LayerAttributes;
        write?: LayerWriteTarget;
    }
    Index

    Properties

    id?: string
    label?: string
    style?: string
    visible?: boolean
    geometryType?: string
    type?: string
    dataFile?: string
    _layerDirectory?: string
    plugin?: unknown
    data?: { url?: string; dataUrl?: string; vectorTiles?: { tilesUrl?: string } }
    clustering?: {
        enabled?: boolean;
        maxClusterRadius?: number;
        disableClusteringAtZoom?: number;
    }
    attributes?: LayerAttributes

    The layer's attribute model — see contracts/attributes.contract.ts.

    Replaces three legacy members declared here and read by nothing: popup.fields, tooltip.fields and sidepanel.detailLayout. That last one was the third nesting level of a single detailLayout key spelled at three depths, none of which the profile schema accepts.

    Where this layer's edits are pushed — see contracts/sync.contract.ts.

    Declared per layer because on a backend such as Odoo each layer is a distinct collection. Its absence is what makes a layer read-only offline: pulling a layer for offline use never grants write access on its own.