On this page

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

Properties

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[]

Methods

  • 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?
SDK JS
Reference
Source