import Feature from 'ol/Feature';
import { Geometry } from 'ol/geom';
import { default as OlMap } from 'ol/Map';
import { ILineSymbol, IMaskParam, IOverlayParam, IPointSymbol, IPolygonSymbol, IResult } from '../../../types';
interface IOverlayOptions {
    id?: string;
}
export default class OverlayController {
    private map;
    private overlayLayer;
    private vectorSource;
    private hiddenStyle;
    /** 保存feature闪烁状态 */
    private flashingMap;
    constructor(map: OlMap, options?: IOverlayOptions);
    private defaultPointSymbol;
    /**
     * 添加覆盖物
     * @param params
     */
    addOverlays(params: IOverlayParam): IResult;
    /**
     * 添加或更新单个覆盖物
     * @param overlay 覆盖物对象
     * @param symbol 符号
     * @param properties 属性
     * @param visible 是否可见
     */
    private addOverlay;
    /**
     * 创建几何对象
     * @param geometryConfig 几何配置
     */
    private createGeometry;
    /**
     * 获取样式
     * @param geometryType 几何类型
     * @param symbol 符号配置
     * @param attributes 属性
     */
    private getStyle;
    /**
     * 按type移除覆盖物
     * @param types
     */
    removeOverlaysByType(types: string[] | string): IResult;
    /**
     * 按id移除覆盖物
     * @param ids
     */
    removeOverlaysById(ids: string[] | string): IResult;
    /**
     * 按id显示或隐藏覆盖物
     * @param ids
     * @param isShow
     */
    isShowOverlaysByIds(ids: string[], isShow: boolean): void;
    /**
     * 显示全部覆盖物
     */
    showAllOverlays(): void;
    /**
     * 删除全部覆盖物
     * @returns
     */
    removeAllOverlays(): IResult;
    /**
     * 更新覆盖物符号
     * @param ids 覆盖物id数组
     * @param symbol 新的符号配置
     */
    updateOverlaysSymbol(ids: string[], symbol: IPointSymbol | ILineSymbol | IPolygonSymbol): IResult;
    /**
     * 按type更新覆盖物符号
     * @param types 类型数组
     * @param symbol 新的符号配置
     */
    updateOverlaysSymbolByType(types: string[], symbol: IPointSymbol | ILineSymbol | IPolygonSymbol): IResult;
    /**
     * 获取几何类型字符串
     * @param geometry
     */
    private getGeometryType;
    /**
     * 按id获取覆盖物Feature
     * @param id
     */
    getOverlayById(id: string): Feature<Geometry> | undefined;
    /**
     * 按type获取覆盖物Feature数组
     * @param type
     */
    getOverlaysByType(type: string): Feature<Geometry>[];
    /**
     * 隐藏图层
     */
    hideLayer(): void;
    /**
     * 显示图层
     */
    showLayer(): void;
    /**
     * 删除指定的Feature
     * @param features
     */
    /**
     * 查找屏幕坐标处的覆盖物
     * @param pixel 屏幕像素坐标 [x, y]
     */
    findFeaturesAtPixel(pixel: number[]): Feature<Geometry>[];
    /**
     * 销毁
     */
    destroy(): void;
    addMask(params: IMaskParam): void;
    removeMask(): void;
    /**
     * 按id定位覆盖物并闪烁
     * @param params 参数对象
     * @param params.id 覆盖物id
     * @param params.duration 闪烁持续时间（秒），不传则无限期
     * @param params.needZoom 是否需要缩放到覆盖物
     */
    flashOverlay(params: {
        id: string;
        duration?: number;
        needZoom?: boolean;
    }): void;
    /**
     * 停止指定覆盖物闪烁
     * @param params 参数对象
     * @param params.id 覆盖物id
     */
    stopFlash(params?: {
        id: string;
    }): void;
}
export {};
