/// /// import { ILayer, Scene } from '@antv/l7'; import { Feature } from '@turf/turf'; import EventEmitter from 'eventemitter3'; import { DrawEvent } from '../constant'; import { Cursor, Popup } from '../interactive'; import { SceneRender } from '../render'; import { Source } from '../source'; import { DeepPartial, IBaseFeature, IBaseModeOptions, ICursorType, ILngLat, IRenderType, ISceneMouseEvent, PopupContent, RenderMap } from '../typings'; export declare abstract class BaseMode extends EventEmitter { static instances: BaseMode[]; /** * L7 场景实例,在构造器中传入 */ protected scene: Scene; /** * 数据管理中心 */ protected source: Source; /** * 渲染器render对象 */ protected render: RenderMap; /** * 指针管理器 * @protected */ protected cursor: Cursor; /** * Drawer 配置 */ protected options: O; /** * 当前Drawer是否为开启绘制状态 */ protected enabled: boolean; protected allowCreate: boolean; /** * scene相关事件管理 * @protected */ protected sceneRender: SceneRender; /** * 光标在地图上的经纬度位置 * @protected */ protected mouseLngLat: ILngLat; protected popup?: Popup; /** * 本次enable添加的绘制物个数 * @protected */ protected addCount: number; /** * 当期是否可以添加新的绘制物 */ get addable(): boolean; constructor(scene: Scene, options: DeepPartial); protected abstract get dragItem(): Feature | null | undefined; protected abstract get editItem(): Feature | null | undefined; /** * 获取当前options配置的方法 */ getOptions(): O; /** * 获取当前激活的绘制项 */ getEditItem(): Feature | null | undefined; /** * 获取当前正在被拖拽的绘制项 */ getDragItem(): Feature | null | undefined; /** * 获取当前Drawer需要用到的render类型数据,避免创建无效的Render */ abstract getRenderTypes(): IRenderType[]; /** * 获取当前Drawer默认参数 * @param options */ abstract getDefaultOptions(options: DeepPartial): O; /** * 获取数据 */ abstract getData(getOriginData?: boolean): Feature[]; /** * 获取主图层实例 */ abstract getMainLayer(): ILayer[]; /** * 设置数据 * @param data */ abstract setData(data: Feature[]): void; setHelper(type: PopupContent | keyof O['helper'] | null): void; /** * 获取当前是否为编辑态 */ isEnable(): boolean; /** * 绑定回调函数的this指向 */ bindThis(): void; bindCommonEvent(): void; /** * 绑定判断 select 事件方法 * @param emit */ bindEmitSelectEvent(emit?: boolean): void; /** * 监听通用事件 */ bindEnableEvent(): void; /** * 监听通用事件 */ unbindEnableEvent(): void; bindKeyboardEvent(): void; unbindKeyboardEvent(): void; saveMouseLngLat: import("lodash").DebouncedFunc<(e: ISceneMouseEvent) => void>; /** * 触发change事件,同时触发保存数据备份 */ emitChangeEvent(): void; /** * 保存当前数据备份 */ saveHistory: import("lodash").DebouncedFunc<() => void>; /** * 回退至上一次数据备份 */ revertHistory(): void; /** * 重做回退之前的数据备份 */ redoHistory(): void; /** * 获取 renderType 与对应 L7图层的键值对 */ getRenderLayers(): import("lodash").Dictionary; getTargetFeature(target: Feature | string | null | undefined, data?: Feature[]): IBaseFeature | null; abstract setActiveFeature(target: Feature | string | null | undefined): void; abstract resetFeatures(): void; /** * 删除当前active的绘制物 */ removeActiveFeature(): Feature | undefined; /** * 删除指定 * @param target */ removeFeature(target: Feature | string): void; /** * 矫正正在绘制Feature的虚线部分(Drawer中都是在onSceneMouseMove中进行绘制) */ correctDrawItem(): void; /** * 根据子类实现的 getRenderTypes 方法,初始化对应的Render实例。 */ initRender(): RenderMap; /** * 光标在地图上移动时的回调,子类均会重写该方法 * @param e */ abstract onSceneMouseMove(e: ISceneMouseEvent): void; /** * 根据用户传入的options返回通用的options默认配置 * @param options */ getCommonOptions(options: DeepPartial): IBaseModeOptions; /** * 设置地图上光标样式类型 * @param cursor */ setCursor(cursor: ICursorType | null): void; /** * 重置光标到常规状态 */ resetCursor(): void; /** * 启用 Drawer * @param allowCreate 是否支持添加操作 */ enable(allowCreate?: boolean): void; /** * 禁用Drawer */ disable(): void; /** * 清空所有数据 */ clear(disable?: boolean): void; /** * 显示该Drawer下所有图层 */ show(): void; /** * 隐藏该Drawer下所有图层 */ hide(): void; /** * 销毁当前Drawer */ destroy(): void; }