import EventEmitter from 'eventemitter3'; import { SourceEvent } from '../constant'; import { LayerRender } from '../render'; import { FeatureUpdater, IBaseFeature, IRenderType, RenderMap, SourceData, SourceOptions } from '../typings'; import { History } from './history'; import { Scene } from '@antv/l7'; export declare class Source extends EventEmitter { protected scene: Scene; /** * 用于存储渲染器render映射 * @protected */ protected render: RenderMap; /** * 用于存储当前最新数据 * @protected */ protected data: SourceData; /** * 存储当前延迟更新函数的timeout * @protected */ protected timeout: number | null; /** * 用于需要待更新的renderType以及对应的最新数据 * @protected */ protected diffData: Partial; protected enableBBox: boolean; protected featureType: 'point' | 'line' | 'polygon'; /** * * @protected */ protected history?: History; constructor({ data, render, history: historyConfig, scene, bbox, }: SourceOptions); saveHistory(): SourceData | undefined; revertHistory(): SourceData | undefined; redoHistory(): SourceData | undefined; /** * 更新数据的方法,新的数据会累积延迟更新 * @param data */ setData(data: Partial): SourceData; /** * 获取全量source数据 */ getData(): SourceData; /** * 获取单项source数据 * @param renderType */ getRenderData(renderType: IRenderType): F[]; /** * 设置单项 * @param renderType * @param updater */ setRenderData(renderType: IRenderType, updater: FeatureUpdater): F[]; /** * 根据当前diffData中积累的数据更新对应render */ updateDiffData(): void; /** * 获取对应renderType类型的render实例,如果没有获取到则代表 * @param type */ getRender(type: IRenderType): R | undefined; /** * 清空所有数据 */ clear(): void; }