import { Feature, Position } from '@turf/turf'; import { LineRender } from '../render'; import { DeepPartial, FeatureUpdater, IAdsorbOptions, IDashLineFeature, IDistanceOptions, ILayerMouseEvent, ILineFeature, ILineHelperOptions, ILineProperties, ILngLat, IMidPointFeature, IPointFeature, ISceneMouseEvent, ITextFeature } from '../typings'; import { IMidPointModeOptions, MidPointMode } from './mid-point-mode'; export interface ILineModeOptions extends IMidPointModeOptions { trigger: 'click' | 'drag'; dragOptions: { dotDistance: number; dotDuration: number; }; distanceOptions: false | IDistanceOptions; helper: ILineHelperOptions | boolean; adsorbOptions: IAdsorbOptions | false; } export declare abstract class LineMode extends MidPointMode { protected prevCreateTime: number; get isDragTrigger(): boolean; get isClickTrigger(): boolean; /** * 当前高亮的结点 * @protected */ protected get editLine(): ILineFeature | undefined; /** * 获取line类型对应的render * @protected */ protected get lineRender(): LineRender | undefined; /** * 获取正在被拖拽的线 * @protected */ protected get dragLine(): ILineFeature | undefined; /** * 正在绘制的线 * @protected */ protected get drawLine(): ILineFeature | undefined; /** * 当前悬停的线 * @protected */ protected get hoverLine(): ILineFeature | undefined; protected previousPosition: Position; getDragLine(): ILineFeature | undefined; getDrawLine(): ILineFeature | undefined; getEditLine(): ILineFeature | undefined; getDefaultOptions(options: DeepPartial): T; /** * 获取 position 经过吸附作用后的 position,若无吸附效果则返回原始数据 * @param position */ getAdsorbPosition(position: Position): Position | null; bindSceneEvent(): void; bindPointRenderEvent(): void; bindLineRenderEvent(): void; getDashLineDistanceTexts(dashLines: IDashLineFeature[], { showTotalDistance, format, showDashDistance, }: Pick): ITextFeature[]; getLineDistanceTexts(lines: ILineFeature[], { showTotalDistance, format, showWhen, }: Pick): ITextFeature[]; getDistanceTexts(): ITextFeature[]; getAllTexts(): ITextFeature[]; /** * 创建LineFeature * @param point */ handleCreateLine(point: IPointFeature): ILineFeature; /** * 同步当前编辑线中的结点 * @param line * @param nodes */ syncLineNodes(line: ILineFeature, nodes: IPointFeature[]): ILineFeature; setActiveLine(line: ILineFeature, properties?: Partial): ILineFeature; clearActiveLine(): void; handleLineUnClick(link: ILineFeature): ILineFeature; handleLineHover(line: ILineFeature): ILineFeature | undefined; handleLineUnHover(line: ILineFeature): ILineFeature | undefined; handleLineDragStart(line: ILineFeature): ILineFeature; handleLineDragging(line: ILineFeature, { lng, lat }: ILngLat): ILineFeature; handleLineDragEnd(line: ILineFeature): ILineFeature; resetAdsorbLngLat(e: ILayerMouseEvent | ISceneMouseEvent): Position | null | undefined; /** * 创建点之后,对应线段的处理 * @param e */ onPointCreate(e: ILayerMouseEvent): IPointFeature | undefined; onPointDragStart(e: ILayerMouseEvent): IPointFeature | undefined; onPointDragging(e: ISceneMouseEvent): IPointFeature | undefined; onPointDragEnd(e: ISceneMouseEvent): IPointFeature | undefined; onLineUnClick(e: ILayerMouseEvent): ILineFeature | undefined; onLineMouseMove(e: ILayerMouseEvent): ILineFeature | undefined; onLineMouseOut(e: ILayerMouseEvent): ILineFeature | undefined; onLineDragStart(e: ILayerMouseEvent): ILineFeature | undefined; onLineDragging(e: ISceneMouseEvent): ILineFeature | undefined; onLineDragEnd(e: ISceneMouseEvent): ILineFeature | undefined; onPointMouseMove(e: ILayerMouseEvent): IPointFeature; onPointMouseOut(e: ILayerMouseEvent): IPointFeature; onMidPointHover(e: ILayerMouseEvent): void; onMidPointUnHover(e: ILayerMouseEvent): void; onPointClick(e: ILayerMouseEvent): void; /** * 获取线数据 */ getLineData(): ILineFeature[]; /** * 设置线数据 * @param data */ setLineData(data: FeatureUpdater): ILineFeature[]; getTextData(): ITextFeature[]; setTextData(data: FeatureUpdater): ITextFeature[]; /** * 获取线数据 */ getDashLineData(): IDashLineFeature[]; /** * 设置线数据 * @param data */ setDashLineData(data: FeatureUpdater): IDashLineFeature[]; onMidPointClick(e: ILayerMouseEvent): IPointFeature | undefined; enableSceneRenderAction(): void; disableSceneRenderAction(): void; enableLineRenderAction(): void; disableLineRenderAction(): void; onSceneDragStart(e: ISceneMouseEvent): void; onSceneDragging(e: ISceneMouseEvent): void; onSceneDragEnd(e: ISceneMouseEvent): void; bindSceneDragEvent(): void; unbindSceneDragEvent(): void; bindEnableEvent(): void; unbindEnableEvent(): void; bindThis(): void; }