---
title: "PrecipitationLayer | Weather SDK | JavaScript maps SDK"
description: "Documentation for Weather JS"
---

# Class PrecipitationLayer

The PrecipitationLayer shows the atmospheric precipitation in millibar (or hectopascal)

#### Hierarchy ([View Summary](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/hierarchy/#PrecipitationLayer))

-   [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/)
    -   PrecipitationLayer

##### Index

### Constructors

[constructor](#constructor)

### Properties

[camera](#camera) [dataMaxZoom](#datamaxzoom) [dataMinZoom](#dataminzoom) [extentScale](#extentscale) [getMapOrThrow](#getmaporthrow) [getRendererOrThrow](#getrendererorthrow) [globeTilesService](#globetilesservice) [id](#id) [isReady](#isready) [map](#map) [renderer](#renderer) [renderingMode](#renderingmode) [scene](#scene) [slippyTiles](#slippytiles) [slippyTilesGroup](#slippytilesgroup) [threeWorldGroup](#threeworldgroup) [type](#type) [captureRejections](#capturerejections) [captureRejectionSymbol](#capturerejectionsymbol) [defaultMaxListeners](#defaultmaxlisteners) [errorMonitor](#errormonitor)

### Methods

[\[captureRejectionSymbol\]?](#capturerejectionsymbol-1) [addFrame](#addframe) [addListener](#addlistener) [addSource](#addsource) [animate](#animate) [animateByFactor](#animatebyfactor) [animationTick](#animationtick) [computeCurrentMixedImage](#computecurrentmixedimage) [disposeObjects](#disposeobjects) [emit](#emit) [eventNames](#eventnames) [forceRepaint](#forcerepaint) [forEachFrame](#foreachframe) [getAnimationEnd](#getanimationend) [getAnimationEndDate](#getanimationenddate) [getAnimationSpeed](#getanimationspeed) [getAnimationStart](#getanimationstart) [getAnimationStartDate](#getanimationstartdate) [getAnimationTime](#getanimationtime) [getAnimationTimeDate](#getanimationtimedate) [getColorRamp](#getcolorramp) [getCurrentFrames](#getcurrentframes) [getIsSourceReady](#getissourceready) [getMaxListeners](#getmaxlisteners) [getNextFrame](#getnextframe) [getRepaintOnPausedAnimation](#getrepaintonpausedanimation) [getTilesPair](#gettilespair) [getVisibleExtent](#getvisibleextent) [getWantedTiles](#getwantedtiles) [init](#init) [isPlaying](#isplaying) [listenerCount](#listenercount) [listeners](#listeners) [off](#off) [on](#on) [onAdd](#onadd) [once](#once) [onMove](#onmove) [onMoveEnd](#onmoveend) [onProjectionChanged](#onprojectionchanged) [onRemove](#onremove) [onResize](#onresize) [onSourceReadyAsync](#onsourcereadyasync) [pick](#pick) [pickAt](#pickat) [prependListener](#prependlistener) [prependOnceListener](#prependoncelistener) [prerender](#prerender) [prerenderInternal](#prerenderinternal) [rawListeners](#rawlisteners) [refresh](#refresh) [registerTelemetry](#registertelemetry) [removeAllListeners](#removealllisteners) [removeFrame](#removeframe) [removeListener](#removelistener) [removeSource](#removesource) [render](#render) [renderInternal](#renderinternal) [setAnimationTime](#setanimationtime) [setCategorySmoothTransition](#setcategorysmoothtransition) [setLocalSmoothing](#setlocalsmoothing) [setMaxListeners](#setmaxlisteners) [setMaxSmoothingDistance](#setmaxsmoothingdistance) [setOpacity](#setopacity) [setRepaintOnPausedAnimation](#setrepaintonpausedanimation) [setSmoothingDistanceDecayFactor](#setsmoothingdistancedecayfactor) [setTimeInterpolation](#settimeinterpolation) [updateSlippyTiles](#updateslippytiles) [addAbortListener](#addabortlistener) [getEventListeners](#geteventlisteners) [getMaxListeners](#getmaxlisteners-2) [listenerCount](#listenercount-2) [on](#on-2) [once](#once-2) [setMaxListeners](#setmaxlisteners-2)

## Constructors

### constructor[](#constructor)

-   new PrecipitationLayer(options?: [PrecipitationLayerOptions](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/types/PrecipitationLayerOptions/)): PrecipitationLayer[](#constructorprecipitationlayer)
    
    #### Parameters
    
    -   `Optional`options: [PrecipitationLayerOptions](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/types/PrecipitationLayerOptions/)
    
    #### Returns PrecipitationLayer
    
    Overrides [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[constructor](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#constructor)
    

## Properties

### `Protected` `Readonly`camera[](#camera)

camera: Camera

Camera used to render the tiles

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[camera](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#camera)

### `Protected`dataMaxZoom[](#datamaxzoom)

dataMaxZoom: number

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[dataMaxZoom](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#datamaxzoom)

### `Protected`dataMinZoom[](#dataminzoom)

dataMinZoom: number

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[dataMinZoom](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#dataminzoom)

### `Protected`extentScale[](#extentscale)

extentScale: number

ratio to wich the extent is enlarged when using the method `.getVisibleExtent()`

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[extentScale](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#extentscale)

### `Protected`getMapOrThrow[](#getmaporthrow)

getMapOrThrow: () \=> Map

The map is available only after the layer is attached to the map The method simplifies the access to the map object

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getMapOrThrow](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getmaporthrow)

### `Protected`getRendererOrThrow[](#getrendererorthrow)

getRendererOrThrow: () \=> WebGLRenderer

The renderer is available only after the layer is attached to the map The method simplifies the access to the renderer object

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getRendererOrThrow](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getrendererorthrow)

### `Protected`globeTilesService[](#globetilesservice)

globeTilesService: GlobeTilesService

Globe related changes

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[globeTilesService](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#globetilesservice)

### id[](#id)

id: string

A unique layer id.

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[id](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#id)

### `Protected`isReady[](#isready)

isReady: boolean

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[isReady](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#isready)

### `Protected`map[](#map)

map: Map | null

Instance of MapTiler SDK map

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[map](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#map)

### `Protected`renderer[](#renderer)

renderer: WebGLRenderer | null

Renderer to render the tiles

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[renderer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#renderer)

### renderingMode[](#renderingmode)

renderingMode: "3d"

Either `"2d"` or `"3d"`. Defaults to `"2d"`.

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[renderingMode](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#renderingmode)

### `Protected` `Readonly`scene[](#scene)

scene: Scene

Scene to add the tiles to

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[scene](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#scene)

### `Protected` `Readonly`slippyTiles[](#slippytiles)

slippyTiles: Mesh<  
    BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap\>,  
    Material | Material\[\],  
    Object3DEventMap,  
\>\[\]\[\]

Array of array of Tiles (plane geometry meshes)

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[slippyTiles](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#slippytiles)

### `Protected`slippyTilesGroup[](#slippytilesgroup)

slippyTilesGroup: Group<Object3DEventMap\>

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[slippyTilesGroup](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#slippytilesgroup)

### `Protected`threeWorldGroup[](#threeworldgroup)

threeWorldGroup: Group<Object3DEventMap\>

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[threeWorldGroup](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#threeworldgroup)

### type[](#type)

type: "custom"

The layer's type. Must be `"custom"`.

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[type](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#type)

### `Static`captureRejections[](#capturerejections)

captureRejections: boolean

Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)

Change the default `captureRejections` option on all new `EventEmitter` objects.

#### Since[](#since)

v13.4.0, v12.16.0

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[captureRejections](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#capturerejections)

### `Static` `Readonly`captureRejectionSymbol[](#capturerejectionsymbol)

captureRejectionSymbol: typeof [captureRejectionSymbol](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TemperatureLayer/#capturerejectionsymbol)

Value: `Symbol.for('nodejs.rejection')`

See how to write a custom `rejection handler`.

#### Since[](#since-1)

v13.4.0, v12.16.0

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[captureRejectionSymbol](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#capturerejectionsymbol)

### `Static`defaultMaxListeners[](#defaultmaxlisteners)

defaultMaxListeners: number

By default, a maximum of `10` listeners can be registered for any single event. This limit can be changed for individual `EventEmitter` instances using the `emitter.setMaxListeners(n)` method. To change the default for _all_`EventEmitter` instances, the `events.defaultMaxListeners` property can be used. If this value is not a positive number, a `RangeError` is thrown.

Take caution when setting the `events.defaultMaxListeners` because the change affects _all_ `EventEmitter` instances, including those created before the change is made. However, calling `emitter.setMaxListeners(n)` still has precedence over `events.defaultMaxListeners`.

This is not a hard limit. The `EventEmitter` instance will allow more listeners to be added but will output a trace warning to stderr indicating that a "possible EventEmitter memory leak" has been detected. For any single `EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()` methods can be used to temporarily avoid this warning:

```typescript
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
  // do stuff
  emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
});
```

The `--trace-warnings` command-line flag can be used to display the stack trace for such warnings.

The emitted warning can be inspected with `process.on('warning')` and will have the additional `emitter`, `type`, and `count` properties, referring to the event emitter instance, the event's name and the number of attached listeners, respectively. Its `name` property is set to `'MaxListenersExceededWarning'`.

#### Since[](#since-2)

v0.11.2

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[defaultMaxListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#defaultmaxlisteners)

### `Static` `Readonly`errorMonitor[](#errormonitor)

errorMonitor: typeof [errorMonitor](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TemperatureLayer/#errormonitor)

This symbol shall be used to install a listener for only monitoring `'error'` events. Listeners installed using this symbol are called before the regular `'error'` listeners are called.

Installing a listener using this symbol does not change the behavior once an `'error'` event is emitted. Therefore, the process will still crash if no regular `'error'` listener is installed.

#### Since[](#since-3)

v13.6.0, v12.17.0

Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[errorMonitor](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#errormonitor)

## Methods

### `Optional`\[captureRejectionSymbol\][](#capturerejectionsymbol-1)

-   "\[captureRejectionSymbol\]"?<[K](#capturerejectionsymbolk)\>(  
        error: Error,  
        event: string | symbol,  
        ...args: AnyRest,  
    ): void[](#capturerejectionsymbol-2)
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   error: Error
    -   event: string | symbol
    -   ...args: AnyRest
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[\[captureRejectionSymbol\]](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#capturerejectionsymbol-1)
    

### `Protected`addFrame[](#addframe)

-   addFrame(time: number, data: TileTextureSource): void[](#addframe-1)
    
    Add a new TimeFrame information to the animation. If the frame container is not empty, then the provided TimeFrame data will be added at the corresct position based on its time.
    
    #### Parameters
    
    -   time: number
    -   data: TileTextureSource
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[addFrame](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#addframe)
    

### addListener[](#addlistener)

-   addListener<[K](#addlistenerk)\>(  
        eventName: string | symbol,  
        listener: (...args: any\[\]) \=> void,  
    ): this[](#addlistener-1)
    
    Alias for `emitter.on(eventName, listener)`.
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
    -   listener: (...args: any\[\]) \=> void
    
    #### Returns this
    
    #### Since[](#since-4)
    
    v0.1.26
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[addListener](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#addlistener)
    

### addSource[](#addsource)

-   addSource(  
        time: number,  
        url: string,  
        loadedCallback?:  
            | ((tile: Tile, url?: string, error?: ErrorEvent | null) \=> void)  
            | null,  
    ): void[](#addsource-1)
    
    Adds another frame to the animation.
    
    #### Parameters
    
    -   time: number
        
        Time of the data in this frame. Should be unique.
        
    -   url: string
        
        URL to the tiles. Expected to have `{zxy}` placeholder to be dynamically replaced with `z/x/y` coordinates.
        
    -   `Optional`loadedCallback: ((tile: Tile, url?: string, error?: ErrorEvent | null) \=> void) | null
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[addSource](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#addsource)
    

### animate[](#animate)

-   animate(timePerSecond: number): void[](#animate-1)
    
    Changes the speed of the animation. `0` to stop. The speed is in number of real world milliseconds per animation second. Example: if timePerSecond is set to 10\*1000, then the animation will run 10x of real world speed.
    
    #### Parameters
    
    -   timePerSecond: number
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[animate](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#animate)
    

### animateByFactor[](#animatebyfactor)

-   animateByFactor(factor: number): void[](#animatebyfactor-1)
    
    Animate by a factor of real life speed. Exampe, if `factor` is `10`, then the animation will play at 10 times the real life speed.
    
    #### Parameters
    
    -   factor: number
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[animateByFactor](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#animatebyfactor)
    

### `Protected`animationTick[](#animationtick)

-   animationTick(): void[](#animationtick-1)
    
    Make the animation time progress based on the current timestamps.
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[animationTick](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#animationtick)
    

### computeCurrentMixedImage[](#computecurrentmixedimage)

-   computeCurrentMixedImage(  
        \_\_namedParameters: {  
            blurKernel?: number;  
            channel?: string;  
            outputSize?: number;  
            zxy?: string;  
        },  
    ): ImageData  
    | null[](#computecurrentmixedimage-1)
    
    Get the current mixed image as a ImageData, meaning with pixel data, width, height and number of channels Used by: Weather Plus
    
    #### Parameters
    
    -   \_\_namedParameters: { blurKernel?: number; channel?: string; outputSize?: number; zxy?: string }
    
    #### Returns ImageData | null
    
    ImageData | null
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[computeCurrentMixedImage](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#computecurrentmixedimage)
    

### `Protected`disposeObjects[](#disposeobjects)

-   disposeObjects(): void[](#disposeobjects-1)
    
    Remove some data allocated (not of the tiles)
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[disposeObjects](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#disposeobjects)
    

### emit[](#emit)

-   emit<[K](#emitk)\>(eventName: string | symbol, ...args: AnyRest): boolean[](#emit-1)
    
    Synchronously calls each of the listeners registered for the event named `eventName`, in the order they were registered, passing the supplied arguments to each.
    
    Returns `true` if the event had listeners, `false` otherwise.
    
    ```typescript
    import { EventEmitter } from 'node:events';
    const myEmitter = new EventEmitter();
    
    // First listener
    myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
    });
    
    console.log(myEmitter.listeners('event'));
    
    myEmitter.emit('event', 1, 2, 3, 4, 5);
    
    // Prints:
    // [
    //   [Function: firstListener],
    //   [Function: secondListener],
    //   [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener
    ```
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
    -   ...args: AnyRest
    
    #### Returns boolean
    
    #### Since[](#since-5)
    
    v0.1.26
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[emit](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#emit)
    

### eventNames[](#eventnames)

-   eventNames(): (string | symbol)\[\][](#eventnames-1)
    
    Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or `Symbol`s.
    
    ```typescript
    import { EventEmitter } from 'node:events';
    
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});
    
    const sym = Symbol('symbol');
    myEE.on(sym, () => {});
    
    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ]
    ```
    
    #### Returns (string | symbol)\[\]
    
    #### Since[](#since-6)
    
    v6.0.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[eventNames](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#eventnames)
    

### forceRepaint[](#forcerepaint)

-   forceRepaint(): void[](#forcerepaint-1)
    
    The method simplifies the access to the triggerRepaint method
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[forceRepaint](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#forcerepaint)
    

### `Protected`forEachFrame[](#foreachframe)

-   forEachFrame(action: (frame: TimeFrame<TileTextureSource\>) \=> void): void[](#foreachframe-1)
    
    Call a function for each TimeFrame of the animation
    
    #### Parameters
    
    -   action: (frame: TimeFrame<TileTextureSource\>) \=> void
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[forEachFrame](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#foreachframe)
    

### getAnimationEnd[](#getanimationend)

-   getAnimationEnd(): number[](#getanimationend-1)
    
    Get the end time of the animation or -Infinity if empty.
    
    #### Returns number
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getAnimationEnd](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getanimationend)
    

### getAnimationEndDate[](#getanimationenddate)

-   getAnimationEndDate(): Date[](#getanimationenddate-1)
    
    Get the animation end as a date object
    
    #### Returns Date
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getAnimationEndDate](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getanimationenddate)
    

### getAnimationSpeed[](#getanimationspeed)

-   getAnimationSpeed(): number[](#getanimationspeed-1)
    
    Get the speed of the animation. The speed is in number of real world seconds per animation second.
    
    #### Returns number
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getAnimationSpeed](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getanimationspeed)
    

### getAnimationStart[](#getanimationstart)

-   getAnimationStart(): number[](#getanimationstart-1)
    
    Get the time of the first TimeFrame (always the begining of the animation). If the frame container is empty, returns Infinity
    
    #### Returns number
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getAnimationStart](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getanimationstart)
    

### getAnimationStartDate[](#getanimationstartdate)

-   getAnimationStartDate(): Date[](#getanimationstartdate-1)
    
    Get the animation start as a Date object
    
    #### Returns Date
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getAnimationStartDate](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getanimationstartdate)
    

### getAnimationTime[](#getanimationtime)

-   getAnimationTime(): number[](#getanimationtime-1)
    
    Get the current time of the animation
    
    #### Returns number
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getAnimationTime](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getanimationtime)
    

### getAnimationTimeDate[](#getanimationtimedate)

-   getAnimationTimeDate(): Date[](#getanimationtimedate-1)
    
    Get the current time of the animation as a Date object
    
    #### Returns Date
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getAnimationTimeDate](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getanimationtimedate)
    

### getColorRamp[](#getcolorramp)

-   getColorRamp(): Readonly<[ColorRamp](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/ColorRamp/)\>[](#getcolorramp-1)
    
    Get the color ramp in use by the layer
    
    #### Returns Readonly<[ColorRamp](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/ColorRamp/)\>
    

### `Protected`getCurrentFrames[](#getcurrentframes)

-   getCurrentFrames(): {  
        frameA: TimeFrame<TileTextureSource\>  
        | null;  
        frameB: TimeFrame<TileTextureSource\> | null;  
        mix: number;  
    }[](#getcurrentframes-1)
    
    Based on the current animation time, retrieve the frame immediately before (frameA), the frame immediately after (frameB) and the mix. The mixe value is in the interval \[0, 1\], where close to `0` means the current time is close to frameA and close to `1` means the current time is close to frameB. The mix value is provided so that linear interpolation of data can be performed.
    
    #### Returns {  
        frameA: TimeFrame<TileTextureSource\> | null;  
        frameB: TimeFrame<TileTextureSource\> | null;  
        mix: number;  
    }
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getCurrentFrames](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getcurrentframes)
    

### getIsSourceReady[](#getissourceready)

-   getIsSourceReady(): boolean[](#getissourceready-1)
    
    Check if the data source that fuels the layer has been fully fetched and processed
    
    #### Returns boolean
    

### getMaxListeners[](#getmaxlisteners)

-   getMaxListeners(): number[](#getmaxlisteners-1)
    
    Returns the current max listener value for the `EventEmitter` which is either set by `emitter.setMaxListeners(n)` or defaults to [EventEmitter.defaultMaxListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TemperatureLayer/#defaultmaxlisteners).
    
    #### Returns number
    
    #### Since[](#since-7)
    
    v1.0.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getMaxListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getmaxlisteners)
    

### `Protected`getNextFrame[](#getnextframe)

-   getNextFrame(  
        frame: TimeFrame<TileTextureSource\>,  
        direction: number,  
    ): TimeFrame<TileTextureSource\> | null[](#getnextframe-1)
    
    Providing a TimeFrame (time + data), get the TimeFrame from the annimation that is directly after (when `direction` is positive) or immediately before (when `direction` is negative)
    
    #### Parameters
    
    -   frame: TimeFrame<TileTextureSource\>
    -   direction: number
    
    #### Returns TimeFrame<TileTextureSource\> | null
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getNextFrame](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getnextframe)
    

### getRepaintOnPausedAnimation[](#getrepaintonpausedanimation)

-   getRepaintOnPausedAnimation(): boolean[](#getrepaintonpausedanimation-1)
    
    Get whether or not the frames continues to rendered on a paused animation
    
    #### Returns boolean
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getRepaintOnPausedAnimation](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getrepaintonpausedanimation)
    

### `Protected`getTilesPair[](#gettilespair)

-   getTilesPair(  
        frameA: TimeFrame<TileTextureSource\>,  
        frameB: TimeFrame<TileTextureSource\>,  
        tileId: string,  
    ): { tileA: [TilePlacement](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/interfaces/TilePlacement/); tileB: [TilePlacement](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/interfaces/TilePlacement/) } | null[](#gettilespair-1)
    
    TODO: Add description
    
    #### Parameters
    
    -   frameA: TimeFrame<TileTextureSource\>
    -   frameB: TimeFrame<TileTextureSource\>
    -   tileId: string
    
    #### Returns { tileA: [TilePlacement](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/interfaces/TilePlacement/); tileB: [TilePlacement](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/interfaces/TilePlacement/) } | null
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getTilesPair](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#gettilespair)
    

### getVisibleExtent[](#getvisibleextent)

-   getVisibleExtent(scale?: number): Extent | null[](#getvisibleextent-1)
    
    Get the Extent as defined in OL
    
    #### Parameters
    
    -   `Optional`scale: number
    
    #### Returns Extent | null
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getVisibleExtent](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getvisibleextent)
    

### getWantedTiles[](#getwantedtiles)

-   getWantedTiles(currentZ: number, minZoom: number, maxZoom: number): [TileList](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/types/TileList/)[](#getwantedtiles-1)
    
    Get the list of all the tiles wanted for this extent and from the min zoom to the max zoom. This is used to prevent updating tiles that are not in this list in `.updateSlippyTile()`
    
    #### Parameters
    
    -   currentZ: number
    -   minZoom: number
    -   maxZoom: number
    
    #### Returns [TileList](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/types/TileList/)
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getWantedTiles](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getwantedtiles)
    

### `Protected`init[](#init)

-   init(  
        options: [TileLayerOptions](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/interfaces/TileLayerOptions/),  
        coloringFragments?: [ColoringFragmentBase](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/ColoringFragmentBase/)\[\] | null,  
        multiChannelColoringFragment?: [MultiChannelGradientColoringFragment](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/MultiChannelGradientColoringFragment/) | null,  
    ): void[](#init-1)
    
    TODO: Add description
    
    #### Parameters
    
    -   options: [TileLayerOptions](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/interfaces/TileLayerOptions/)
    -   `Optional`coloringFragments: [ColoringFragmentBase](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/ColoringFragmentBase/)\[\] | null
    -   `Optional`multiChannelColoringFragment: [MultiChannelGradientColoringFragment](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/MultiChannelGradientColoringFragment/) | null
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[init](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#init)
    

### isPlaying[](#isplaying)

-   isPlaying(): boolean[](#isplaying-1)
    
    Tells whether the animation is currently playing
    
    #### Returns boolean
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[isPlaying](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#isplaying)
    

### listenerCount[](#listenercount)

-   listenerCount<[K](#listenercountk)\>(eventName: string | symbol, listener?: Function): number[](#listenercount-1)
    
    Returns the number of listeners listening for the event named `eventName`. If `listener` is provided, it will return how many times the listener is found in the list of the listeners of the event.
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
        
        The name of the event being listened for
        
    -   `Optional`listener: Function
        
        The event handler function
        
    
    #### Returns number
    
    #### Since[](#since-8)
    
    v3.2.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[listenerCount](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#listenercount)
    

### listeners[](#listeners)

-   listeners<[K](#listenersk)\>(eventName: string | symbol): Function\[\][](#listeners-1)
    
    Returns a copy of the array of listeners for the event named `eventName`.
    
    ```typescript
    server.on('connection', (stream) => {
      console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ]
    ```
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
    
    #### Returns Function\[\]
    
    #### Since[](#since-9)
    
    v0.1.26
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[listeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#listeners)
    

### off[](#off)

-   off<[K](#offk)\>(eventName: string | symbol, listener: (...args: any\[\]) \=> void): this[](#off-1)
    
    Alias for `emitter.removeListener()`.
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
    -   listener: (...args: any\[\]) \=> void
    
    #### Returns this
    
    #### Since[](#since-10)
    
    v10.0.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[off](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#off)
    

### on[](#on)

-   on<[K](#onk)\>(eventName: string | symbol, listener: (...args: any\[\]) \=> void): this[](#on-1)
    
    Adds the `listener` function to the end of the listeners array for the event named `eventName`. No checks are made to see if the `listener` has already been added. Multiple calls passing the same combination of `eventName` and `listener` will result in the `listener` being added, and called, multiple times.
    
    ```typescript
    server.on('connection', (stream) => {
      console.log('someone connected!');
    });
    ```
    
    Returns a reference to the `EventEmitter`, so that calls can be chained.
    
    By default, event listeners are invoked in the order they are added. The `emitter.prependListener()` method can be used as an alternative to add the event listener to the beginning of the listeners array.
    
    ```typescript
    import { EventEmitter } from 'node:events';
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    //   b
    //   a
    ```
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
        
        The name of the event.
        
    -   listener: (...args: any\[\]) \=> void
        
        The callback function
        
    
    #### Returns this
    
    #### Since[](#since-11)
    
    v0.1.101
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[on](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#on)
    

### onAdd[](#onadd)

-   onAdd(  
        map: Map,  
        gl: WebGLRenderingContext | WebGL2RenderingContext,  
    ): Promise<void\>[](#onadd-1)
    
    Method from CustomLayerInterface, called when the layer is added to the map
    
    #### Parameters
    
    -   map: Map
    -   gl: WebGLRenderingContext | WebGL2RenderingContext
    
    #### Returns Promise<void\>
    
    Overrides [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[onAdd](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#onadd)
    

### once[](#once)

-   once<[K](#oncek)\>(eventName: string | symbol, listener: (...args: any\[\]) \=> void): this[](#once-1)
    
    Adds a **one-time** `listener` function for the event named `eventName`. The next time `eventName` is triggered, this listener is removed and then invoked.
    
    ```typescript
    server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
    });
    ```
    
    Returns a reference to the `EventEmitter`, so that calls can be chained.
    
    By default, event listeners are invoked in the order they are added. The `emitter.prependOnceListener()` method can be used as an alternative to add the event listener to the beginning of the listeners array.
    
    ```typescript
    import { EventEmitter } from 'node:events';
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    //   b
    //   a
    ```
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
        
        The name of the event.
        
    -   listener: (...args: any\[\]) \=> void
        
        The callback function
        
    
    #### Returns this
    
    #### Since[](#since-12)
    
    v0.3.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[once](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#once)
    

### `Protected`onMove[](#onmove)

-   onMove(): void[](#onmove-1)
    
    #### Returns void
    
    #### Description[](#description)
    
    Event handler - callback when the map is moved.
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[onMove](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#onmove)
    

### `Protected`onMoveEnd[](#onmoveend)

-   onMoveEnd(): void[](#onmoveend-1)
    
    #### Returns void
    
    #### Description[](#description-1)
    
    Event handler - called when the map movement ends.
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[onMoveEnd](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#onmoveend)
    

### onProjectionChanged[](#onprojectionchanged)

-   onProjectionChanged(event: MapProjectionEvent): void[](#onprojectionchanged-1)
    
    #### Parameters
    
    -   event: MapProjectionEvent
    
    #### Returns void
    
    #### Description[](#description-2)
    
    Event handler - called when projection is changed
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[onProjectionChanged](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#onprojectionchanged)
    

### onRemove[](#onremove)

-   onRemove(\_map: Map, \_gl: WebGLRenderingContext | WebGL2RenderingContext): void[](#onremove-1)
    
    The method is called when the layer is removed from the map `CustomLayerInterface` method
    
    #### Parameters
    
    -   \_map: Map
    -   \_gl: WebGLRenderingContext | WebGL2RenderingContext
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[onRemove](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#onremove)
    

### `Protected`onResize[](#onresize)

-   onResize(): void[](#onresize-1)
    
    #### Returns void
    
    #### Description[](#description-3)
    
    Event handler - callback when the window is resized.
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[onResize](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#onresize)
    

### onSourceReadyAsync[](#onsourcereadyasync)

-   onSourceReadyAsync(): Promise<void\>[](#onsourcereadyasync-1)
    
    Async function corresponding to the "sourceReady" event. Resolves directly if source is already ready, or awaits the "sourceReady" event if not.
    
    #### Returns Promise<void\>
    

### pick[](#pick)

-   pick(  
        lng: number,  
        lat: number,  
        options?: { bilinear?: boolean; highestRes?: boolean; load?: boolean },  
    ): number\[\] | null[](#pick-1)
    
    Picks the best currently available values at the position.
    
    The values are read from the already loaded tiles at the current time.
    
    Return the interpolated array of decoded values of the same length as the number of specified coloring fragments.
    
    If the coloring fragments uses more channels (e.g. "rg"), the corresponding value is an array of `[r value, g value, sqrt(r^2 + g^2)]`.
    
    #### Parameters
    
    -   lng: number
    -   lat: number
    -   `Optional`options: { bilinear?: boolean; highestRes?: boolean; load?: boolean }
        -   ##### `Optional`bilinear?: boolean
            
            Enable bilinear interpolation if `true`, otherwise, the picking will be based on the nearest neighbor (NN) pixel. NN has less impact on performance because it requires less texture reading, so it is generaly faster. Bilinear is more precise and will retrieve values that are closer to what is being displayed (since tiles are rendered using a native-GPU bilinear method) Default: `false`
            
        -   ##### `Optional`highestRes?: boolean
            
            If `true`, the picking will be perfomed on the highest resolution tile available. If `false`, the picking is done on the tile currently showing on the map.
            
        -   ##### `Optional`load?: boolean
            
            Will force the loading of the tile if it was not already cached. Usually unnecesary when the picking is done from hovering the pointer on the map, unless the option `.highRes` is `true`. Default: `false`.
            
    
    #### Returns number\[\] | null
    
    Array of decoded interpolated values. In case of using a multi-channel coloring fragment, the returned value is an array where the first value is the value and the second is the category
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[pick](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#pick)
    

### pickAt[](#pickat)

-   pickAt(  
        lng: number,  
        lat: number,  
        options?: { bilinear?: boolean },  
    ): [PrecipitationPickAt](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/types/PrecipitationPickAt/) | null[](#pickat-1)
    
    Get the amount of precipitation in mm/h
    
    #### Parameters
    
    -   lng: number
    -   lat: number
    -   `Optional`options: { bilinear?: boolean }
    
    #### Returns [PrecipitationPickAt](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/types/PrecipitationPickAt/) | null
    

### prependListener[](#prependlistener)

-   prependListener<[K](#prependlistenerk)\>(  
        eventName: string | symbol,  
        listener: (...args: any\[\]) \=> void,  
    ): this[](#prependlistener-1)
    
    Adds the `listener` function to the _beginning_ of the listeners array for the event named `eventName`. No checks are made to see if the `listener` has already been added. Multiple calls passing the same combination of `eventName` and `listener` will result in the `listener` being added, and called, multiple times.
    
    ```typescript
    server.prependListener('connection', (stream) => {
      console.log('someone connected!');
    });
    ```
    
    Returns a reference to the `EventEmitter`, so that calls can be chained.
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
        
        The name of the event.
        
    -   listener: (...args: any\[\]) \=> void
        
        The callback function
        
    
    #### Returns this
    
    #### Since[](#since-13)
    
    v6.0.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[prependListener](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#prependlistener)
    

### prependOnceListener[](#prependoncelistener)

-   prependOnceListener<[K](#prependoncelistenerk)\>(  
        eventName: string | symbol,  
        listener: (...args: any\[\]) \=> void,  
    ): this[](#prependoncelistener-1)
    
    Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this listener is removed, and then invoked.
    
    ```typescript
    server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
    });
    ```
    
    Returns a reference to the `EventEmitter`, so that calls can be chained.
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
        
        The name of the event.
        
    -   listener: (...args: any\[\]) \=> void
        
        The callback function
        
    
    #### Returns this
    
    #### Since[](#since-14)
    
    v6.0.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[prependOnceListener](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#prependoncelistener)
    

### prerender[](#prerender)

-   prerender(  
        \_gl: WebGLRenderingContext | WebGL2RenderingContext,  
        options: CustomRenderMethodInput,  
    ): void[](#prerender-1)
    
    `CustomLayerInterface` method This is used to apply the map matrix to the local camera
    
    #### Parameters
    
    -   \_gl: WebGLRenderingContext | WebGL2RenderingContext
    -   options: CustomRenderMethodInput
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[prerender](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#prerender)
    

### `Protected`prerenderInternal[](#prerenderinternal)

-   prerenderInternal(): void[](#prerenderinternal-1)
    
    The reason for this method is to allow child classes to do some work during the prerender phase
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[prerenderInternal](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#prerenderinternal)
    

### rawListeners[](#rawlisteners)

-   rawListeners<[K](#rawlistenersk)\>(eventName: string | symbol): Function\[\][](#rawlisteners-1)
    
    Returns a copy of the array of listeners for the event named `eventName`, including any wrappers (such as those created by `.once()`).
    
    ```typescript
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));
    
    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];
    
    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();
    
    // Logs "log once" to the console and removes the listener
    logFnWrapper();
    
    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');
    
    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log');
    ```
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
    
    #### Returns Function\[\]
    
    #### Since[](#since-15)
    
    v9.4.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[rawListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#rawlisteners)
    

### `Protected`refresh[](#refresh)

-   refresh(): void[](#refresh-1)
    
    Method which should be override by the child class for additional logic which has to be done:
    
    -   on adding the layer to the map
    -   on mouseEnd event
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[refresh](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#refresh)
    

### `Protected`registerTelemetry[](#registertelemetry)

-   registerTelemetry(map: Map): void[](#registertelemetry-1)
    
    Wrapping telemetry registration with protected method to allow registration of modules which extends this class
    
    #### Parameters
    
    -   map: Map
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[registerTelemetry](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#registertelemetry)
    

### removeAllListeners[](#removealllisteners)

-   removeAllListeners(eventName?: string | symbol): this[](#removealllisteners-1)
    
    Removes all listeners, or those of the specified `eventName`.
    
    It is bad practice to remove listeners added elsewhere in the code, particularly when the `EventEmitter` instance was created by some other component or module (e.g. sockets or file streams).
    
    Returns a reference to the `EventEmitter`, so that calls can be chained.
    
    #### Parameters
    
    -   `Optional`eventName: string | symbol
    
    #### Returns this
    
    #### Since[](#since-16)
    
    v0.1.26
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[removeAllListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#removealllisteners)
    

### `Protected`removeFrame[](#removeframe)

-   removeFrame(time: number): TimeFrame<TileTextureSource\>\[\][](#removeframe-1)
    
    Remove a frame using its time as an ID
    
    #### Parameters
    
    -   time: number
    
    #### Returns TimeFrame<TileTextureSource\>\[\]
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[removeFrame](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#removeframe)
    

### removeListener[](#removelistener)

-   removeListener<[K](#removelistenerk)\>(  
        eventName: string | symbol,  
        listener: (...args: any\[\]) \=> void,  
    ): this[](#removelistener-1)
    
    Removes the specified `listener` from the listener array for the event named `eventName`.
    
    ```typescript
    const callback = (stream) => {
      console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback);
    ```
    
    `removeListener()` will remove, at most, one instance of a listener from the listener array. If any single listener has been added multiple times to the listener array for the specified `eventName`, then `removeListener()` must be called multiple times to remove each instance.
    
    Once an event is emitted, all listeners attached to it at the time of emitting are called in order. This implies that any `removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution will not remove them from`emit()` in progress. Subsequent events behave as expected.
    
    ```typescript
    import { EventEmitter } from 'node:events';
    class MyEmitter extends EventEmitter {}
    const myEmitter = new MyEmitter();
    
    const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
    };
    
    const callbackB = () => {
      console.log('B');
    };
    
    myEmitter.on('event', callbackA);
    
    myEmitter.on('event', callbackB);
    
    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    //   A
    //   B
    
    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    //   A
    ```
    
    Because listeners are managed using an internal array, calling this will change the position indices of any listener registered _after_ the listener being removed. This will not impact the order in which listeners are called, but it means that any copies of the listener array as returned by the `emitter.listeners()` method will need to be recreated.
    
    When a single function has been added as a handler multiple times for a single event (as in the example below), `removeListener()` will remove the most recently added instance. In the example the `once('ping')` listener is removed:
    
    ```typescript
    import { EventEmitter } from 'node:events';
    const ee = new EventEmitter();
    
    function pong() {
      console.log('pong');
    }
    
    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);
    
    ee.emit('ping');
    ee.emit('ping');
    ```
    
    Returns a reference to the `EventEmitter`, so that calls can be chained.
    
    #### Type Parameters
    
    -   K
    
    #### Parameters
    
    -   eventName: string | symbol
    -   listener: (...args: any\[\]) \=> void
    
    #### Returns this
    
    #### Since[](#since-17)
    
    v0.1.26
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[removeListener](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#removelistener)
    

### removeSource[](#removesource)

-   removeSource(time: number): void[](#removesource-1)
    
    Removes frame
    
    #### Parameters
    
    -   time: number
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[removeSource](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#removesource)
    

### render[](#render)

-   render(  
        \_gl: WebGLRenderingContext | WebGL2RenderingContext,  
        \_options: CustomRenderMethodInput,  
    ): void[](#render-1)
    
    `CustomLayerInterface` method It is used to render the local tiles into the MapTiler SDK context
    
    #### Parameters
    
    -   \_gl: WebGLRenderingContext | WebGL2RenderingContext
    -   \_options: CustomRenderMethodInput
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[render](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#render)
    

### `Protected`renderInternal[](#renderinternal)

-   renderInternal(): void[](#renderinternal-1)
    
    The reason for this method is to allow child classes to do some work during the render phase (after renderer state reset and before the actual rendering)
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[renderInternal](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#renderinternal)
    

### setAnimationTime[](#setanimationtime)

-   setAnimationTime(time: number): void[](#setanimationtime-1)
    
    Change the visualization to a specific time. Does not stop animation.
    
    #### Parameters
    
    -   time: number
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setAnimationTime](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setanimationtime)
    

### setCategorySmoothTransition[](#setcategorysmoothtransition)

-   setCategorySmoothTransition(cst: boolean): void[](#setcategorysmoothtransition-1)
    
    Enable smoothing category color when true. Hard edge between categories when false. This seeting applies only to TileLayers using MultiChannelGradientColoringFragment as the other types of oloring fragment do not use categories.
    
    #### Parameters
    
    -   cst: boolean
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setCategorySmoothTransition](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setcategorysmoothtransition)
    

### setLocalSmoothing[](#setlocalsmoothing)

-   setLocalSmoothing(s: boolean): void[](#setlocalsmoothing-1)
    
    If `true`, enables the local smoothing
    
    #### Parameters
    
    -   s: boolean
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setLocalSmoothing](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setlocalsmoothing)
    

### setMaxListeners[](#setmaxlisteners)

-   setMaxListeners(n: number): this[](#setmaxlisteners-1)
    
    By default `EventEmitter`s will print a warning if more than `10` listeners are added for a particular event. This is a useful default that helps finding memory leaks. The `emitter.setMaxListeners()` method allows the limit to be modified for this specific `EventEmitter` instance. The value can be set to `Infinity` (or `0`) to indicate an unlimited number of listeners.
    
    Returns a reference to the `EventEmitter`, so that calls can be chained.
    
    #### Parameters
    
    -   n: number
    
    #### Returns this
    
    #### Since[](#since-18)
    
    v0.3.5
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setMaxListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setmaxlisteners)
    

### setMaxSmoothingDistance[](#setmaxsmoothingdistance)

-   setMaxSmoothingDistance(d: number): void[](#setmaxsmoothingdistance-1)
    
    Defines the size of the smoothing kernel
    
    #### Parameters
    
    -   d: number
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setMaxSmoothingDistance](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setmaxsmoothingdistance)
    

### setOpacity[](#setopacity)

-   setOpacity(opacity: number): void[](#setopacity-1)
    
    Changes the global opacity of the layer. Default is `1`
    
    #### Parameters
    
    -   opacity: number
        
        Opacity 0-1.
        
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setOpacity](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setopacity)
    

### setRepaintOnPausedAnimation[](#setrepaintonpausedanimation)

-   setRepaintOnPausedAnimation(r: boolean): void[](#setrepaintonpausedanimation-1)
    
    If `true`, even the paused animation is rendered up to 60 times per seconds. If `false`, the rendering is paused when the animation is paused. Pausing the animation has side effects:
    
    -   it lowers energy consumtion
    -   it prevents overheating
    -   it pauses time-independant annimation (arrows, particles)
    
    #### Parameters
    
    -   r: boolean
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setRepaintOnPausedAnimation](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setrepaintonpausedanimation)
    

### setSmoothingDistanceDecayFactor[](#setsmoothingdistancedecayfactor)

-   setSmoothingDistanceDecayFactor(f: number): void[](#setsmoothingdistancedecayfactor-1)
    
    Defines by what factor the smoothing kernel size is reduced with increasing zoom level
    
    #### Parameters
    
    -   f: number
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setSmoothingDistanceDecayFactor](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setsmoothingdistancedecayfactor)
    

### setTimeInterpolation[](#settimeinterpolation)

-   setTimeInterpolation(ti: boolean): void[](#settimeinterpolation-1)
    
    Enables data interpolation between keyframes when true. Only shows keyframe data when false.
    
    #### Parameters
    
    -   ti: boolean
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setTimeInterpolation](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#settimeinterpolation)
    

### `Protected`updateSlippyTiles[](#updateslippytiles)

-   updateSlippyTiles(): void[](#updateslippytiles-1)
    
    WARNING: Mercator projection only
    
    Update the tile's mesh position and size, as well each tile material uniforms (time, texture, etc.)
    
    #### Returns void
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[updateSlippyTiles](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#updateslippytiles)
    

### `Static`addAbortListener[](#addabortlistener)

-   addAbortListener(  
        signal: AbortSignal,  
        resource: (event: Event) \=> void,  
    ): Disposable[](#addabortlistener-1)
    
    Listens once to the `abort` event on the provided `signal`.
    
    Listening to the `abort` event on abort signals is unsafe and may lead to resource leaks since another third party with the signal can call `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change this since it would violate the web standard. Additionally, the original API makes it easy to forget to remove listeners.
    
    This API allows safely using `AbortSignal`s in Node.js APIs by solving these two issues by listening to the event such that `stopImmediatePropagation` does not prevent the listener from running.
    
    Returns a disposable so that it may be unsubscribed from more easily.
    
    ```typescript
    import { addAbortListener } from 'node:events';
    
    function example(signal) {
      let disposable;
      try {
        signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
        disposable = addAbortListener(signal, (e) => {
          // Do something when signal is aborted.
        });
      } finally {
        disposable?.[Symbol.dispose]();
      }
    }
    ```
    
    #### Parameters
    
    -   signal: AbortSignal
    -   resource: (event: Event) \=> void
    
    #### Returns Disposable
    
    Disposable that removes the `abort` listener.
    
    #### Since[](#since-19)
    
    v20.5.0
    
    #### Experimental[](#experimental)
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[addAbortListener](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#addabortlistener)
    

### `Static`getEventListeners[](#geteventlisteners)

-   getEventListeners(  
        emitter: EventEmitter<DefaultEventMap\> | EventTarget,  
        name: string | symbol,  
    ): Function\[\][](#geteventlisteners-1)
    
    Returns a copy of the array of listeners for the event named `eventName`.
    
    For `EventEmitter`s this behaves exactly the same as calling `.listeners` on the emitter.
    
    For `EventTarget`s this is the only way to get the event listeners for the event target. This is useful for debugging and diagnostic purposes.
    
    ```typescript
    import { getEventListeners, EventEmitter } from 'node:events';
    
    {
      const ee = new EventEmitter();
      const listener = () => console.log('Events are fun');
      ee.on('foo', listener);
      console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
    }
    {
      const et = new EventTarget();
      const listener = () => console.log('Events are fun');
      et.addEventListener('foo', listener);
      console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
    }
    ```
    
    #### Parameters
    
    -   emitter: EventEmitter<DefaultEventMap\> | EventTarget
    -   name: string | symbol
    
    #### Returns Function\[\]
    
    #### Since[](#since-20)
    
    v15.2.0, v14.17.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getEventListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#geteventlisteners)
    

### `Static`getMaxListeners[](#getmaxlisteners-2)

-   getMaxListeners(emitter: EventEmitter<DefaultEventMap\> | EventTarget): number[](#getmaxlisteners-3)
    
    Returns the currently set max amount of listeners.
    
    For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on the emitter.
    
    For `EventTarget`s this is the only way to get the max event listeners for the event target. If the number of event handlers on a single EventTarget exceeds the max set, the EventTarget will print a warning.
    
    ```typescript
    import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';
    
    {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
    }
    {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
    }
    ```
    
    #### Parameters
    
    -   emitter: EventEmitter<DefaultEventMap\> | EventTarget
    
    #### Returns number
    
    #### Since[](#since-21)
    
    v19.9.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[getMaxListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#getmaxlisteners-2)
    

### `Static`listenerCount[](#listenercount-2)

-   listenerCount(emitter: EventEmitter, eventName: string | symbol): number[](#listenercount-3)
    
    A class method that returns the number of listeners for the given `eventName` registered on the given `emitter`.
    
    ```typescript
    import { EventEmitter, listenerCount } from 'node:events';
    
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2
    ```
    
    #### Parameters
    
    -   emitter: EventEmitter
        
        The emitter to query
        
    -   eventName: string | symbol
        
        The event name
        
    
    #### Returns number
    
    #### Since[](#since-22)
    
    v0.9.12
    
    #### Deprecated[](#deprecated)
    
    Since v3.2.0 - Use `listenerCount` instead.
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[listenerCount](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#listenercount-2)
    

### `Static`on[](#on-2)

-   on(  
        emitter: EventEmitter,  
        eventName: string | symbol,  
        options?: StaticEventEmitterIteratorOptions,  
    ): AsyncIterator<any\[\]\>[](#on-3)
    
    ```typescript
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';
    
    const ee = new EventEmitter();
    
    // Emit later on
    process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
    });
    
    for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    ```
    
    Returns an `AsyncIterator` that iterates `eventName` events. It will throw if the `EventEmitter` emits `'error'`. It removes all listeners when exiting the loop. The `value` returned by each iteration is an array composed of the emitted event arguments.
    
    An `AbortSignal` can be used to cancel waiting on events:
    
    ```typescript
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';
    
    const ac = new AbortController();
    
    (async () => {
      const ee = new EventEmitter();
    
      // Emit later on
      process.nextTick(() => {
        ee.emit('foo', 'bar');
        ee.emit('foo', 42);
      });
    
      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
        // The execution of this inner block is synchronous and it
        // processes one event at a time (even with await). Do not use
        // if concurrent execution is required.
        console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
    })();
    
    process.nextTick(() => ac.abort());
    ```
    
    Use the `close` option to specify an array of event names that will end the iteration:
    
    ```typescript
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';
    
    const ee = new EventEmitter();
    
    // Emit later on
    process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      ee.emit('close');
    });
    
    for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
    }
    // the loop will exit after 'close' is emitted
    console.log('done'); // prints 'done'
    ```
    
    #### Parameters
    
    -   emitter: EventEmitter
    -   eventName: string | symbol
    -   `Optional`options: StaticEventEmitterIteratorOptions
    
    #### Returns AsyncIterator<any\[\]\>
    
    An `AsyncIterator` that iterates `eventName` events emitted by the `emitter`
    
    #### Since[](#since-23)
    
    v13.6.0, v12.16.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[on](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#on-2)
    
-   on(  
        emitter: EventTarget,  
        eventName: string,  
        options?: StaticEventEmitterIteratorOptions,  
    ): AsyncIterator<any\[\]\>[](#on-4)
    
    ```typescript
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';
    
    const ee = new EventEmitter();
    
    // Emit later on
    process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
    });
    
    for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    ```
    
    Returns an `AsyncIterator` that iterates `eventName` events. It will throw if the `EventEmitter` emits `'error'`. It removes all listeners when exiting the loop. The `value` returned by each iteration is an array composed of the emitted event arguments.
    
    An `AbortSignal` can be used to cancel waiting on events:
    
    ```typescript
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';
    
    const ac = new AbortController();
    
    (async () => {
      const ee = new EventEmitter();
    
      // Emit later on
      process.nextTick(() => {
        ee.emit('foo', 'bar');
        ee.emit('foo', 42);
      });
    
      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
        // The execution of this inner block is synchronous and it
        // processes one event at a time (even with await). Do not use
        // if concurrent execution is required.
        console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
    })();
    
    process.nextTick(() => ac.abort());
    ```
    
    Use the `close` option to specify an array of event names that will end the iteration:
    
    ```typescript
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';
    
    const ee = new EventEmitter();
    
    // Emit later on
    process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      ee.emit('close');
    });
    
    for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
    }
    // the loop will exit after 'close' is emitted
    console.log('done'); // prints 'done'
    ```
    
    #### Parameters
    
    -   emitter: EventTarget
    -   eventName: string
    -   `Optional`options: StaticEventEmitterIteratorOptions
    
    #### Returns AsyncIterator<any\[\]\>
    
    An `AsyncIterator` that iterates `eventName` events emitted by the `emitter`
    
    #### Since[](#since-24)
    
    v13.6.0, v12.16.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[on](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#on-2)
    

### `Static`once[](#once-2)

-   once(  
        emitter: EventEmitter,  
        eventName: string | symbol,  
        options?: StaticEventEmitterOptions,  
    ): Promise<any\[\]\>[](#once-3)
    
    Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given event or that is rejected if the `EventEmitter` emits `'error'` while waiting. The `Promise` will resolve with an array of all the arguments emitted to the given event.
    
    This method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event semantics and does not listen to the `'error'` event.
    
    ```typescript
    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';
    
    const ee = new EventEmitter();
    
    process.nextTick(() => {
      ee.emit('myevent', 42);
    });
    
    const [value] = await once(ee, 'myevent');
    console.log(value);
    
    const err = new Error('kaboom');
    process.nextTick(() => {
      ee.emit('error', err);
    });
    
    try {
      await once(ee, 'myevent');
    } catch (err) {
      console.error('error happened', err);
    }
    ```
    
    The special handling of the `'error'` event is only used when `events.once()` is used to wait for another event. If `events.once()` is used to wait for the '`error'` event itself, then it is treated as any other kind of event without special handling:
    
    ```typescript
    import { EventEmitter, once } from 'node:events';
    
    const ee = new EventEmitter();
    
    once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.error('error', err.message));
    
    ee.emit('error', new Error('boom'));
    
    // Prints: ok boom
    ```
    
    An `AbortSignal` can be used to cancel waiting for the event:
    
    ```typescript
    import { EventEmitter, once } from 'node:events';
    
    const ee = new EventEmitter();
    const ac = new AbortController();
    
    async function foo(emitter, event, signal) {
      try {
        await once(emitter, event, { signal });
        console.log('event emitted!');
      } catch (error) {
        if (error.name === 'AbortError') {
          console.error('Waiting for the event was canceled!');
        } else {
          console.error('There was an error', error.message);
        }
      }
    }
    
    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled!
    ```
    
    #### Parameters
    
    -   emitter: EventEmitter
    -   eventName: string | symbol
    -   `Optional`options: StaticEventEmitterOptions
    
    #### Returns Promise<any\[\]\>
    
    #### Since[](#since-25)
    
    v11.13.0, v10.16.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[once](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#once-2)
    
-   once(  
        emitter: EventTarget,  
        eventName: string,  
        options?: StaticEventEmitterOptions,  
    ): Promise<any\[\]\>[](#once-4)
    
    Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given event or that is rejected if the `EventEmitter` emits `'error'` while waiting. The `Promise` will resolve with an array of all the arguments emitted to the given event.
    
    This method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event semantics and does not listen to the `'error'` event.
    
    ```typescript
    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';
    
    const ee = new EventEmitter();
    
    process.nextTick(() => {
      ee.emit('myevent', 42);
    });
    
    const [value] = await once(ee, 'myevent');
    console.log(value);
    
    const err = new Error('kaboom');
    process.nextTick(() => {
      ee.emit('error', err);
    });
    
    try {
      await once(ee, 'myevent');
    } catch (err) {
      console.error('error happened', err);
    }
    ```
    
    The special handling of the `'error'` event is only used when `events.once()` is used to wait for another event. If `events.once()` is used to wait for the '`error'` event itself, then it is treated as any other kind of event without special handling:
    
    ```typescript
    import { EventEmitter, once } from 'node:events';
    
    const ee = new EventEmitter();
    
    once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.error('error', err.message));
    
    ee.emit('error', new Error('boom'));
    
    // Prints: ok boom
    ```
    
    An `AbortSignal` can be used to cancel waiting for the event:
    
    ```typescript
    import { EventEmitter, once } from 'node:events';
    
    const ee = new EventEmitter();
    const ac = new AbortController();
    
    async function foo(emitter, event, signal) {
      try {
        await once(emitter, event, { signal });
        console.log('event emitted!');
      } catch (error) {
        if (error.name === 'AbortError') {
          console.error('Waiting for the event was canceled!');
        } else {
          console.error('There was an error', error.message);
        }
      }
    }
    
    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled!
    ```
    
    #### Parameters
    
    -   emitter: EventTarget
    -   eventName: string
    -   `Optional`options: StaticEventEmitterOptions
    
    #### Returns Promise<any\[\]\>
    
    #### Since[](#since-26)
    
    v11.13.0, v10.16.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[once](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#once-2)
    

### `Static`setMaxListeners[](#setmaxlisteners-2)

-   setMaxListeners(  
        n?: number,  
        ...eventTargets: (EventEmitter<DefaultEventMap\> | EventTarget)\[\],  
    ): void[](#setmaxlisteners-3)
    
    ```typescript
    import { setMaxListeners, EventEmitter } from 'node:events';
    
    const target = new EventTarget();
    const emitter = new EventEmitter();
    
    setMaxListeners(5, target, emitter);
    ```
    
    #### Parameters
    
    -   `Optional`n: number
        
        A non-negative number. The maximum number of listeners per `EventTarget` event.
        
    -   ...eventTargets: (EventEmitter<DefaultEventMap\> | EventTarget)\[\]
        
        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, `n` is set as the default max for all newly created {EventTarget} and {EventEmitter} objects.
        
    
    #### Returns void
    
    #### Since[](#since-27)
    
    v15.4.0
    
    Inherited from [TileLayer](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/).[setMaxListeners](https://docs.maptiler.com/sdk-js/modules/weather/api-reference/classes/TileLayer/#setmaxlisteners-2)
