xgis-ol
Version:
基于openlayers + ol-ext库进行封装
268 lines (267 loc) • 7.13 kB
TypeScript
import { default as OLMap } from 'ol/Map';
import { default as View, ViewOptions } from 'ol/View';
import { default as Control } from 'ol/control/Control';
import { Coordinate } from 'ol/coordinate';
import { default as Interaction } from 'ol/interaction/Interaction';
import { MapEventArgs } from '../events';
import { Extent } from 'ol/extent';
import { default as BaseLayer } from 'ol/layer/Base';
import { default as Layer } from 'ol/layer/Layer';
import { ProjectionLike } from 'ol/proj';
import { RollSwipe } from '../controls';
import { default as LayerManager } from './LayerManager';
import { IControlOption, ILayerItem, IMapConfig } from './Models';
import { default as WMTSTool } from './WMTSTool';
import { default as PrintTool } from '../controls/PrintTool';
/**
* 封装地图工具类
*/
export default class XMap {
target: string;
private _TDTKeys;
map: OLMap;
/**
* 地图消息总线(内部+全局)
*/
mapEventBus: import('..').MapEventBusClass;
private isMainSync;
private digits;
/**
* 默认地图视图
*/
private defaultHomeView;
/**
* 地图所属组,默认组名为map
*/
private mapGroup;
private _targetContainer;
private postionStatusHTMLElement;
private postionStatus;
private currentPosition;
private positionProjection;
/**
* 图层管理对象,与图层管理树对应使用
*/
private layerManager;
private isInitSuccess;
private _WMTSTool;
/**
* 承载交互式组件的字段集合
*/
InteractionsDiction: Map<string, Interaction>;
ControlsDiction: Map<string, Control>;
/**
* 是否联网在线
*/
isInternet: boolean;
private _printTool;
/**
* 是否显示状态,响应式状态与地图相关
*/
mapMenuState: {
layerTree: boolean;
dataPanel: boolean;
location: boolean;
drawTool: boolean;
measureTool: boolean;
swipeTool: boolean;
otherTool: boolean;
printTool: boolean;
selectTool: boolean;
popupPanel: boolean;
tagState: boolean;
};
/**
* 根据配置初始化地图
* @param mapConfig
* @returns
*/
static initByMapConfig(mapConfig: IMapConfig): XMap;
constructor(target?: string, pmapGroup?: string, hasLayerManager?: boolean);
private mapPrj;
private pointerMoveHandler;
private onMapMoveEndHandler;
private refreshPostionStatus;
/**
* olXmap和xmapview
* 地图组件的外部容器ID
*/
get targetContainer(): string;
get CurrentPosition(): Coordinate;
/**
* 获得WMTSTool工具类型对象
*/
get WMTSTool(): WMTSTool;
/**
* 获取打印工具对象
*/
get PrintTool(): PrintTool;
/**
* 创建地图视图
* (先准备Projection,一般在OnMounted后加载)
* @param center
* @param zoom
* @param newPrj
* @returns
*/
initMapView(opt_options?: ViewOptions): View;
/**
* 一个天地图Key值(随机的一个)
*/
get TDTKey(): string;
set TDTKeys(value: Array<string>);
/**
* 添加在线图层(天地图、Arcgis、谷歌、Mapbox、Bing、高德、腾讯、百度)
* @param layerName
*/
addOnlineLayer(layerID: string, tdtLocalURL?: string): void;
/**
* 获得绑定图层管理对象
*/
get LayerManager(): LayerManager;
/**
* 移除图层
* @param map 地图对象
* @param targetLayer 当前图层
* @returns
*/
removeLayer(targetLayer: Layer): BaseLayer | undefined;
/**
* 修改图层的顺序
* @param map
* @param oldIndex 原顺序
* @param newIndex 新顺序
*/
changeLayerOrder(oldIndex: number, newIndex: number): void;
addDefaultControl(item: IControlOption): void;
addDefaultInteraction(item: IControlOption): void;
/**
* 注销
*/
dispose(): void;
/**
* 设置或更新地图视图
* @param view
*/
setView(view: View): void;
/**
* 修改地图投影
* @param prj 新投影对象
* @param newViewOptions 新视图ViewOptions,默认为空
*/
setProjection(prj: ProjectionLike, newViewOptions?: ViewOptions): void;
/**
* 地图视图
*/
get MapView(): View;
/**
* 注册地图的图层对象
* @param layeritem
*/
registerLayer(layer: Layer, layeritem: ILayerItem): void;
/**
* 按目标投影Extent范围进行定位
* @param targetExent 目标投影访问
*/
zoomTo(targetExent: Extent, proj?: ProjectionLike): void;
/**
* 图层的范围定位
* @param extent84
*/
zoomToExtent(extent84: Extent): void;
/**
* 缩放定位 中心点
* @param center84 中心点 84坐标
* @param level 级别(可选)
*/
zoomToCenter(center84: Coordinate, level?: number): void;
/**
* 返回初始地图视图
*/
goHomeView(): void;
newEvtArgs(data?: any, eventObject?: any): MapEventArgs;
/**
* 启用地图视图-同步
*/
enableMapSyncView(): void;
/**
* 取消地图视图-同步
*/
disableMapSyncView(): void;
private mapSyncView;
private mapSyncViewEnd;
/**地图原生事件绑定处理 */
/**
* 地图移动完
* @param evt
*/
private onMoveEnd;
private onResolutionChanged;
private swipe;
get RollSwipe(): RollSwipe;
DefaultInteractionKeys: {
FishEyeClip: string;
};
/**
* 添加交互式组件
* @param key 字段Key唯一
* @param control 交互式组件
* @returns
*/
addInteractionExt(key: string, control: Interaction): boolean;
/**
* 是否具有某个组件
* @param key 键唯一值
* @returns
*/
containsInteractionExt(key: string): boolean;
/**
* 获得某个交互式组件
* @param key 键唯一值
* @returns
*/
getInteractionExt(key: string): Interaction | undefined;
/**
* 移除某个交互组件
* @param key 键值唯一
*/
removeInteractionExt(key: string): void;
/**
* 清空交互式组件
*/
clearInteractionExt(): void;
DefaultControlKeys: {
overview: string;
target: string;
scale: string;
scaleline: string;
};
/**
* 添加交互式组件
* @param key 字段Key唯一
* @param control 交互式组件
* @returns
*/
addControlExt(key: string, control: Control): boolean;
/**
* 是否具有某个组件
* @param key 键唯一值
* @returns
*/
containsControlExt(key: string): boolean;
/**
* 获得某个交互式组件
* @param key 键唯一值
* @returns
*/
getControlExt(key: string): Control | undefined;
/**
* 移除某个交互组件
* @param key 键值唯一
*/
removeControlExt(key: string): void;
/**
* 清空交互式组件
*/
clearControlExt(): void;
}