Join us online - 19th of November
Save your spot
For AI agents: a documentation index is available at /llms.txt. Markdown versions of all pages are available by appending .md to any URL.

Interface Source

The Source interface must be implemented by each source type, including "core" types (vector, raster, video, etc.) and all custom, third-party types.

Event data - Fired with {dataType: 'source', sourceDataType: 'metadata'} to indicate that any necessary metadata has been loaded so that it's okay to call loadTile; and with {dataType: 'source', sourceDataType: 'content'} to indicate that the source data has changed, so that any current caches should be flushed.

interface Source {
    attribution?: string;
    calculateTileZoom?: CalculateTileZoomFunction;
    id: string;
    isTileClipped?: boolean;
    maxzoom: number;
    minzoom: number;
    reparseOverscaled?: boolean;
    roundZoom?: boolean;
    tileID?: CanonicalTileID;
    tileSize: number;
    type: string;
    vectorLayerIds?: string[];
    abortTile?(tile: Tile): Promise<void>;
    fire(event: Event): unknown;
    hasTile?(tileID: OverscaledTileID): boolean;
    hasTransition(): boolean;
    loaded(): boolean;
    loadTile(tile: Tile): Promise<void | LoadTileResult>;
    onAdd?(map: MapLibreMap): void;
    onRemove?(map: MapLibreMap): void;
    prepare?(): void;
    serialize(): any;
    shouldReloadTile?(
        tile: Tile,
        options: GeoJSONSourceShouldReloadTileOptions,
    ): boolean;
    unloadTile?(tile: Tile): Promise<void>;
}

Implemented by

Index
attribution?: string

The attribution for the source.

calculateTileZoom?: CalculateTileZoomFunction

Optional function to redefine how tiles are loaded at high pitch angles.

id: string

The id for the source. Must not be used by any existing source.

isTileClipped?: boolean

false if tiles can be drawn outside their boundaries, true if they cannot.

maxzoom: number

The maximum zoom level for the source.

minzoom: number

The minimum zoom level for the source.

reparseOverscaled?: boolean

true if tiles should be sent back to the worker for each overzoomed zoom level, false if not.

roundZoom?: boolean

true if zoom levels are rounded to the nearest integer in the source data, false if they are floor-ed to the nearest integer.

tileSize: number

The tile size for the source.

type: string
vectorLayerIds?: string[]
  • Allows to abort a tile loading.

    Parameters

    • tile: Tile

      The tile to abort

    Returns Promise<void>

  • An ability to fire an event to all the listeners, see Evented

    Parameters

    • event: Event

      The event to fire

    Returns unknown

  • True is the tile is part of the source, false otherwise.

    Parameters

    Returns boolean

  • True if the source has transition, false otherwise.

    Returns boolean

  • True if the source is loaded, false otherwise.

    Returns boolean

  • This method does the heavy lifting of loading a tile. In most cases it will defer the work to the relevant worker source.

    Parameters

    • tile: Tile

      The tile to load

    Returns Promise<void | LoadTileResult>

  • This method is called when the source is added to the map.

    Parameters

    Returns void

  • This method is called when the source is removed from the map.

    Parameters

    Returns void

  • Allows to execute a prepare step before the source is used.

    Returns void

  • Returns any

    A plain (stringifiable) JS object representing the current state of the source. Creating a source using the returned object as the options should result in a Source that is equivalent to this one.

  • Allows to unload a tile.

    Parameters

    • tile: Tile

      The tile to unload

    Returns Promise<void>

Was this helpful?