///
/** 数据驱动样式表达式,如 ['match', ['get', 'name'], 'a', '#f00', '#00f'](SDK 表达式语法) */
export type LineStyleExpr = unknown[];
export interface LineLayerStyle {
strokeColor?: string | LineStyleExpr;
strokeWeight?: number | LineStyleExpr;
strokeOpacity?: number | LineStyleExpr;
strokeStyle?: string | LineStyleExpr;
strokeLineCap?: string;
strokeLineJoin?: string;
borderColor?: string | LineStyleExpr;
borderWeight?: number | LineStyleExpr;
dashArray?: number[];
strokeTextureUrl?: string | LineStyleExpr;
strokeTextureWidth?: number | LineStyleExpr;
strokeTextureHeight?: number;
/** 是否按纹理序列渲染(贴图沿线重复) */
sequence?: boolean;
/** 纹理之间的间隔长度 */
marginLength?: number;
[k: string]: unknown;
}
export interface LineLayerOptions {
style?: LineLayerStyle;
idKey?: string;
crs?: string;
isFlat?: boolean;
drawPart?: boolean;
selectedColor?: string;
selectedIndex?: number;
enablePicked?: boolean;
/** 拾取时是否自动切换 selectedIndex(配合 feature-state 高亮时通常设 false,自己控制状态) */
enableChangeSelectIndexByPick?: boolean;
autoSelect?: boolean;
popEvent?: boolean;
pickWidth?: number;
pickHeight?: number;
/** 命中要素时是否自动改变鼠标样式 */
mouseStyleChange?: boolean;
/** 参考中心点(Point) */
referCenter?: unknown;
isTop?: boolean;
isLowText?: boolean;
/** 是否渐变线 */
isLinear?: boolean;
/** 渐变纹理 */
linearTexture?: unknown;
nodeShow?: boolean;
nodeMask?: boolean;
nodeStrict?: boolean;
nodeJoin?: boolean;
nodeBreakpoint?: boolean;
nodeMiddleShow?: boolean;
nodeMinZoom?: number;
linkLine?: boolean;
visible?: boolean;
opacity?: number;
minZoom?: number;
maxZoom?: number;
zIndex?: number;
}
/** 图层拾取事件对象(enablePicked=true 时点击/悬停命中要素;dataIndex=-1 表示点空白) */
export interface LineLayerEvent {
value?: {
dataIndex?: number;
dataItem?: {
properties?: Record;
[k: string]: unknown;
};
[k: string]: unknown;
};
[k: string]: unknown;
}
export interface LineLayerProps extends LineLayerOptions {
/** GeoJSON 数据源,变化时调用 raw.setData() */
data?: object;
/** setData 第二参(如 { changeCenter: true } 自动定位到数据范围) */
setDataParams?: object;
/** 点击要素(需 enablePicked)。e.value.dataIndex 为命中要素索引,-1 表示点空白 */
onClick?: (e: LineLayerEvent) => void;
/** 双击要素(需 enablePicked) */
onDblClick?: (e: LineLayerEvent) => void;
onRightClick?: (e: LineLayerEvent) => void;
/** 鼠标在要素上移动(需 enablePicked)。SDK 不派发 mouseover/mouseout,hover 进出请自行用 dataIndex 变化推导 */
onMouseMove?: (e: LineLayerEvent) => void;
/** 图层创建并挂载后回调,拿到原生 LineLayer 实例做命令式操作(如 updateState/clearState/traceControl) */
onReady?: (layer: any) => void;
}
export declare const LineLayer: import('react').NamedExoticComponent;