2026-05-13 08:44:35 +08:00
|
|
|
import type { layer, MapInterface } from './map.d';
|
2026-04-22 17:53:20 +08:00
|
|
|
// import { MapLeaflet } from "./map.leaflet";
|
2026-05-13 08:44:35 +08:00
|
|
|
import { MapOl } from './map.ol';
|
2026-04-03 16:04:16 +08:00
|
|
|
|
|
|
|
|
interface MapClassInterface extends MapInterface {
|
2026-05-13 08:44:35 +08:00
|
|
|
layers: Map<string, layer>;
|
|
|
|
|
view: any;
|
2026-04-03 16:04:16 +08:00
|
|
|
}
|
|
|
|
|
|
2026-04-20 16:57:54 +08:00
|
|
|
//描点参数
|
|
|
|
|
export type MDOptions = {
|
|
|
|
|
isAllowOverlap?: boolean; // 是否允许重叠
|
|
|
|
|
labelType?: number; // 标签类型
|
|
|
|
|
labelminZoom?: number; // 标签最小缩放级别
|
|
|
|
|
labelAltitude?: object; // 标签海拔
|
|
|
|
|
isRemove?: boolean; // 是否移除标签
|
|
|
|
|
};
|
|
|
|
|
|
2026-05-13 08:44:35 +08:00
|
|
|
export const mapServerBaseUrl =
|
|
|
|
|
localStorage.getItem('gisurl') || 'http://210.72.227.199:18084/';
|
2026-04-03 16:04:16 +08:00
|
|
|
|
|
|
|
|
export class MapClass implements MapClassInterface {
|
2026-05-13 08:44:35 +08:00
|
|
|
layers: Map<string, layer>;
|
|
|
|
|
view: any;
|
|
|
|
|
private static instance: MapClass;
|
|
|
|
|
private service: MapInterface;
|
2026-04-03 16:04:16 +08:00
|
|
|
|
2026-05-13 08:44:35 +08:00
|
|
|
constructor() {
|
|
|
|
|
this.layers = new Map();
|
|
|
|
|
this.view = null;
|
|
|
|
|
// this.service = new MapLeaflet();
|
|
|
|
|
this.service = new MapOl();
|
|
|
|
|
}
|
|
|
|
|
static getInstance(): MapClass {
|
|
|
|
|
if (!this.instance) {
|
|
|
|
|
this.instance = new MapClass();
|
|
|
|
|
}
|
|
|
|
|
return this.instance;
|
|
|
|
|
}
|
|
|
|
|
// 地图初始化
|
|
|
|
|
init(container: HTMLElement, rectangle?: any): Promise<any> {
|
|
|
|
|
return this.service.init(container, rectangle).then(map => {
|
|
|
|
|
this.view = map;
|
|
|
|
|
return map;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// 基地面板控制
|
|
|
|
|
jdPanelControlShowAndHidden(baseid: String, isAll: boolean): void {
|
|
|
|
|
this.service.jdPanelControlShowAndHidden(baseid, isAll);
|
|
|
|
|
}
|
|
|
|
|
mdLayerShowOrHidden(): void {
|
|
|
|
|
// layerType: String, key?: String, baseid: String, checked: boolean, isAll: boolean
|
|
|
|
|
// this.service.mdLayerShowOrHidden(layerType, key, baseid, checked, isAll)
|
|
|
|
|
}
|
|
|
|
|
// 添加基础数据图层
|
|
|
|
|
addBaseDataLayer(layer: any): void {
|
|
|
|
|
return this.service.addBaseDataLayer(layer);
|
|
|
|
|
}
|
|
|
|
|
// 基础图层显示影隐藏方法
|
|
|
|
|
controlBaseLayerTreeShowAndHidden(
|
|
|
|
|
layerType: String,
|
|
|
|
|
key: String,
|
|
|
|
|
checked: boolean
|
|
|
|
|
) {
|
|
|
|
|
this.service.controlBaseLayerTreeShowAndHidden(layerType, key, checked);
|
|
|
|
|
}
|
|
|
|
|
// 图层树控制描点数据显示隐藏方法
|
|
|
|
|
mdLayerTreeShowOrHidden(layerType: String, checked?: boolean) {
|
|
|
|
|
this.service.mdLayerTreeShowOrHidden(layerType, checked);
|
|
|
|
|
}
|
|
|
|
|
// 初始化加载描点数据
|
|
|
|
|
addInitDataLayer = (pointData: any[], layerType: any, mdoptions?: any) => {
|
|
|
|
|
return this.service.addInitDataLayer(pointData, layerType, mdoptions);
|
|
|
|
|
};
|
|
|
|
|
//切换底图
|
|
|
|
|
baseLayerSwitcher(key: string): void {
|
|
|
|
|
this.service.baseLayerSwitcher(key);
|
|
|
|
|
}
|
2026-04-20 16:57:54 +08:00
|
|
|
|
2026-05-13 08:44:35 +08:00
|
|
|
// 添加梯级流域图
|
|
|
|
|
addTertiarybasinLayer(
|
|
|
|
|
layer: layer,
|
|
|
|
|
fillcolor: any,
|
|
|
|
|
outlineColor: any,
|
|
|
|
|
datas: any
|
|
|
|
|
): void {
|
|
|
|
|
this.service.addTertiarybasinLayer(layer, fillcolor, outlineColor, datas);
|
|
|
|
|
}
|
|
|
|
|
// 移除梯级流域图
|
|
|
|
|
removeTertiarybasinLayer(layer: layer): void {
|
|
|
|
|
this.service.removeTertiarybasinLayer?.(layer);
|
|
|
|
|
}
|
|
|
|
|
// 缩放
|
|
|
|
|
zoomToggle(type: 'out' | 'in') {
|
|
|
|
|
this.service.zoomToggle(type);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 长度量算
|
|
|
|
|
*/
|
|
|
|
|
lengthCalculate(): void {
|
|
|
|
|
this.service.lengthCalculate();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 面积量算
|
|
|
|
|
*/
|
|
|
|
|
areCalculate(): void {
|
|
|
|
|
this.service.areCalculate();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 移除量算结果
|
|
|
|
|
*/
|
|
|
|
|
removeQueryLayer(): void {
|
|
|
|
|
this.service.removeQueryLayer();
|
|
|
|
|
}
|
|
|
|
|
// 地图打印
|
|
|
|
|
mapOutPut() {
|
|
|
|
|
this.service.mapOutPut();
|
|
|
|
|
}
|
|
|
|
|
// 销毁地图
|
|
|
|
|
destroy(): void {
|
|
|
|
|
this.service.destroy();
|
|
|
|
|
}
|
2026-04-22 17:53:20 +08:00
|
|
|
|
2026-05-13 08:44:35 +08:00
|
|
|
// 切换地图视图
|
|
|
|
|
switchView(): void {
|
|
|
|
|
// this.service.switchView()
|
|
|
|
|
}
|
2026-04-22 17:53:20 +08:00
|
|
|
|
2026-05-13 08:44:35 +08:00
|
|
|
// 飞行到指定的点
|
|
|
|
|
fitBounds(): void {
|
|
|
|
|
// this.service.fitBounds(bounds)
|
|
|
|
|
}
|
2026-04-22 17:53:20 +08:00
|
|
|
|
2026-05-13 08:44:35 +08:00
|
|
|
// 飞行到指定的点
|
|
|
|
|
flyTopanto(position: number[], zoom: number): void {
|
|
|
|
|
this.service.flyTopanto(position, zoom);
|
|
|
|
|
}
|
2026-04-03 16:04:16 +08:00
|
|
|
}
|