UNPKG

xgis-ol

Version:

基于openlayers + ol-ext库进行封装

268 lines (267 loc) 7.13 kB
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; }