2026-04-03 16:04:16 +08:00
|
|
|
import type { layer, MapInterface } from "./map.d";
|
2026-04-22 17:53:20 +08:00
|
|
|
// import { MapLeaflet } from "./map.leaflet";
|
2026-04-20 16:57:54 +08:00
|
|
|
import { MapOl } from "./map.ol";
|
2026-04-03 16:04:16 +08:00
|
|
|
|
|
|
|
|
interface MapClassInterface extends MapInterface {
|
|
|
|
|
layers: Map<string, layer>;
|
|
|
|
|
view: any;
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-20 16:57:54 +08:00
|
|
|
//描点参数
|
|
|
|
|
export type MDOptions = {
|
|
|
|
|
isAllowOverlap?: boolean; // 是否允许重叠
|
|
|
|
|
labelType?: number; // 标签类型
|
|
|
|
|
labelminZoom?: number; // 标签最小缩放级别
|
|
|
|
|
labelAltitude?: object; // 标签海拔
|
|
|
|
|
isRemove?: boolean; // 是否移除标签
|
|
|
|
|
};
|
|
|
|
|
|
2026-04-03 16:04:16 +08:00
|
|
|
export const mapServerBaseUrl = localStorage.getItem("gisurl") || "http://210.72.227.199:18084/";
|
|
|
|
|
|
|
|
|
|
export class MapClass implements MapClassInterface {
|
|
|
|
|
layers: Map<string, layer>;
|
|
|
|
|
view: any;
|
|
|
|
|
private static instance: MapClass;
|
|
|
|
|
private service: MapInterface;
|
|
|
|
|
|
2026-04-20 16:57:54 +08:00
|
|
|
constructor() {
|
|
|
|
|
this.layers = new Map();
|
|
|
|
|
this.view = null;
|
|
|
|
|
// this.service = new MapLeaflet();
|
|
|
|
|
this.service = new MapOl();
|
|
|
|
|
}
|
2026-04-03 16:04:16 +08:00
|
|
|
static getInstance(): MapClass {
|
|
|
|
|
if (!this.instance) {
|
|
|
|
|
this.instance = new MapClass();
|
|
|
|
|
}
|
|
|
|
|
return this.instance;
|
|
|
|
|
}
|
2026-04-20 16:57:54 +08:00
|
|
|
// 地图初始化
|
|
|
|
|
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)
|
|
|
|
|
}
|
2026-04-22 17:53:20 +08:00
|
|
|
mdLayerShowOrHidden(): void {
|
|
|
|
|
// layerType: String, key?: String, baseid: String, checked: boolean, isAll: boolean
|
|
|
|
|
// this.service.mdLayerShowOrHidden(layerType, key, baseid, checked, isAll)
|
2026-04-20 16:57:54 +08:00
|
|
|
}
|
|
|
|
|
// 添加基础数据图层
|
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
// 初始化加载描点数据
|
2026-04-22 17:53:20 +08:00
|
|
|
addInitDataLayer = (pointData: any[], layerType: any, mdoptions?: any) => {
|
|
|
|
|
return this.service.addInitDataLayer(pointData, layerType, mdoptions)
|
2026-04-20 16:57:54 +08:00
|
|
|
}
|
|
|
|
|
//切换底图
|
|
|
|
|
baseLayerSwitcher(key: string): void {
|
|
|
|
|
this.service.baseLayerSwitcher(key)
|
|
|
|
|
}
|
2026-04-03 16:04:16 +08:00
|
|
|
|
2026-04-20 16:57:54 +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)
|
2026-04-03 16:04:16 +08:00
|
|
|
}
|
2026-04-20 16:57:54 +08:00
|
|
|
/**
|
|
|
|
|
* 长度量算
|
|
|
|
|
*/
|
|
|
|
|
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
|
|
|
// 切换地图视图
|
|
|
|
|
switchView(): void {
|
|
|
|
|
// this.service.switchView()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 飞行到指定的点
|
|
|
|
|
fitBounds(): void {
|
|
|
|
|
// this.service.fitBounds(bounds)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 飞行到指定的点
|
|
|
|
|
flyTopanto(): void {
|
|
|
|
|
// this.service.flyTopanto(point)
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-03 16:04:16 +08:00
|
|
|
}
|