UNPKG

mapbox-gl

Version:
1,474 lines (1,473 loc) 790 kB
import Point from '@mapbox/point-geometry'; import TinySDF from '@mapbox/tiny-sdf'; import { VectorTile, VectorTileFeature, VectorTileLayer } from '@mapbox/vector-tile'; import { mat2, mat4, quat, vec2, vec3, vec4 } from 'gl-matrix'; import KDBush from 'kdbush'; import Pbf from 'pbf'; import { PotpackBox } from 'potpack'; type Callback<T> = (error?: Error | null, result?: T | null) => void; type Cancelable = { cancel: () => void; }; declare const ResourceType: { readonly Unknown: "Unknown"; readonly Style: "Style"; readonly Source: "Source"; readonly Tile: "Tile"; readonly Glyphs: "Glyphs"; readonly SpriteImage: "SpriteImage"; readonly SpriteJSON: "SpriteJSON"; readonly Iconset: "Iconset"; readonly Image: "Image"; readonly Model: "Model"; }; /** * A `RequestParameters` object to be returned from Map.options.transformRequest callbacks. * @typedef {Object} RequestParameters * @property {string} url The URL to be requested. * @property {Object} headers The headers to be sent with the request. * @property {string} method Request method `'GET' | 'POST' | 'PUT'`. * @property {string} body Request body. * @property {string} type Response body type to be returned `'string' | 'json' | 'arrayBuffer'`. * @property {string} credentials `'same-origin'|'include'` Use 'include' to send cookies with cross-origin requests. * @property {boolean} collectResourceTiming If true, Resource Timing API information will be collected for these transformed requests and returned in a resourceTiming property of relevant data events. * @property {string} referrerPolicy A string representing the request's referrerPolicy. For more information and possible values, see the [Referrer-Policy HTTP header page](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy). * @example * // use transformRequest to modify requests that begin with `http://myHost` * const map = new Map({ * container: 'map', * style: 'mapbox://styles/mapbox/streets-v11', * transformRequest: (url, resourceType) => { * if (resourceType === 'Source' && url.indexOf('http://myHost') > -1) { * return { * url: url.replace('http', 'https'), * headers: {'my-custom-header': true}, * credentials: 'include' // Include cookies for cross-origin requests * }; * } * } * }); * */ export type RequestParameters = { url: string; headers?: Record<string, string>; method?: "GET" | "POST" | "PUT"; body?: string; type?: "string" | "json" | "arrayBuffer"; credentials?: "same-origin" | "include"; collectResourceTiming?: boolean; referrerPolicy?: ReferrerPolicy; }; type ResponseCallback<T> = (error?: Error | DOMException | AJAXError | null, data?: T | null, cacheControl?: string | null, expires?: string | null) => void; declare class AJAXError extends Error { status: number; url: string; constructor(message: string, status: number, url: string); toString(): string; } declare class CanonicalTileID { z: number; x: number; y: number; key: number; constructor(z: number, x: number, y: number); equals(id: CanonicalTileID): boolean; url(urls: Array<string>, scheme?: string | null): string; toString(): string; } declare class UnwrappedTileID { wrap: number; canonical: CanonicalTileID; key: number; constructor(wrap: number, canonical: CanonicalTileID); } declare class OverscaledTileID { overscaledZ: number; wrap: number; canonical: CanonicalTileID; key: number; projMatrix: mat4; expandedProjMatrix: mat4; visibleQuadrants?: number; constructor(overscaledZ: number, wrap: number, z: number, x: number, y: number); equals(id: OverscaledTileID): boolean; scaledTo(targetZ: number): OverscaledTileID; calculateScaledKey(targetZ: number, withWrap?: boolean): number; isChildOf(parent: OverscaledTileID): boolean; children(sourceMaxZoom: number): Array<OverscaledTileID>; isLessThan(rhs: OverscaledTileID): boolean; wrapped(): OverscaledTileID; unwrapTo(wrap: number): OverscaledTileID; overscaleFactor(): number; toUnwrapped(): UnwrappedTileID; toString(): string; } type LUT = { image: { width: number; height: number; data: Uint8Array; }; }; declare class Color { r: number; g: number; b: number; a: number; constructor(r: number, g: number, b: number, a?: number); static black: Color; static white: Color; static transparent: Color; static red: Color; static blue: Color; /** * Parses valid CSS color strings and returns a `Color` instance. * @returns A `Color` instance, or `undefined` if the input is not a valid color string. */ static parse(input?: string | Color | null): Color | undefined; /** * Returns an RGBA string representing the color value. * * @returns An RGBA string. * @example * var purple = new Color.parse('purple'); * purple.toString; // = "rgba(128,0,128,1)" * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)'); * translucentGreen.toString(); // = "rgba(26,207,26,0.73)" */ toString(): string; toNonPremultipliedRenderColor(lut: LUT | null): NonPremultipliedRenderColor; toPremultipliedRenderColor(lut: LUT | null): NonPremultipliedRenderColor; clone(): Color; } declare abstract class RenderColor { premultiplied: boolean; r: number; g: number; b: number; a: number; constructor(lut: LUT | null, r: number, g: number, b: number, a: number, premultiplied?: boolean); /** * Returns an RGBA array of values representing the color. * @returns An array of RGBA color values in the range [0, 255]. */ toArray(): [ number, number, number, number ]; /** * Returns an HSLA array of values representing the color, unpremultiplied by A. * @returns An array of HSLA color values. */ toHslaArray(): [ number, number, number, number ]; /** * Returns a RGBA array of float values representing the color. * * @returns An array of RGBA color values in the range [0, 1]. */ toArray01(): [ number, number, number, number ]; /** * Returns an RGB array of values representing the color, unpremultiplied by A and multiplied by a scalar. * * @param {number} scale A scale to apply to the unpremultiplied-alpha values. * @returns An array of RGB color values in the range [0, 1]. */ toArray01Scaled(scale: number): [ number, number, number ]; /** * Returns an RGBA array of values representing the color converted to linear color space. * The color is defined by sRGB primaries, but the sRGB transfer function * is reversed to obtain linear energy. * @returns An array of RGBA color values in the range [0, 1]. */ toArray01Linear(): [ number, number, number, number ]; } declare class NonPremultipliedRenderColor extends RenderColor { constructor(lut: LUT | null, r: number, g: number, b: number, a: number); } declare class PremultipliedRenderColor extends RenderColor { constructor(lut: LUT | null, r: number, g: number, b: number, a: number); } declare class Collator { locale: string | null; sensitivity: "base" | "accent" | "case" | "variant"; collator: Intl.Collator; constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null); compare(lhs: string, rhs: string): number; resolvedLocale(): string; } type Brand<T, U> = T & { __brand: U; }; type ImageIdSpec = { name: string; iconsetId?: string; }; type StringifiedImageId = Brand<string, "ImageId">; declare class ImageId { name: string; iconsetId?: string; constructor(id: string | ImageId | ImageIdSpec); static from(id: string | ImageId | ImageIdSpec): ImageId; static toString(id: ImageId | ImageIdSpec): StringifiedImageId; static parse(str: StringifiedImageId): ImageId | null; static isEqual(a: ImageId | ImageIdSpec, b: ImageId | ImageIdSpec): boolean; toString(): StringifiedImageId; serialize(): ImageIdSpec; } type StringifiedImageVariant = Brand<string, "ImageVariant">; type RasterizationOptions = { params?: Record<string, Color>; transform?: DOMMatrix; }; declare class ImageVariant { id: ImageId; options: RasterizationOptions; constructor(id: string | ImageIdSpec, options?: RasterizationOptions); toString(): StringifiedImageVariant; static parse(str: StringifiedImageVariant): ImageVariant | null; scaleSelf(factor: number, yFactor?: number): this; } declare class ResolvedImage { primaryId: ImageId; primaryOptions?: RasterizationOptions; secondaryId?: ImageId; secondaryOptions?: RasterizationOptions; available: boolean; constructor(primaryId: string | ImageIdSpec, primaryOptions?: RasterizationOptions, secondaryId?: string | ImageIdSpec, secondaryOptions?: RasterizationOptions, available?: boolean); toString(): string; hasPrimary(): boolean; getPrimary(): ImageVariant; hasSecondary(): boolean; getSecondary(): ImageVariant | null; static from(image: string | ResolvedImage): ResolvedImage; static build(primaryId: string | ImageIdSpec, secondaryId?: string | ImageIdSpec, primaryOptions?: RasterizationOptions, secondaryOptions?: RasterizationOptions): ResolvedImage | null; } declare class FormattedSection { text: string; image: ResolvedImage | null; scale: number | null; fontStack: string | null; textColor: Color | null; constructor(text: string, image: ResolvedImage | null, scale: number | null, fontStack: string | null, textColor: Color | null); } declare class Formatted { sections: Array<FormattedSection>; constructor(sections: Array<FormattedSection>); static fromString(unformatted: string): Formatted; isEmpty(): boolean; static factory(text: Formatted | string): Formatted; toString(): string; serialize(): Array<unknown>; } type NullTypeT = { kind: "null"; }; type NumberTypeT = { kind: "number"; }; type StringTypeT = { kind: "string"; }; type BooleanTypeT = { kind: "boolean"; }; type ColorTypeT = { kind: "color"; }; type ObjectTypeT = { kind: "object"; }; type ValueTypeT = { kind: "value"; }; type ErrorTypeT = { kind: "error"; }; type CollatorTypeT = { kind: "collator"; }; type FormattedTypeT = { kind: "formatted"; }; type ResolvedImageTypeT = { kind: "resolvedImage"; }; type Type = NullTypeT | NumberTypeT | StringTypeT | BooleanTypeT | ColorTypeT | ObjectTypeT | ValueTypeT | ArrayType | ErrorTypeT | CollatorTypeT | FormattedTypeT | ResolvedImageTypeT; type ArrayType = { kind: "array"; itemType: Type; N: number | null | undefined; }; type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | ReadonlyArray<Value> | { readonly [key: string]: Value; }; type CanonicalTileID$1 = { z: number; x: number; y: number; }; type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? { [K in keyof I]: I[K]; } : never; export type ColorSpecification = string; export type FormattedSpecification = string; export type ResolvedImageSpecification = string; export type PromoteIdSpecification = { [_: string]: string | ExpressionSpecification; } | string | ExpressionSpecification; export type FilterSpecification = ExpressionSpecification | [ "has", string ] | [ "!has", string ] | [ "==", string, string | number | boolean ] | [ "!=", string, string | number | boolean ] | [ ">", string, string | number | boolean ] | [ ">=", string, string | number | boolean ] | [ "<", string, string | number | boolean ] | [ "<=", string, string | number | boolean ] | Array<string | FilterSpecification>; export type TransitionSpecification = { duration?: number; delay?: number; }; export type PropertyFunctionStop<T> = [ number, T ]; export type ZoomAndPropertyFunctionStop<T> = [ { zoom: number; value: string | number | boolean; }, T ]; /** * @deprecated Use [Expressions](https://docs.mapbox.com/style-spec/reference/expressions/) syntax instead. */ export type FunctionSpecification<T> = { stops: Array<PropertyFunctionStop<T> | ZoomAndPropertyFunctionStop<T>>; base?: number; property?: string; type?: "identity" | "exponential" | "interval" | "categorical"; colorSpace?: "rgb" | "lab" | "hcl"; default?: T; }; export type CameraFunctionSpecification<T> = { type: "exponential"; stops: Array<[ number, T ]>; } | { type: "interval"; stops: Array<[ number, T ]>; }; export type SourceFunctionSpecification<T> = { type: "exponential"; stops: Array<[ number, T ]>; property: string; default?: T; } | { type: "interval"; stops: Array<[ number, T ]>; property: string; default?: T; } | { type: "categorical"; stops: Array<[ string | number | boolean, T ]>; property: string; default?: T; } | { type: "identity"; property: string; default?: T; }; export type CompositeFunctionSpecification<T> = { type: "exponential"; stops: Array<[ { zoom: number; value: number; }, T ]>; property: string; default?: T; } | { type: "interval"; stops: Array<[ { zoom: number; value: number; }, T ]>; property: string; default?: T; } | { type: "categorical"; stops: Array<[ { zoom: number; value: string | number | boolean; }, T ]>; property: string; default?: T; }; export type ExpressionSpecification = [ string, ...any[] ]; export type PropertyValueSpecification<T> = T | CameraFunctionSpecification<T> | ExpressionSpecification; export type DataDrivenPropertyValueSpecification<T> = T | FunctionSpecification<T> | CameraFunctionSpecification<T> | SourceFunctionSpecification<T> | CompositeFunctionSpecification<T> | ExpressionSpecification | (T extends Array<infer U> ? Array<U | ExpressionSpecification> : never); export type StyleSpecification = { "version": 8; "fragment"?: boolean; "name"?: string; "metadata"?: unknown; "center"?: Array<number>; "zoom"?: number; "bearing"?: number; "pitch"?: number; "light"?: LightSpecification; "lights"?: Array<LightsSpecification>; "terrain"?: TerrainSpecification | null | undefined; "fog"?: FogSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "snow"?: SnowSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "rain"?: RainSpecification; "camera"?: CameraSpecification; "color-theme"?: ColorThemeSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "indoor"?: IndoorSpecification; "imports"?: Array<ImportSpecification>; /** * @experimental This property is experimental and subject to change in future versions. */ "iconsets"?: IconsetsSpecification; "schema"?: SchemaSpecification; "sources": SourcesSpecification; "sprite"?: string; "glyphs"?: string; "transition"?: TransitionSpecification; "projection"?: ProjectionSpecification; "layers": Array<LayerSpecification>; "models"?: ModelsSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "featuresets"?: FeaturesetsSpecification; }; export type SourcesSpecification = { [_: string]: SourceSpecification; }; export type ModelsSpecification = { [_: string]: ModelSpecification; }; export type IconsetsSpecification = { [_: string]: IconsetSpecification; }; export type LightSpecification = { "anchor"?: PropertyValueSpecification<"map" | "viewport">; "position"?: PropertyValueSpecification<[ number, number, number ]>; "position-transition"?: TransitionSpecification; "color"?: PropertyValueSpecification<ColorSpecification>; "color-transition"?: TransitionSpecification; "color-use-theme"?: PropertyValueSpecification<string>; "intensity"?: PropertyValueSpecification<number>; "intensity-transition"?: TransitionSpecification; }; export type TerrainSpecification = { "source": string; "exaggeration"?: PropertyValueSpecification<number>; "exaggeration-transition"?: TransitionSpecification; }; export type FogSpecification = { "range"?: PropertyValueSpecification<[ number, number ]>; "range-transition"?: TransitionSpecification; "color"?: PropertyValueSpecification<ColorSpecification>; "color-transition"?: TransitionSpecification; "color-use-theme"?: PropertyValueSpecification<string>; "high-color"?: PropertyValueSpecification<ColorSpecification>; "high-color-transition"?: TransitionSpecification; "high-color-use-theme"?: PropertyValueSpecification<string>; "space-color"?: PropertyValueSpecification<ColorSpecification>; "space-color-transition"?: TransitionSpecification; "space-color-use-theme"?: PropertyValueSpecification<string>; "horizon-blend"?: PropertyValueSpecification<number>; "horizon-blend-transition"?: TransitionSpecification; "star-intensity"?: PropertyValueSpecification<number>; "star-intensity-transition"?: TransitionSpecification; "vertical-range"?: PropertyValueSpecification<[ number, number ]>; "vertical-range-transition"?: TransitionSpecification; }; export type SnowSpecification = { /** * @experimental This property is experimental and subject to change in future versions. */ "density"?: PropertyValueSpecification<number>; "density-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "intensity"?: PropertyValueSpecification<number>; "intensity-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "color"?: PropertyValueSpecification<ColorSpecification>; "color-transition"?: TransitionSpecification; "color-use-theme"?: PropertyValueSpecification<string>; /** * @experimental This property is experimental and subject to change in future versions. */ "opacity"?: PropertyValueSpecification<number>; "opacity-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "vignette"?: PropertyValueSpecification<number>; "vignette-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "vignette-color"?: PropertyValueSpecification<ColorSpecification>; "vignette-color-transition"?: TransitionSpecification; "vignette-color-use-theme"?: PropertyValueSpecification<string>; /** * @experimental This property is experimental and subject to change in future versions. */ "center-thinning"?: PropertyValueSpecification<number>; "center-thinning-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "direction"?: PropertyValueSpecification<[ number, number ]>; "direction-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "flake-size"?: PropertyValueSpecification<number>; "flake-size-transition"?: TransitionSpecification; }; export type RainSpecification = { /** * @experimental This property is experimental and subject to change in future versions. */ "density"?: PropertyValueSpecification<number>; "density-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "intensity"?: PropertyValueSpecification<number>; "intensity-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "color"?: PropertyValueSpecification<ColorSpecification>; "color-transition"?: TransitionSpecification; "color-use-theme"?: PropertyValueSpecification<string>; /** * @experimental This property is experimental and subject to change in future versions. */ "opacity"?: PropertyValueSpecification<number>; "opacity-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "vignette"?: PropertyValueSpecification<number>; "vignette-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "vignette-color"?: PropertyValueSpecification<ColorSpecification>; "vignette-color-transition"?: TransitionSpecification; "vignette-color-use-theme"?: PropertyValueSpecification<string>; /** * @experimental This property is experimental and subject to change in future versions. */ "center-thinning"?: PropertyValueSpecification<number>; "center-thinning-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "direction"?: PropertyValueSpecification<[ number, number ]>; "direction-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "droplet-size"?: PropertyValueSpecification<[ number, number ]>; "droplet-size-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "distortion-strength"?: PropertyValueSpecification<number>; "distortion-strength-transition"?: TransitionSpecification; }; export type CameraSpecification = { "camera-projection"?: PropertyValueSpecification<"perspective" | "orthographic">; "camera-projection-transition"?: TransitionSpecification; }; export type ColorThemeSpecification = { "data"?: ExpressionSpecification; }; export type ProjectionSpecification = { "name": "albers" | "equalEarth" | "equirectangular" | "lambertConformalConic" | "mercator" | "naturalEarth" | "winkelTripel" | "globe"; "center"?: [ number, number ]; "parallels"?: [ number, number ]; }; export type ImportSpecification = { "id": string; "url": string; "config"?: ConfigSpecification; "data"?: StyleSpecification; "color-theme"?: ColorThemeSpecification | null | undefined; }; export type IndoorSpecification = { /** * @experimental This property is experimental and subject to change in future versions. */ "floorplanFeaturesetId"?: ExpressionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "buildingFeaturesetId"?: ExpressionSpecification; }; export type ConfigSpecification = { [_: string]: unknown; }; export type SchemaSpecification = { [_: string]: OptionSpecification; }; export type OptionSpecification = { "default": ExpressionSpecification; "type"?: "string" | "number" | "boolean" | "color"; "array"?: boolean; "minValue"?: number; "maxValue"?: number; "stepValue"?: number; "values"?: Array<unknown>; "metadata"?: unknown; }; /** * @experimental This is experimental and subject to change in future versions. */ export type FeaturesetsSpecification = { [_: string]: FeaturesetSpecification; }; /** * @experimental This is experimental and subject to change in future versions. */ export type FeaturesetSpecification = { /** * @experimental This property is experimental and subject to change in future versions. */ "metadata"?: unknown; /** * @experimental This property is experimental and subject to change in future versions. */ "selectors"?: Array<SelectorSpecification>; }; /** * @experimental This is experimental and subject to change in future versions. */ export type SelectorSpecification = { /** * @experimental This property is experimental and subject to change in future versions. */ "layer": string; /** * @experimental This property is experimental and subject to change in future versions. */ "properties"?: SelectorPropertySpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "featureNamespace"?: string; /** * @experimental This property is experimental and subject to change in future versions. */ "_uniqueFeatureID"?: boolean; }; /** * @experimental This is experimental and subject to change in future versions. */ export type SelectorPropertySpecification = { /** * @experimental This property is experimental and subject to change in future versions. */ [_: string]: unknown; }; export type VectorSourceSpecification = { "type": "vector"; "url"?: string; "tiles"?: Array<string>; "bounds"?: [ number, number, number, number ]; /** * @experimental This property is experimental and subject to change in future versions. */ "extra_bounds"?: Array<[ number, number, number, number ]>; "scheme"?: "xyz" | "tms"; "minzoom"?: number; "maxzoom"?: number; "attribution"?: string; "promoteId"?: PromoteIdSpecification; "volatile"?: boolean; [_: string]: unknown; }; export type RasterSourceSpecification = { "type": "raster"; "url"?: string; "tiles"?: Array<string>; "bounds"?: [ number, number, number, number ]; /** * @experimental This property is experimental and subject to change in future versions. */ "extra_bounds"?: Array<[ number, number, number, number ]>; "minzoom"?: number; "maxzoom"?: number; "tileSize"?: number; "scheme"?: "xyz" | "tms"; "attribution"?: string; "volatile"?: boolean; [_: string]: unknown; }; export type RasterDEMSourceSpecification = { "type": "raster-dem"; "url"?: string; "tiles"?: Array<string>; "bounds"?: [ number, number, number, number ]; /** * @experimental This property is experimental and subject to change in future versions. */ "extra_bounds"?: Array<[ number, number, number, number ]>; "minzoom"?: number; "maxzoom"?: number; "tileSize"?: number; "attribution"?: string; "encoding"?: "terrarium" | "mapbox"; "volatile"?: boolean; [_: string]: unknown; }; /** * @experimental This is experimental and subject to change in future versions. */ export type RasterArraySourceSpecification = { "type": "raster-array"; "url"?: string; "tiles"?: Array<string>; "bounds"?: [ number, number, number, number ]; /** * @experimental This property is experimental and subject to change in future versions. */ "extra_bounds"?: Array<[ number, number, number, number ]>; "minzoom"?: number; "maxzoom"?: number; "tileSize"?: number; "attribution"?: string; "rasterLayers"?: unknown; "volatile"?: boolean; [_: string]: unknown; }; export type GeoJSONSourceSpecification = { "type": "geojson"; "data"?: GeoJSON.GeoJSON | string; "maxzoom"?: number; "minzoom"?: number; "attribution"?: string; "buffer"?: number; "filter"?: unknown; "tolerance"?: number; "cluster"?: boolean; "clusterRadius"?: number; "clusterMaxZoom"?: number; "clusterMinPoints"?: number; "clusterProperties"?: unknown; "lineMetrics"?: boolean; "generateId"?: boolean; "promoteId"?: PromoteIdSpecification; "dynamic"?: boolean; }; export type VideoSourceSpecification = { "type": "video"; "urls": Array<string>; "coordinates": [ [ number, number ], [ number, number ], [ number, number ], [ number, number ] ]; }; export type ImageSourceSpecification = { "type": "image"; "url"?: string; "coordinates": [ [ number, number ], [ number, number ], [ number, number ], [ number, number ] ]; }; export type ModelSourceSpecification = { "type": "model" | "batched-model"; "maxzoom"?: number; "minzoom"?: number; "tiles"?: Array<string>; }; export type SourceSpecification = VectorSourceSpecification | RasterSourceSpecification | RasterDEMSourceSpecification | RasterArraySourceSpecification | GeoJSONSourceSpecification | VideoSourceSpecification | ImageSourceSpecification | ModelSourceSpecification; export type IconsetSpecification = { "type": "sprite"; "url": string; } | { "type": "source"; "source": string; }; export type ModelSpecification = string; export type AmbientLightSpecification = { "id": string; "properties"?: { "color"?: PropertyValueSpecification<ColorSpecification>; "color-transition"?: TransitionSpecification; "color-use-theme"?: PropertyValueSpecification<string>; "intensity"?: PropertyValueSpecification<number>; "intensity-transition"?: TransitionSpecification; }; "type": "ambient"; }; export type DirectionalLightSpecification = { "id": string; "properties"?: { "direction"?: PropertyValueSpecification<[ number, number ]>; "direction-transition"?: TransitionSpecification; "color"?: PropertyValueSpecification<ColorSpecification>; "color-transition"?: TransitionSpecification; "color-use-theme"?: PropertyValueSpecification<string>; "intensity"?: PropertyValueSpecification<number>; "intensity-transition"?: TransitionSpecification; "cast-shadows"?: boolean; /** * @experimental This property is experimental and subject to change in future versions. */ "shadow-quality"?: PropertyValueSpecification<number>; "shadow-intensity"?: PropertyValueSpecification<number>; "shadow-intensity-transition"?: TransitionSpecification; }; "type": "directional"; }; export type FlatLightSpecification = { "id": string; "properties"?: { "anchor"?: PropertyValueSpecification<"map" | "viewport">; "position"?: PropertyValueSpecification<[ number, number, number ]>; "position-transition"?: TransitionSpecification; "color"?: PropertyValueSpecification<ColorSpecification>; "color-transition"?: TransitionSpecification; "color-use-theme"?: PropertyValueSpecification<string>; "intensity"?: PropertyValueSpecification<number>; "intensity-transition"?: TransitionSpecification; }; "type": "flat"; }; export type LightsSpecification = AmbientLightSpecification | DirectionalLightSpecification | FlatLightSpecification; export type FillLayerSpecification = { "id": string; "type": "fill"; "metadata"?: unknown; "source": string; "source-layer"?: string; "slot"?: string; "minzoom"?: number; "maxzoom"?: number; "filter"?: FilterSpecification; "layout"?: { "fill-sort-key"?: DataDrivenPropertyValueSpecification<number>; "visibility"?: "visible" | "none" | ExpressionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "fill-elevation-reference"?: "none" | "hd-road-base" | "hd-road-markup" | ExpressionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "fill-construct-bridge-guard-rail"?: DataDrivenPropertyValueSpecification<boolean>; }; "paint"?: { "fill-antialias"?: PropertyValueSpecification<boolean>; "fill-opacity"?: DataDrivenPropertyValueSpecification<number>; "fill-opacity-transition"?: TransitionSpecification; "fill-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "fill-color-transition"?: TransitionSpecification; "fill-color-use-theme"?: PropertyValueSpecification<string>; "fill-outline-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "fill-outline-color-transition"?: TransitionSpecification; "fill-outline-color-use-theme"?: PropertyValueSpecification<string>; "fill-translate"?: PropertyValueSpecification<[ number, number ]>; "fill-translate-transition"?: TransitionSpecification; "fill-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">; "fill-pattern"?: DataDrivenPropertyValueSpecification<ResolvedImageSpecification>; "fill-pattern-cross-fade"?: PropertyValueSpecification<number>; "fill-emissive-strength"?: PropertyValueSpecification<number>; "fill-emissive-strength-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "fill-z-offset"?: DataDrivenPropertyValueSpecification<number>; "fill-z-offset-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "fill-bridge-guard-rail-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "fill-bridge-guard-rail-color-transition"?: TransitionSpecification; "fill-bridge-guard-rail-color-use-theme"?: PropertyValueSpecification<string>; /** * @experimental This property is experimental and subject to change in future versions. */ "fill-tunnel-structure-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "fill-tunnel-structure-color-transition"?: TransitionSpecification; "fill-tunnel-structure-color-use-theme"?: PropertyValueSpecification<string>; }; }; /** * @deprecated Use `FillLayerSpecification['layout']` instead. */ export type FillLayout = FillLayerSpecification["layout"]; /** * @deprecated Use `FillLayerSpecification['paint']` instead. */ export type FillPaint = FillLayerSpecification["paint"]; export type LineLayerSpecification = { "id": string; "type": "line"; "metadata"?: unknown; "source": string; "source-layer"?: string; "slot"?: string; "minzoom"?: number; "maxzoom"?: number; "filter"?: FilterSpecification; "layout"?: { "line-cap"?: DataDrivenPropertyValueSpecification<"butt" | "round" | "square">; "line-join"?: DataDrivenPropertyValueSpecification<"bevel" | "round" | "miter" | "none">; "line-miter-limit"?: PropertyValueSpecification<number>; "line-round-limit"?: PropertyValueSpecification<number>; "line-sort-key"?: DataDrivenPropertyValueSpecification<number>; /** * @experimental This property is experimental and subject to change in future versions. */ "line-z-offset"?: DataDrivenPropertyValueSpecification<number>; /** * @experimental This property is experimental and subject to change in future versions. */ "line-elevation-reference"?: "none" | "sea" | "ground" | "hd-road-markup" | ExpressionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "line-cross-slope"?: ExpressionSpecification; "visibility"?: "visible" | "none" | ExpressionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "line-width-unit"?: PropertyValueSpecification<"pixels" | "meters">; }; "paint"?: { "line-opacity"?: DataDrivenPropertyValueSpecification<number>; "line-opacity-transition"?: TransitionSpecification; "line-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "line-color-transition"?: TransitionSpecification; "line-color-use-theme"?: PropertyValueSpecification<string>; "line-translate"?: PropertyValueSpecification<[ number, number ]>; "line-translate-transition"?: TransitionSpecification; "line-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">; "line-width"?: DataDrivenPropertyValueSpecification<number>; "line-width-transition"?: TransitionSpecification; "line-gap-width"?: DataDrivenPropertyValueSpecification<number>; "line-gap-width-transition"?: TransitionSpecification; "line-offset"?: DataDrivenPropertyValueSpecification<number>; "line-offset-transition"?: TransitionSpecification; "line-blur"?: DataDrivenPropertyValueSpecification<number>; "line-blur-transition"?: TransitionSpecification; "line-dasharray"?: DataDrivenPropertyValueSpecification<Array<number>>; "line-pattern"?: DataDrivenPropertyValueSpecification<ResolvedImageSpecification>; "line-pattern-cross-fade"?: PropertyValueSpecification<number>; "line-gradient"?: ExpressionSpecification; "line-gradient-use-theme"?: PropertyValueSpecification<string>; "line-trim-offset"?: [ number, number ]; /** * @experimental This property is experimental and subject to change in future versions. */ "line-trim-fade-range"?: PropertyValueSpecification<[ number, number ]>; /** * @experimental This property is experimental and subject to change in future versions. */ "line-trim-color"?: PropertyValueSpecification<ColorSpecification>; "line-trim-color-transition"?: TransitionSpecification; "line-trim-color-use-theme"?: PropertyValueSpecification<string>; "line-emissive-strength"?: PropertyValueSpecification<number>; "line-emissive-strength-transition"?: TransitionSpecification; "line-border-width"?: DataDrivenPropertyValueSpecification<number>; "line-border-width-transition"?: TransitionSpecification; "line-border-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "line-border-color-transition"?: TransitionSpecification; "line-border-color-use-theme"?: PropertyValueSpecification<string>; "line-occlusion-opacity"?: PropertyValueSpecification<number>; "line-occlusion-opacity-transition"?: TransitionSpecification; }; }; /** * @deprecated Use `LineLayerSpecification['layout']` instead. */ export type LineLayout = LineLayerSpecification["layout"]; /** * @deprecated Use `LineLayerSpecification['paint']` instead. */ export type LinePaint = LineLayerSpecification["paint"]; export type SymbolLayerSpecification = { "id": string; "type": "symbol"; "metadata"?: unknown; "source": string; "source-layer"?: string; "slot"?: string; "minzoom"?: number; "maxzoom"?: number; "filter"?: FilterSpecification; "layout"?: { "symbol-placement"?: PropertyValueSpecification<"point" | "line" | "line-center">; "symbol-spacing"?: PropertyValueSpecification<number>; "symbol-avoid-edges"?: PropertyValueSpecification<boolean>; "symbol-sort-key"?: DataDrivenPropertyValueSpecification<number>; "symbol-z-order"?: PropertyValueSpecification<"auto" | "viewport-y" | "source">; "symbol-z-elevate"?: PropertyValueSpecification<boolean>; /** * @experimental This property is experimental and subject to change in future versions. */ "symbol-elevation-reference"?: PropertyValueSpecification<"sea" | "ground" | "hd-road-markup">; "icon-allow-overlap"?: PropertyValueSpecification<boolean>; "icon-ignore-placement"?: PropertyValueSpecification<boolean>; "icon-optional"?: PropertyValueSpecification<boolean>; "icon-rotation-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">; "icon-size"?: DataDrivenPropertyValueSpecification<number>; /** * @experimental This property is experimental and subject to change in future versions. */ "icon-size-scale-range"?: ExpressionSpecification; "icon-text-fit"?: DataDrivenPropertyValueSpecification<"none" | "width" | "height" | "both">; "icon-text-fit-padding"?: DataDrivenPropertyValueSpecification<[ number, number, number, number ]>; "icon-image"?: DataDrivenPropertyValueSpecification<ResolvedImageSpecification>; "icon-rotate"?: DataDrivenPropertyValueSpecification<number>; "icon-padding"?: PropertyValueSpecification<number>; "icon-keep-upright"?: PropertyValueSpecification<boolean>; "icon-offset"?: DataDrivenPropertyValueSpecification<[ number, number ]>; "icon-anchor"?: DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">; "icon-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">; "text-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">; "text-rotation-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">; "text-field"?: DataDrivenPropertyValueSpecification<FormattedSpecification>; "text-font"?: DataDrivenPropertyValueSpecification<Array<string>>; "text-size"?: DataDrivenPropertyValueSpecification<number>; /** * @experimental This property is experimental and subject to change in future versions. */ "text-size-scale-range"?: ExpressionSpecification; "text-max-width"?: DataDrivenPropertyValueSpecification<number>; "text-line-height"?: DataDrivenPropertyValueSpecification<number>; "text-letter-spacing"?: DataDrivenPropertyValueSpecification<number>; "text-justify"?: DataDrivenPropertyValueSpecification<"auto" | "left" | "center" | "right">; "text-radial-offset"?: DataDrivenPropertyValueSpecification<number>; "text-variable-anchor"?: PropertyValueSpecification<Array<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">>; "text-anchor"?: DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">; "text-max-angle"?: PropertyValueSpecification<number>; "text-writing-mode"?: PropertyValueSpecification<Array<"horizontal" | "vertical">>; "text-rotate"?: DataDrivenPropertyValueSpecification<number>; "text-padding"?: PropertyValueSpecification<number>; "text-keep-upright"?: PropertyValueSpecification<boolean>; "text-transform"?: DataDrivenPropertyValueSpecification<"none" | "uppercase" | "lowercase">; "text-offset"?: DataDrivenPropertyValueSpecification<[ number, number ]>; "text-allow-overlap"?: PropertyValueSpecification<boolean>; "text-ignore-placement"?: PropertyValueSpecification<boolean>; "text-optional"?: PropertyValueSpecification<boolean>; "visibility"?: "visible" | "none" | ExpressionSpecification; }; "paint"?: { "icon-opacity"?: DataDrivenPropertyValueSpecification<number>; "icon-opacity-transition"?: TransitionSpecification; "icon-occlusion-opacity"?: DataDrivenPropertyValueSpecification<number>; "icon-occlusion-opacity-transition"?: TransitionSpecification; "icon-emissive-strength"?: DataDrivenPropertyValueSpecification<number>; "icon-emissive-strength-transition"?: TransitionSpecification; "text-emissive-strength"?: DataDrivenPropertyValueSpecification<number>; "text-emissive-strength-transition"?: TransitionSpecification; "icon-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "icon-color-transition"?: TransitionSpecification; "icon-color-use-theme"?: PropertyValueSpecification<string>; "icon-halo-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "icon-halo-color-transition"?: TransitionSpecification; "icon-halo-color-use-theme"?: PropertyValueSpecification<string>; "icon-halo-width"?: DataDrivenPropertyValueSpecification<number>; "icon-halo-width-transition"?: TransitionSpecification; "icon-halo-blur"?: DataDrivenPropertyValueSpecification<number>; "icon-halo-blur-transition"?: TransitionSpecification; "icon-translate"?: PropertyValueSpecification<[ number, number ]>; "icon-translate-transition"?: TransitionSpecification; "icon-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">; "icon-image-cross-fade"?: PropertyValueSpecification<number>; "text-opacity"?: DataDrivenPropertyValueSpecification<number>; "text-opacity-transition"?: TransitionSpecification; "text-occlusion-opacity"?: DataDrivenPropertyValueSpecification<number>; "text-occlusion-opacity-transition"?: TransitionSpecification; "text-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "text-color-transition"?: TransitionSpecification; "text-color-use-theme"?: PropertyValueSpecification<string>; "text-halo-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "text-halo-color-transition"?: TransitionSpecification; "text-halo-color-use-theme"?: PropertyValueSpecification<string>; "text-halo-width"?: DataDrivenPropertyValueSpecification<number>; "text-halo-width-transition"?: TransitionSpecification; "text-halo-blur"?: DataDrivenPropertyValueSpecification<number>; "text-halo-blur-transition"?: TransitionSpecification; "text-translate"?: PropertyValueSpecification<[ number, number ]>; "text-translate-transition"?: TransitionSpecification; "text-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">; "icon-color-saturation"?: ExpressionSpecification; "icon-color-contrast"?: ExpressionSpecification; "icon-color-brightness-min"?: ExpressionSpecification; "icon-color-brightness-max"?: ExpressionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "symbol-z-offset"?: DataDrivenPropertyValueSpecification<number>; "symbol-z-offset-transition"?: TransitionSpecification; }; }; /** * @deprecated Use `SymbolLayerSpecification['layout']` instead. */ export type SymbolLayout = SymbolLayerSpecification["layout"]; /** * @deprecated Use `SymbolLayerSpecification['paint']` instead. */ export type SymbolPaint = SymbolLayerSpecification["paint"]; export type CircleLayerSpecification = { "id": string; "type": "circle"; "metadata"?: unknown; "source": string; "source-layer"?: string; "slot"?: string; "minzoom"?: number; "maxzoom"?: number; "filter"?: FilterSpecification; "layout"?: { "circle-sort-key"?: DataDrivenPropertyValueSpecification<number>; /** * @experimental This property is experimental and subject to change in future versions. */ "circle-elevation-reference"?: "none" | "hd-road-markup" | ExpressionSpecification; "visibility"?: "visible" | "none" | ExpressionSpecification; }; "paint"?: { "circle-radius"?: DataDrivenPropertyValueSpecification<number>; "circle-radius-transition"?: TransitionSpecification; "circle-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "circle-color-transition"?: TransitionSpecification; "circle-color-use-theme"?: PropertyValueSpecification<string>; "circle-blur"?: DataDrivenPropertyValueSpecification<number>; "circle-blur-transition"?: TransitionSpecification; "circle-opacity"?: DataDrivenPropertyValueSpecification<number>; "circle-opacity-transition"?: TransitionSpecification; "circle-translate"?: PropertyValueSpecification<[ number, number ]>; "circle-translate-transition"?: TransitionSpecification; "circle-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">; "circle-pitch-scale"?: PropertyValueSpecification<"map" | "viewport">; "circle-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport">; "circle-stroke-width"?: DataDrivenPropertyValueSpecification<number>; "circle-stroke-width-transition"?: TransitionSpecification; "circle-stroke-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "circle-stroke-color-transition"?: TransitionSpecification; "circle-stroke-color-use-theme"?: PropertyValueSpecification<string>; "circle-stroke-opacity"?: DataDrivenPropertyValueSpecification<number>; "circle-stroke-opacity-transition"?: TransitionSpecification; "circle-emissive-strength"?: PropertyValueSpecification<number>; "circle-emissive-strength-transition"?: TransitionSpecification; }; }; /** * @deprecated Use `CircleLayerSpecification['layout']` instead. */ export type CircleLayout = CircleLayerSpecification["layout"]; /** * @deprecated Use `CircleLayerSpecification['paint']` instead. */ export type CirclePaint = CircleLayerSpecification["paint"]; export type HeatmapLayerSpecification = { "id": string; "type": "heatmap"; "metadata"?: unknown; "source": string; "source-layer"?: string; "slot"?: string; "minzoom"?: number; "maxzoom"?: number; "filter"?: FilterSpecification; "layout"?: { "visibility"?: "visible" | "none" | ExpressionSpecification; }; "paint"?: { "heatmap-radius"?: DataDrivenPropertyValueSpecification<number>; "heatmap-radius-transition"?: TransitionSpecification; "heatmap-weight"?: DataDrivenPropertyValueSpecification<number>; "heatmap-intensity"?: PropertyValueSpecification<number>; "heatmap-intensity-transition"?: TransitionSpecification; "heatmap-color"?: ExpressionSpecification; "heatmap-color-use-theme"?: PropertyValueSpecification<string>; "heatmap-opacity"?: PropertyValueSpecification<number>; "heatmap-opacity-transition"?: TransitionSpecification; }; }; /** * @deprecated Use `HeatmapLayerSpecification['layout']` instead. */ export type HeatmapLayout = HeatmapLayerSpecification["layout"]; /** * @deprecated Use `HeatmapLayerSpecification['paint']` instead. */ export type HeatmapPaint = HeatmapLayerSpecification["paint"]; export type FillExtrusionLayerSpecification = { "id": string; "type": "fill-extrusion"; "metadata"?: unknown; "source": string; "source-layer"?: string; "slot"?: string; "minzoom"?: number; "maxzoom"?: number; "filter"?: FilterSpecification; "layout"?: { "visibility"?: "visible" | "none" | ExpressionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "fill-extrusion-edge-radius"?: ExpressionSpecification; }; "paint"?: { "fill-extrusion-opacity"?: PropertyValueSpecification<number>; "fill-extrusion-opacity-transition"?: TransitionSpecification; "fill-extrusion-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>; "fill-extrusion-color-transition"?: TransitionSpecification; "fill-extrusion-color-use-theme"?: PropertyValueSpecification<string>; "fill-extrusion-translate"?: PropertyValueSpecification<[ number, number ]>; "fill-extrusion-translate-transition"?: TransitionSpecification; "fill-extrusion-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">; "fill-extrusion-pattern"?: DataDrivenPropertyValueSpecification<ResolvedImageSpecification>; "fill-extrusion-pattern-cross-fade"?: PropertyValueSpecification<number>; "fill-extrusion-height"?: DataDrivenPropertyValueSpecification<number>; "fill-extrusion-height-transition"?: TransitionSpecification; "fill-extrusion-base"?: DataDrivenPropertyValueSpecification<number>; "fill-extrusion-base-transition"?: TransitionSpecification; /** * @experimental This property is experimental and subject to change in future versions. */ "fill-extrusion-height-alignment"?: "terrain" | "flat"; /** * @experimental This property is experimental and subject to change in future versions. */ "fill-extrusion-base-alignment"?: "terrain" | "flat"; "fill-extrusion-vertical-gradient"?: PropertyValueSpecification<boolean>; "fill-extrusion-ambient-occlusion-intensity"?: PropertyValueSpecification<number>; "fill-extrusion-ambient-occlusion-intensity-transition"?: TransitionSpecification; "fill-extrusion-ambient-occlusion-radius"?: PropertyValueSpecification<number>; "fill-extrusion-ambient-occlusion-radius-transition"?: Tra