import type { IAnimateOption, IMapService, ITexture2D, StyleAttributeField, StyleAttributeOption } from '@antv/l7-core'; import type { IColorRamp } from '@antv/l7-utils'; import type { CanvasModelType } from '../canvas/models'; import type { anchorType } from '../utils/symbol-layout'; export declare enum lineStyleType { 'solid' = 0, 'dash' = 1 } export declare enum LinearDir { VERTICAL = "vertical", HORIZONTAL = "horizontal" } export declare enum TextureBlend { NORMAL = "normal", REPLACE = "replace" } /** * 基础图层类型定义 */ export interface IBaseLayerStyleOptions { opacity?: number; depth?: boolean; blend?: string; raisingHeight?: number; heightfixed?: boolean; zIndex?: number; mask?: boolean; maskInside?: boolean; enableRelativeCoordinates?: boolean; color?: string; size?: number; } export interface ILineLayerStyleOptions extends IBaseLayerStyleOptions { relativeOrigin?: number[]; coord?: string; lineType?: keyof typeof lineStyleType; dashArray?: [number, number]; segmentNumber?: number; forward?: boolean; lineTexture?: boolean; iconStep?: number; iconStepCount?: number; textureBlend?: TextureBlend; linearDir?: LinearDir; sourceColor?: string; targetColor?: string; thetaOffset?: number; globalArcHeight?: number; vertexHeightScale?: number; borderWidth?: number; borderColor?: string; strokeWidth?: number; storke?: string; blur?: [number, number, number]; symbol?: ILineSymbol; rampColors?: IColorRamp; featureId?: string; sourceLayer?: string; enablePicking?: boolean; workerEnabled?: boolean; } export declare enum SizeUnitType { pixel = 0, meter = 1 } export interface IPointLayerStyleOptions extends IBaseLayerStyleOptions { relativeOrigin?: number[]; coord?: string; strokeOpacity: number; strokeWidth: number; stroke: string; blur?: number; billboard?: boolean; textOffset?: [number, number]; textAnchor?: anchorType; spacing?: number; padding?: [number, number]; halo?: number; gamma?: number; fontWeight?: string; fontFamily?: string; textAllowOverlap?: boolean; allowOverlap?: boolean; pickLight?: boolean; sourceColor?: string; targetColor?: string; opacityLinear?: { enable: boolean; dir: string; }; lightEnable: boolean; offsets?: [number, number]; unit?: SizeUnitType; rotation?: number; speed?: number; featureId?: string; sourceLayer?: string; } export interface IPolygonLayerStyleOptions extends IBaseLayerStyleOptions { relativeOrigin?: number[]; coord?: string; opacityLinear?: { enable: boolean; dir: string; }; topsurface?: boolean; sidesurface?: boolean; mapTexture?: string; sourceColor?: string; targetColor?: string; pickLight: boolean; waterTexture?: string; speed?: number; watercolor?: string; watercolor2?: string; featureId?: string; sourceLayer?: string; } export interface IPolygonExtrusionStyleOptions { opacity: number; extrusionBase: number; } export interface IRasterTileLayerStyleOptions extends IBaseLayerStyleOptions { opacity: number; } export interface IMaskLayerStyleOptions extends IBaseLayerStyleOptions { opacity: number; color: string; sourceLayer?: string; } export interface IWindLayerStyleOptions extends IBaseLayerStyleOptions { uMin?: number; uMax?: number; vMin?: number; vMax?: number; fadeOpacity?: number; speedFactor?: number; dropRate?: number; dropRateBump?: number; numParticles?: number; rampColors?: { [key: number]: string; }; sizeScale?: number; } export interface IImageLayerStyleOptions extends IBaseLayerStyleOptions { domain?: [number, number]; noDataValue?: number; clampLow?: boolean; clampHigh?: boolean; rampColors?: IColorRamp; colorTexture?: ITexture2D; brightness?: number; contrast?: number; saturation?: number; gamma?: number; } export interface ICityBuildLayerStyleOptions { opacity: number; baseColor: string; brightColor: string; windowColor: string; time: number; sweep: { enable: boolean; sweepRadius: number; sweepColor: string; sweepSpeed: number; sweepCenter?: [number, number]; }; } export interface IGeometryLayerStyleOptions extends IBaseLayerStyleOptions { mapTexture?: string; terrainTexture?: string; center?: [number, number]; width?: number; height?: number; widthSegments?: number; heightSegments?: number; terrainClipHeight?: number; rgb2height?: (r: number, g: number, b: number) => number; canvasWidth?: number; canvasHeight?: number; drawCanvas?: (canvas: HTMLCanvasElement) => void; spriteAnimate?: string; spriteRadius?: number; spriteCount?: number; spriteSpeed?: number; spriteTop?: number; spriteBottom?: number; spriteUpdate?: number; spriteScale?: number; animateOption?: IAnimateOption; } export declare enum CanvasUpdateType { 'ALWAYS' = "always", 'DRAGEND' = "dragend" } export interface IDrawingOnCanvas { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; mapService: IMapService; size: [number, number]; } export interface ICanvasLayerRenderParams { canvas: HTMLCanvasElement; ctx: RenderingContext; container: { width: number; height: number; bounds: [[number, number], [number, number]]; }; size: [number, number]; utils: { lngLatToContainer: IMapService['lngLatToContainer']; }; mapService: IMapService; } export interface ICanvasLayerOptions { zIndex?: number; contextType?: CanvasModelType; getContext?: (canvas: HTMLCanvasElement) => RenderingContext; trigger?: 'end' | 'change'; /** * @deprecated * @alias trigger */ update?: CanvasUpdateType | string; draw?: (renderParams: ICanvasLayerRenderParams) => void; /** * @deprecated * @alias draw */ drawingOnCanvas?: (renderParams: ICanvasLayerRenderParams) => void; } export interface IHeatMapLayerStyleOptions extends IBaseLayerStyleOptions { intensity: number; radius: number; angle: number; rampColors: IColorRamp; coverage?: number; } export interface IBaseRasterLayerStyleOptions extends IBaseLayerStyleOptions { colorTexture?: ITexture2D; domain: [number, number]; noDataValue: number; clampLow: boolean; clampHigh: boolean; rampColors: IColorRamp; } export interface IRasterLayerStyleOptions extends IBaseRasterLayerStyleOptions { channelRMax?: number; channelGMax?: number; channelBMax?: number; } export interface IRasterTerrainLayerStyleOptions extends IBaseRasterLayerStyleOptions { rScaler?: number; gScaler?: number; bScaler?: number; offset?: number; } export type ArrowType = 'circle' | 'triangle' | 'rect' | 'diamond' | 'classic' | 'halfTriangle' | 'none'; export interface IArrowOptions { type: ArrowType; width?: number; height?: number; radius?: number; } export interface ILineSymbol { source: ArrowType | IArrowOptions; target: ArrowType | IArrowOptions; } export interface IFlowLineStyleOptions extends IBaseLayerStyleOptions { gapWidth?: number; offsets?: [number, number]; stroke?: string; strokeOpacity?: number; strokeWidth?: number; symbol?: ILineSymbol; } export interface IStyleEncodeAttributeOptions { field: StyleAttributeField; values?: StyleAttributeOption; }