Skip to content

IControl

Interface for interactive controls added to the map. This is a specification for implementers to model: it is not an exported method or class.

Controls must implement onAdd and onRemove, and must own an element, which is often a div element. To use MapLibre GL JS's default control styling, add the maplibregl-ctrl class to your control's node.

Example

class HelloWorldControl: IControl {
    onAdd(map) {
        this._map = map;
        this._container = document.createElement('div');
        this._container.className = 'maplibregl-ctrl';
        this._container.textContent = 'Hello, world';
        return this._container;
    }

    onRemove() {
        this._container.parentNode.removeChild(this._container);
        this._map = undefined;
    }
}

Methods

onAdd()

onAdd(map: Map): HTMLElement

Register a control on the map and give it a chance to register event listeners and resources. This method is called by Map#addControl internally.

Parameters

Parameter Type Description
map Map the Map this control will be added to

Returns

HTMLElement

The control's container element. This should be created by the control and returned by onAdd without being attached to the DOM: the map will insert the control's element into the DOM as necessary.

Defined in

src/ui/control/control.ts:49


onRemove()

onRemove(map: Map): void

Unregister a control on the map and give it a chance to detach event listeners and resources. This method is called by Map#removeControl internally.

Parameters

Parameter Type Description
map Map the Map this control will be removed from

Returns

void

Defined in

src/ui/control/control.ts:57

Properties

getDefaultPosition()?

readonly optional getDefaultPosition: () => ControlPosition

Optionally provide a default position for this control. If this method is implemented and Map#addControl is called without the position parameter, the value returned by getDefaultPosition will be used as the control's position.

Returns

ControlPosition

a control position, one of the values valid in addControl.

Defined in

src/ui/control/control.ts:66