xgis-ol
Version:
基于openlayers + ol-ext库进行封装
337 lines (336 loc) • 6.65 kB
TypeScript
import { Coordinate } from 'ol/coordinate';
import { ProjectionLike } from 'ol/proj';
import { ViewOptions } from 'ol/View';
/**
* 视图初始化参数(常用选项)
*/
export interface IViewOptions {
/**
* 视图的投影,默认为3857
*/
projection?: ProjectionLike;
/**
* 中心点(可以后设置)
*/
center?: Coordinate;
/**
* 默认级别
*/
zoom?: number;
/**
* 最小级别
*/
minZoom?: number;
/**
* 最大级别
*/
maxZoom?: number;
/**
* 视图范围
*/
extent?: number[];
}
/**
* 空间投影模型
*/
export interface IProjInfo {
/**
* epsg代码,例如 EPSG:3857
*/
epsg: string;
/**
* Extent范围,自定义投影必须得有
* [minx,miny,maxx,maxy]
*/
prjExtent?: [number, number, number, number];
/**
* Projection定义文本
*/
proj4?: string;
}
type IResolutions = {
[props: string]: number;
};
/**
* 瓦片切片方案TileGridSchema
* (用于初始化图层的投影和TileGrid)
*/
export interface ITileGridSchema {
/**
* rule规则名
*/
rule: string;
/**
* 起点坐标,一般是Extent的左上角
*/
origin?: number[];
/**
* Extent范围
* [minx, miny, maxx, maxy]
*/
extent?: number[];
/**
* 瓦片大小[width,height],默认为256,256
*/
tileSize: number | [number, number];
/**
* 级别-分辨率,字典对象
*/
resolutions: IResolutions;
}
/**
* 矢量切片TileJson模型
*/
export interface ITileJson {
version?: string;
name: string;
id: string;
tilejson: string;
description?: string;
attribution?: string;
legend?: string;
generator?: string;
minzoom: number;
maxzoom: number;
center?: number[];
/**
* 范围
* [minx,miny,maxx,maxy]
*/
bounds: [number, number, number, number];
masklevel?: null;
scheme: string;
format?: string;
crs: string | number;
crs_wkt?: string;
tile_grid: string;
tiles: string[];
grids?: string[];
data?: string[];
vector_layers: any[];
/**
* 默认为空,图层的投影信息(可空,外面统一处理)
*/
prjInfo?: IProjInfo;
/**
* 默认为空,图层对应的切片方案(可空,外面统一处理)
*/
tileSchema?: ITileGridSchema;
}
/**
* WMTS图层的信息
*/
export interface IWMTSLayerInfo {
name: string;
level?: number;
/**
* 图层范围(一般为经纬度)
* [minx,miny,maxx,maxy]
*/
bounds: [number, number, number, number];
/**
* 图层中心点(一般为经纬度)
* [x,y]
*/
center?: [number, number];
/**
* 图层最小级别
*/
minlevel: number;
/**
* 图层最大级别
*/
maxlevel: number;
/**
* 图层可访问地址(可空,外面统一传入)
*/
tileUrl?: string;
/**
* 图层的投影信息(可空,外面统一处理)
*/
prjInfo?: IProjInfo;
/**
* 图层对应的切片方案(可空,外面统一处理)
*/
tileSchema?: ITileGridSchema;
/**
* 样式,默认为default
*/
style?: string;
}
/**
* 图层信息
*/
export interface ILayerItem {
id?: string;
name: string;
alias?: string;
group?: string;
type?: string;
minZoom?: number;
maxZoom?: number;
visible?: boolean;
opacity?: number;
children?: ILayerItem[];
}
/**
* 图层的扩展属性
*/
export interface ILayerProperties {
lyrID: string;
lyrName: string;
lyrGroup?: string;
lyrType?: string;
[props: string]: any;
}
/**
* 地图图层类型
*/
export declare enum EnumLayerType {
'grid' = 0,
'mvt' = 1,
'symbol' = 2,
'vector' = 3,
'json' = 4
}
export interface IControlOption {
key: string;
type?: string;
options?: object | any;
}
/**
* 地图初始化配置文档
*/
export interface IMapConfig {
id: string;
group?: string;
hasLayerManager?: boolean;
isInternet?: boolean;
tdtXYZLocalURL?: string;
projInfo?: IProjInfo;
viewOptions: ViewOptions;
layers?: Array<string>;
controls?: Array<IControlOption>;
interactions?: Array<IControlOption>;
}
export declare const defaultMapConfig: {
id: string;
group: string;
hasLayerManager: boolean;
isInternet: boolean;
viewOptions: {
zoom: number;
center: number[];
minzoom: number;
maxzoom: number;
projection: string;
};
layers: string[];
controls: ({
key: string;
options: {
visible: boolean;
composit: string;
align?: undefined;
};
} | {
key: string;
options: {
align: string;
visible?: undefined;
composit?: undefined;
};
} | {
key: string;
options?: undefined;
})[];
interactions: {
key: string;
options: {
active: boolean;
radius: number;
layers: number[];
};
}[];
};
/**
* 地图
* 右键菜单对象接口
*/
export interface IMapContextItem {
id?: string;
label?: string;
icon?: string;
tag?: any;
children?: Array<IMapContextItem>;
}
export interface ILayersState {
mapEventBus?: any;
mapid: string;
mapgroup?: string;
swipeid?: string;
}
export interface ILayerProperty {
layerID: string;
propName: string;
propValue: any;
}
/**
* 图层右键菜单项
*/
export interface ILayerContextItem {
name?: string;
value?: string;
icon?: string;
tag?: any;
}
/**
* 用于控制地图功能菜单显隐
*/
export interface IMapMenuState {
/**
* 图层树是否显示
*/
layerTree: boolean;
/**
* 数据列表是否显示
*/
dataPanel: boolean;
/**
* 定位窗体是否显示
*/
location: boolean;
/**
* 绘制菜单是否显示
*/
drawTool: boolean;
/**
* 测量菜单是否显示
*/
measureTool: boolean;
/**
* 卷帘工具栏是否显示
*/
swipeTool: boolean;
/**
* 其他菜单是否显示
*/
otherTool: boolean;
/**
* 打印工具状态(备用)
*/
printTool: boolean;
/**
* 选择工具状态(备用)
*/
selectTool: boolean;
/**
* 弹框状态(备用)
*/
popupPanel: boolean;
/**
* 备用
*/
tagState: boolean;
}
export {};