---
title: "ProgramConfiguration | JavaScript maps SDK"
description: "Documentation for MapTiler SDK"
---

> For AI agents: a documentation index is available at [/llms.txt](https://docs.maptiler.com/llms.txt). Markdown versions of all pages are available by appending .md to any URL.

# Class ProgramConfiguration

##### Index

### Constructors[](#constructors)

[constructor](#constructor)

### Properties[](#properties)

[binders](#binders) [cacheKey](#cachekey)

### Methods[](#methods)

[defines](#defines) [destroy](#destroy) [getBinderAttributes](#getbinderattributes) [getBinderUniforms](#getbinderuniforms) [getMaxValue](#getmaxvalue) [getPaintVertexBuffers](#getpaintvertexbuffers) [getUniforms](#getuniforms) [populatePaintArrays](#populatepaintarrays) [setConstantDashPositions](#setconstantdashpositions) [setConstantPatternPositions](#setconstantpatternpositions) [setUniforms](#setuniforms) [updatePaintArrays](#updatepaintarrays) [updatePaintBuffers](#updatepaintbuffers) [upload](#upload)

## Constructors[](#constructors-1)

### constructor[](#constructor)

-   new ProgramConfiguration(  
        layer: [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/),  
        zoom: number,  
        filterProperties: (\_: string) \=> boolean,  
    ): ProgramConfiguration[](#constructorprogramconfiguration)
    
    #### Parameters
    
    -   layer: [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/)
    -   zoom: number
    -   filterProperties: (\_: string) \=> boolean
    
    #### Returns ProgramConfiguration
    

## Properties[](#properties-1)

### binders[](#binders)

binders: { \[\_: string\]: [AttributeBinder](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.AttributeBinder/) | [UniformBinder](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.UniformBinder/) }

### cacheKey[](#cachekey)

cacheKey: string

## Methods[](#methods-1)

### defines[](#defines)

-   defines(): string\[\][](#defines-1)
    
    #### Returns string\[\]
    

### destroy[](#destroy)

-   destroy(): void[](#destroy-1)
    
    #### Returns void
    

### getBinderAttributes[](#getbinderattributes)

-   getBinderAttributes(): string\[\][](#getbinderattributes-1)
    
    #### Returns string\[\]
    

### getBinderUniforms[](#getbinderuniforms)

-   getBinderUniforms(): string\[\][](#getbinderuniforms-1)
    
    #### Returns string\[\]
    

### getMaxValue[](#getmaxvalue)

-   getMaxValue(property: string): number[](#getmaxvalue-1)
    
    #### Parameters
    
    -   property: string
    
    #### Returns number
    

### getPaintVertexBuffers[](#getpaintvertexbuffers)

-   getPaintVertexBuffers(): [VertexBuffer](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.VertexBuffer/)\[\][](#getpaintvertexbuffers-1)
    
    #### Returns [VertexBuffer](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.VertexBuffer/)\[\]
    

### getUniforms[](#getuniforms)

-   getUniforms(context: [Context](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.Context/), locations: [UniformLocations](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.UniformLocations/)): [BinderUniform](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.BinderUniform/)\[\][](#getuniforms-1)
    
    #### Parameters
    
    -   context: [Context](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.Context/)
    -   locations: [UniformLocations](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.UniformLocations/)
    
    #### Returns [BinderUniform](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.BinderUniform/)\[\]
    

### populatePaintArrays[](#populatepaintarrays)

-   populatePaintArrays(  
        newLength: number,  
        feature: [Feature](https://docs.maptiler.com/sdk-js/api-reference/types/Feature/),  
        options: [PaintOptions](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.PaintOptions/),  
    ): void[](#populatepaintarrays-1)
    
    #### Parameters
    
    -   newLength: number
    -   feature: [Feature](https://docs.maptiler.com/sdk-js/api-reference/types/Feature/)
    -   options: [PaintOptions](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.PaintOptions/)
    
    #### Returns void
    

### setConstantDashPositions[](#setconstantdashpositions)

-   setConstantDashPositions(dashTo: [DashEntry](https://docs.maptiler.com/sdk-js/api-reference/types/DashEntry/), dashFrom: [DashEntry](https://docs.maptiler.com/sdk-js/api-reference/types/DashEntry/)): void[](#setconstantdashpositions-1)
    
    #### Parameters
    
    -   dashTo: [DashEntry](https://docs.maptiler.com/sdk-js/api-reference/types/DashEntry/)
    -   dashFrom: [DashEntry](https://docs.maptiler.com/sdk-js/api-reference/types/DashEntry/)
    
    #### Returns void
    

### setConstantPatternPositions[](#setconstantpatternpositions)

-   setConstantPatternPositions(posTo: [ImagePosition](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.ImagePosition/), posFrom: [ImagePosition](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.ImagePosition/)): void[](#setconstantpatternpositions-1)
    
    #### Parameters
    
    -   posTo: [ImagePosition](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.ImagePosition/)
    -   posFrom: [ImagePosition](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.ImagePosition/)
    
    #### Returns void
    

### setUniforms[](#setuniforms)

-   setUniforms(  
        context: [Context](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.Context/),  
        binderUniforms: [BinderUniform](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.BinderUniform/)\[\],  
        properties: any,  
        globals: [GlobalProperties](https://docs.maptiler.com/sdk-js/api-reference/types/GlobalProperties/),  
    ): void[](#setuniforms-1)
    
    #### Parameters
    
    -   context: [Context](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.Context/)
    -   binderUniforms: [BinderUniform](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.BinderUniform/)\[\]
    -   properties: any
    -   globals: [GlobalProperties](https://docs.maptiler.com/sdk-js/api-reference/types/GlobalProperties/)
    
    #### Returns void
    

### updatePaintArrays[](#updatepaintarrays)

-   updatePaintArrays(  
        featureStates: [FeatureStates](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.FeatureStates/),  
        featureMap: [FeaturePositionMap](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.FeaturePositionMap/),  
        vtLayer: [VectorTileLayerLike](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.VectorTileLayerLike/),  
        layer: [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/),  
        options: [PaintOptions](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.PaintOptions/),  
    ): boolean[](#updatepaintarrays-1)
    
    #### Parameters
    
    -   featureStates: [FeatureStates](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.FeatureStates/)
    -   featureMap: [FeaturePositionMap](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.FeaturePositionMap/)
    -   vtLayer: [VectorTileLayerLike](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.VectorTileLayerLike/)
    -   layer: [TypedStyleLayer](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.TypedStyleLayer/)
    -   options: [PaintOptions](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.PaintOptions/)
    
    #### Returns boolean
    

### updatePaintBuffers[](#updatepaintbuffers)

-   updatePaintBuffers(crossfade?: [CrossfadeParameters](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.CrossfadeParameters/)): void[](#updatepaintbuffers-1)
    
    #### Parameters
    
    -   `Optional`crossfade: [CrossfadeParameters](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.CrossfadeParameters/)
    
    #### Returns void
    

### upload[](#upload)

-   upload(context: [Context](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.Context/)): void[](#upload-1)
    
    #### Parameters
    
    -   context: [Context](https://docs.maptiler.com/sdk-js/api-reference/classes/Externals.Context/)
    
    #### Returns void
