qm-map-maplibre-gl 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/qm-map.es.js +138 -147
- package/dist/qm-map.umd.js +4 -4
- package/dist/widget/Draw/index.d.ts +0 -1
- package/package.json +1 -2
package/dist/qm-map.es.js
CHANGED
|
@@ -3,14 +3,13 @@ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
|
3
3
|
import { LngLatBounds as u, Map as d } from "maplibre-gl";
|
|
4
4
|
import { createPortal as f } from "react-dom";
|
|
5
5
|
import p from "@mapbox/mapbox-gl-draw";
|
|
6
|
-
import m from "@turf/area";
|
|
7
6
|
//#region src/gis/widget/BaseWidget/index.tsx
|
|
8
|
-
var
|
|
7
|
+
var m = {
|
|
9
8
|
Swipe: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTk3MzE2MzYyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijk2NTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTUzNy4xIDkxMC4yYzAgNy44IDcuOSAwIDAgMHogbS00OS4yIDBjLTcuOSAwIDAgNy44IDAgMHogbTQzOC40LTY1Mi40Yy0yLjctMi41LTYuNC00LTEwLjEtNC0yLjggMC01LjQgMC44LTcuOCAyLjRsLTM3MS4zIDI0M1YxMjMuMWMwLTcuOC0xNi43IDAtMjQuNiAwLTcuOSAwLTI0LjYtNy44LTI0LjYgMHYzNzYuMmwtMzcxLjMtMjQzYy0yLjUtMS42LTUuMS0yLjQtNy45LTIuNC02LjkgMC0xNC40IDUuNC0xNC40IDE0LjJ2NDk3LjRjMCA4LjcgNy41IDE0LjEgMTQuNSAxNC4xIDIuNyAwIDUuNC0wLjggNy44LTIuNGwzNzEuMy0yNDN2Mzc2LjJoNDkuMlY1MzRsMzcxLjMgMjQzYzIuNSAxLjYgNS4xIDIuNCA3LjkgMi40IDMuNyAwIDcuNC0xLjUgMTAuMS00IDItMS44IDQuMy01LjEgNC4zLTEwLjFWMjY4YzAtNS4xLTIuNC04LjMtNC40LTEwLjJ6IiBmaWxsPSIjMTQwQTBBIiBwLWlkPSI5NjUzIj48L3BhdGg+PC9zdmc+",
|
|
10
9
|
Legend: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTEwNzAzMTU0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQ5NzIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTExMiAxMTJtMzIgMGw3MzYgMHEzMiAwIDMyIDMybDAgNzM2cTAgMzItMzIgMzJsLTczNiAwcS0zMiAwLTMyLTMybDAtNzM2cTAtMzIgMzItMzJaIiBmaWxsPSIjRkZGRkZGIiBwLWlkPSI0OTczIj48L3BhdGg+PHBhdGggZD0iTTEyOCA5Nmg3NjhhMzIgMzIgMCAwIDEgMzIgMzJ2NzY4YTMyIDMyIDAgMCAxLTMyIDMySDEyOGEzMiAzMiAwIDAgMS0zMi0zMlYxMjhhMzIgMzIgMCAwIDEgMzItMzJ6IG0wIDMydjc2OGg3NjhWMTI4SDEyOHoiIGZpbGw9IiM1RDZEN0UiIHAtaWQ9IjQ5NzQiPjwvcGF0aD48cGF0aCBkPSJNMjI0IDM4NGg2NHY2NEgyMjRWMzg0eiBtMCAxMjhoNjR2NjRIMjI0di02NHogbTAgMTI4aDY0djY0SDIyNHYtNjR6IG0wIDEyOGg2NHY2NEgyMjR2LTY0ek01NDQgMzg0aDY0djY0aC02NFYzODR6IG0wIDEyOGg2NHY2NGgtNjR2LTY0eiBtMCAxMjhoNjR2NjRoLTY0di02NHogbTAgMTI4aDY0djY0aC02NHYtNjR6IiBmaWxsPSIjODA4RkExIiBwLWlkPSI0OTc1Ij48L3BhdGg+PHBhdGggZD0iTTMyMCAzODRoMTYwdjY0SDMyMFYzODR6IG0wIDEyOGgxNjB2NjRIMzIwdi02NHogbTAgMTI4aDE2MHY2NEgzMjB2LTY0eiBtMCAxMjhoMTYwdjY0SDMyMHYtNjR6TTY0MCAzODRoMTYwdjY0aC0xNjBWMzg0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiIgZmlsbD0iI0FDQjRDMCIgcC1pZD0iNDk3NiI+PC9wYXRoPjxwYXRoIGQ9Ik0yMjQgMjI0aDU3NnY5NkgyMjR6IiBmaWxsPSIjMzBBRDk4IiBwLWlkPSI0OTc3Ij48L3BhdGg+PC9zdmc+",
|
|
11
10
|
LayerList: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTMyNjkyNzI3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijg5OTAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTg1Mi42IDQ2Mi45bDEyLjEgNy42YzI0LjggMTUuNiAzMi4zIDQ4LjMgMTYuNyA3My4yLTQuMiA2LjctOS45IDEyLjQtMTYuNyAxNi43TDU0MC40IDc2NC4xYy0xNy4zIDEwLjgtMzkuMiAxMC44LTU2LjQgMEwxNTkuMyA1NjBjLTI0LjgtMTUuNi0zMi4zLTQ4LjMtMTYuNy03My4yIDQuMi02LjcgOS45LTEyLjQgMTYuNy0xNi43bDEyLjEtNy42TDQ4My45IDY1OWMxNy4zIDEwLjggMzkuMiAxMC44IDU2LjQgMGwzMTIuMi0xOTYgMC4xLTAuMXogbTAgMTU2LjFsMTIuMSA3LjZjMjQuOCAxNS42IDMyLjMgNDguMyAxNi43IDczLjItNC4yIDYuNy05LjkgMTIuNC0xNi43IDE2LjdMNTQwLjQgOTIwLjJjLTE3LjMgMTAuOC0zOS4yIDEwLjggNTYuNCAwTDE1OS4zIDcxNi4xYy0yNC44LTE1LjYtMzIuMy00OC4zLTE2LjctNzMuMiA0LjItNi43IDkuOS0xMi40IDE2LjctMTYuN2wxMi4xLTcuNkw0ODMuOSA4MTVjMTcuMyAxMC44IDM5LjIgMTAuOCA1Ni40IDBsMzEyLjItMTk2aDAuMXpNNTQwIDEwNi40bDMyNC42IDIwNC4xYzI0LjggMTUuNiAzMi4zIDQ4LjMgMTYuNyA3My4yLTQuMiA2LjctOS45IDEyLjQtMTYuNyAxNi43TDU0MC40IDYwNGMtMTcuMyAxMC44LTM5LjIgMTAuOC01Ni40IDBMMTU5LjMgMzk5LjhjLTI0LjgtMTUuNi0zMi4zLTQ4LjMtMTYuNy03My4yIDQuMi02LjcgOS45LTEyLjQgMTYuNy0xNi43bDMyNC40LTIwMy43YzE3LjMtMTAuOCAzOS4yLTEwLjggNTYuNCAwbC0wLjEgMC4yeiIgcC1pZD0iODk5MSI+PC9wYXRoPjwvc3ZnPg==",
|
|
12
11
|
Print: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzc5NjgwOTI2ODcwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE2ODkiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTI5MS42MTk2NCAxMDI0aDQzOC43NThhNzIuOTAxIDcyLjkwMSAwIDAgMCA3MS41NTItNzQuMjUxVjczMS4wNDRIMjE5LjM5MjY0Vjk0OS43NUE3Mi45MDEgNzIuOTAxIDAgMCAwIDI5MS42MjA2NCAxMDI0ek03MzAuMzc3NjQgMC4wMDVIMjkxLjYyMDY0YTcxLjU1MSA3MS41NTEgMCAwIDAtNzIuMjI3IDY3LjUwMXYyMjIuMDhoNTgzLjIxMlY3Mi4yM0E3Mi4yMjYgNzIuMjI2IDAgMCAwIDczNS4xMDI2NCAwLjAwNXogbTE0Ny4xNTMgMjg5LjU4djc0LjkyN0gxNDUuODE2NjR2LTc0LjkyN0g3Mi4yMzk2NEE3My41NzYgNzMuNTc2IDAgMCAwIDAuMDEzNjQgMzY0LjUxMnY1MTMuMDFBNzIuOTAxIDcyLjkwMSAwIDAgMCA3MS41NjQ2NCA5NTEuMWg3NC4yNTJWNjU3LjQ2OEg4NzcuNTMwNjR2MjkyLjk1Nmg3NC4yNTJhNzMuNTc2IDczLjU3NiAwIDAgMCA3Mi4yMjYtNzIuOTAydi01MTMuMDFhNzQuOTI2IDc0LjkyNiAwIDAgMC03NC4yNTEtNzQuOTI3eiBtMCAyMjIuNzU1SDY1Ny40NzY2NHYtNzQuMjUySDg3Ny41MzA2NHoiIHAtaWQ9IjE2OTAiPjwvcGF0aD48L3N2Zz4="
|
|
13
|
-
},
|
|
12
|
+
}, h = t((e) => {
|
|
14
13
|
let { position: t, children: n, name: r, icon: i, width: a, height: s, openHandle: u } = e, [d, f] = o(!1), [p, m] = o(!1);
|
|
15
14
|
return /* @__PURE__ */ l("div", {
|
|
16
15
|
className: "maplibregl-control",
|
|
@@ -37,40 +36,40 @@ var h = {
|
|
|
37
36
|
});
|
|
38
37
|
//#endregion
|
|
39
38
|
//#region src/gis/utils.ts
|
|
40
|
-
function
|
|
39
|
+
function g(e, t = /* @__PURE__ */ new WeakMap()) {
|
|
41
40
|
if (typeof e != "object" || !e) return e;
|
|
42
41
|
if (t.has(e)) return t.get(e);
|
|
43
42
|
let n;
|
|
44
43
|
return e instanceof Date ? n = new Date(e.getTime()) : e instanceof RegExp ? (n = new RegExp(e.source, e.flags), n.lastIndex = e.lastIndex) : e instanceof Map ? (n = /* @__PURE__ */ new Map(), t.set(e, n), e.forEach((e, r) => {
|
|
45
|
-
n.set(
|
|
44
|
+
n.set(g(r, t), g(e, t));
|
|
46
45
|
})) : e instanceof Set ? (n = /* @__PURE__ */ new Set(), t.set(e, n), e.forEach((e) => {
|
|
47
|
-
n.add(
|
|
46
|
+
n.add(g(e, t));
|
|
48
47
|
})) : Array.isArray(e) ? (n = [], t.set(e, n), e.forEach((e, r) => {
|
|
49
|
-
n[r] =
|
|
48
|
+
n[r] = g(e, t);
|
|
50
49
|
})) : (n = Object.create(Object.getPrototypeOf(e)), t.set(e, n), Reflect.ownKeys(e).forEach((r) => {
|
|
51
50
|
let i = e[r];
|
|
52
|
-
n[r] =
|
|
51
|
+
n[r] = g(i, t);
|
|
53
52
|
})), n;
|
|
54
53
|
}
|
|
55
|
-
var
|
|
54
|
+
var _ = (e, t) => {
|
|
56
55
|
let n = null;
|
|
57
56
|
return (r) => {
|
|
58
57
|
n && clearTimeout(n), n = setTimeout(() => {
|
|
59
58
|
e(r);
|
|
60
59
|
}, t);
|
|
61
60
|
};
|
|
62
|
-
},
|
|
61
|
+
}, v = (e, t) => {
|
|
63
62
|
Array.isArray(t) && t.length > 0 && t.forEach((t) => {
|
|
64
|
-
e.push(t), t.layers instanceof Array &&
|
|
63
|
+
e.push(t), t.layers instanceof Array && v(e, t.layers);
|
|
65
64
|
});
|
|
66
|
-
},
|
|
65
|
+
}, y = (e, t) => {
|
|
67
66
|
t[0] instanceof Array ? t.forEach((t) => {
|
|
68
|
-
t[0] instanceof Array ?
|
|
67
|
+
t[0] instanceof Array ? y(e, t) : e.extend(t);
|
|
69
68
|
}) : e.extend(t);
|
|
70
|
-
},
|
|
69
|
+
}, b = (e) => {
|
|
71
70
|
let t = new u();
|
|
72
|
-
return
|
|
73
|
-
},
|
|
71
|
+
return y(t, e.geometry.coordinates), t;
|
|
72
|
+
}, x = class {
|
|
74
73
|
_options;
|
|
75
74
|
get options() {
|
|
76
75
|
return this._options;
|
|
@@ -91,7 +90,7 @@ var v = (e, t) => {
|
|
|
91
90
|
let n = this._options.id + "-ds";
|
|
92
91
|
t && e.removeSource(n), this._options.isAdd = !1;
|
|
93
92
|
}
|
|
94
|
-
},
|
|
93
|
+
}, S = class extends x {
|
|
95
94
|
constructor(e) {
|
|
96
95
|
super(e), this._options = e;
|
|
97
96
|
}
|
|
@@ -107,7 +106,7 @@ var v = (e, t) => {
|
|
|
107
106
|
e.addLayer(n, t);
|
|
108
107
|
}
|
|
109
108
|
}
|
|
110
|
-
},
|
|
109
|
+
}, C = class e {
|
|
111
110
|
_options;
|
|
112
111
|
get options() {
|
|
113
112
|
return this._options;
|
|
@@ -119,7 +118,7 @@ var v = (e, t) => {
|
|
|
119
118
|
constructor(t) {
|
|
120
119
|
this._options = t, t.layers.forEach((t) => {
|
|
121
120
|
let n;
|
|
122
|
-
n = "layers" in t ? new e(t) : new
|
|
121
|
+
n = "layers" in t ? new e(t) : new S(t), this._layers.push(n);
|
|
123
122
|
});
|
|
124
123
|
}
|
|
125
124
|
onAdd(e, t) {
|
|
@@ -136,12 +135,12 @@ var v = (e, t) => {
|
|
|
136
135
|
let e = this._layers.findIndex((e) => e.options.isAdd) > -1;
|
|
137
136
|
this._options.isAdd = e;
|
|
138
137
|
}
|
|
139
|
-
},
|
|
138
|
+
}, w = {
|
|
140
139
|
MAPINITED: "MAPINITED",
|
|
141
140
|
MAPCLICKED: "MAPCLICKED",
|
|
142
141
|
MAPLAYERCHANGED: "MAPLAYERCHANGED",
|
|
143
142
|
MAPDESTRORY: "MAPDESTRORY"
|
|
144
|
-
},
|
|
143
|
+
}, T = class extends d {
|
|
145
144
|
_id;
|
|
146
145
|
get id() {
|
|
147
146
|
return this._id;
|
|
@@ -163,7 +162,7 @@ var v = (e, t) => {
|
|
|
163
162
|
return this._layers;
|
|
164
163
|
}
|
|
165
164
|
constructor(e) {
|
|
166
|
-
super(e), this._options = e, this._id = e.id, this._mapLayerSetting = [], this.fire(
|
|
165
|
+
super(e), this._options = e, this._id = e.id, this._mapLayerSetting = [], this.fire(w.MAPINITED, { map: this });
|
|
167
166
|
}
|
|
168
167
|
getLayerWrapper(e, t) {
|
|
169
168
|
for (let n of e) if (n.options.id === t) return n;
|
|
@@ -173,13 +172,13 @@ var v = (e, t) => {
|
|
|
173
172
|
}
|
|
174
173
|
}
|
|
175
174
|
addLayerWrapper(e, t) {
|
|
176
|
-
e.onAdd(this, t), this.fire(
|
|
175
|
+
e.onAdd(this, t), this.fire(w.MAPLAYERCHANGED, {
|
|
177
176
|
map: this,
|
|
178
177
|
layer: e
|
|
179
178
|
});
|
|
180
179
|
}
|
|
181
180
|
removeLayerWrapper(e, t) {
|
|
182
|
-
e.onRemove(this, t), this.fire(
|
|
181
|
+
e.onRemove(this, t), this.fire(w.MAPLAYERCHANGED, {
|
|
183
182
|
map: this,
|
|
184
183
|
layer: e
|
|
185
184
|
});
|
|
@@ -187,7 +186,7 @@ var v = (e, t) => {
|
|
|
187
186
|
load(e) {
|
|
188
187
|
this._mapLayerSetting = e, e.forEach((e) => {
|
|
189
188
|
let t;
|
|
190
|
-
t = "layers" in e ? new
|
|
189
|
+
t = "layers" in e ? new C(e) : new S(e), this.addLayerWrapper(t), this._layers.push(t);
|
|
191
190
|
});
|
|
192
191
|
}
|
|
193
192
|
selectFeature(e) {
|
|
@@ -219,22 +218,22 @@ var v = (e, t) => {
|
|
|
219
218
|
}
|
|
220
219
|
getLayerList() {
|
|
221
220
|
let e = [];
|
|
222
|
-
return
|
|
221
|
+
return v(e, this.layers), e;
|
|
223
222
|
}
|
|
224
223
|
destory() {
|
|
225
|
-
this.fire(
|
|
224
|
+
this.fire(w.MAPDESTRORY, { map: this }), this.remove();
|
|
226
225
|
}
|
|
227
|
-
},
|
|
228
|
-
let e = r(
|
|
226
|
+
}, E = e({ map: null }), D = () => {
|
|
227
|
+
let e = r(E);
|
|
229
228
|
if (!e) throw Error("只能在函数组件中使用");
|
|
230
229
|
return e;
|
|
231
230
|
};
|
|
232
231
|
//#endregion
|
|
233
232
|
//#region src/gis/widget/MapWidget/index.tsx
|
|
234
|
-
function
|
|
233
|
+
function O(e) {
|
|
235
234
|
let { mapOptions: t, mapLayerSettting: n, children: r, onMapLoad: s, className: l } = e, u = a(null), [d, f] = o(!1), { current: p } = a({ map: null });
|
|
236
235
|
return i(() => {
|
|
237
|
-
let e = new
|
|
236
|
+
let e = new T({
|
|
238
237
|
pitch: 0,
|
|
239
238
|
bearing: 0,
|
|
240
239
|
doubleClickZoom: !1,
|
|
@@ -250,12 +249,12 @@ function k(e) {
|
|
|
250
249
|
layers: []
|
|
251
250
|
}
|
|
252
251
|
}), r = () => {
|
|
253
|
-
e.load(
|
|
252
|
+
e.load(g(n)), f(!0), s?.(e), p && (p.map = e);
|
|
254
253
|
};
|
|
255
254
|
e.on("load", r), e.on("click", () => {
|
|
256
255
|
console.log("center:", e.getCenter(), "zoom:", e.getZoom());
|
|
257
256
|
});
|
|
258
|
-
let i =
|
|
257
|
+
let i = _(() => {
|
|
259
258
|
e.resize();
|
|
260
259
|
}, 10);
|
|
261
260
|
return new ResizeObserver(i).observe(u?.current), () => {
|
|
@@ -265,34 +264,34 @@ function k(e) {
|
|
|
265
264
|
ref: u,
|
|
266
265
|
className: l ?? "map-wrapper",
|
|
267
266
|
id: "map-wrapper",
|
|
268
|
-
children: d && p && /* @__PURE__ */ c(
|
|
267
|
+
children: d && p && /* @__PURE__ */ c(E.Provider, {
|
|
269
268
|
value: p,
|
|
270
269
|
children: r
|
|
271
270
|
})
|
|
272
271
|
});
|
|
273
272
|
}
|
|
274
|
-
var
|
|
273
|
+
var k = t(O), A = (e, t) => {
|
|
275
274
|
for (let n of e) {
|
|
276
275
|
if (n.key === t) return n;
|
|
277
276
|
if (n.children) {
|
|
278
|
-
let e =
|
|
277
|
+
let e = A(n.children, t);
|
|
279
278
|
if (e) return e;
|
|
280
279
|
}
|
|
281
280
|
}
|
|
282
281
|
return null;
|
|
283
|
-
},
|
|
282
|
+
}, j = (e) => {
|
|
284
283
|
let t = [];
|
|
285
284
|
return e.children && e.children.length > 0 && e.children.forEach((e) => {
|
|
286
|
-
t.push(e.key), t.push(...
|
|
285
|
+
t.push(e.key), t.push(...j(e));
|
|
287
286
|
}), t;
|
|
288
|
-
},
|
|
289
|
-
if (
|
|
290
|
-
let n =
|
|
287
|
+
}, M = (e) => !e.children || e.children.length === 0, N = (e, t) => t.includes(e.key), P = (e, t) => {
|
|
288
|
+
if (M(e)) return !1;
|
|
289
|
+
let n = j(e);
|
|
291
290
|
if (n.length === 0) return !1;
|
|
292
291
|
let r = n.filter((e) => t.includes(e));
|
|
293
292
|
return r.length > 0 && r.length < n.length;
|
|
294
|
-
},
|
|
295
|
-
let { node: t, level: n, checkedKeys: r, checkable: i, onCheck: a } = e, [s, u] = o(!0), d = !
|
|
293
|
+
}, F = t((e) => {
|
|
294
|
+
let { node: t, level: n, checkedKeys: r, checkable: i, onCheck: a } = e, [s, u] = o(!0), d = !M(t), f = N(t, r), p = P(t, r);
|
|
296
295
|
return /* @__PURE__ */ l("div", {
|
|
297
296
|
className: "qm-tree-node",
|
|
298
297
|
children: [/* @__PURE__ */ l("div", {
|
|
@@ -336,7 +335,7 @@ var A = t(k), j = (e, t) => {
|
|
|
336
335
|
]
|
|
337
336
|
}), d && s && /* @__PURE__ */ c("div", {
|
|
338
337
|
className: "qm-tree-children",
|
|
339
|
-
children: t.children.map((e) => /* @__PURE__ */ c(
|
|
338
|
+
children: t.children.map((e) => /* @__PURE__ */ c(F, {
|
|
340
339
|
node: e,
|
|
341
340
|
level: n + 1,
|
|
342
341
|
checkedKeys: r,
|
|
@@ -345,16 +344,16 @@ var A = t(k), j = (e, t) => {
|
|
|
345
344
|
}, e.key))
|
|
346
345
|
})]
|
|
347
346
|
});
|
|
348
|
-
}),
|
|
347
|
+
}), I = t((e) => {
|
|
349
348
|
let { treeData: t, checkable: r = !1, checkedKeys: i, onCheck: a, style: s } = e, [l, u] = o([]), d = i !== void 0, f = d ? i : l, p = (e, n) => {
|
|
350
|
-
let r =
|
|
349
|
+
let r = A(t, n);
|
|
351
350
|
if (!r) return e;
|
|
352
351
|
let i = e.includes(n), a;
|
|
353
352
|
if (i) {
|
|
354
|
-
let t =
|
|
353
|
+
let t = j(r), i = new Set([n, ...t]);
|
|
355
354
|
a = e.filter((e) => !i.has(e));
|
|
356
355
|
} else {
|
|
357
|
-
let t =
|
|
356
|
+
let t = j(r);
|
|
358
357
|
a = Array.from(new Set([
|
|
359
358
|
...e,
|
|
360
359
|
n,
|
|
@@ -379,7 +378,7 @@ var A = t(k), j = (e, t) => {
|
|
|
379
378
|
return /* @__PURE__ */ c("div", {
|
|
380
379
|
className: "qm-tree",
|
|
381
380
|
style: s,
|
|
382
|
-
children: t.map((e) => /* @__PURE__ */ c(
|
|
381
|
+
children: t.map((e) => /* @__PURE__ */ c(F, {
|
|
383
382
|
node: e,
|
|
384
383
|
level: 0,
|
|
385
384
|
checkedKeys: f,
|
|
@@ -387,8 +386,8 @@ var A = t(k), j = (e, t) => {
|
|
|
387
386
|
onCheck: m
|
|
388
387
|
}, e.key))
|
|
389
388
|
});
|
|
390
|
-
}),
|
|
391
|
-
let [t, r] = o([]), { map: a } =
|
|
389
|
+
}), L = t((e) => {
|
|
390
|
+
let [t, r] = o([]), { map: a } = D(), [s, l] = o([]), u = n((e, t) => {
|
|
392
391
|
let n, r = [];
|
|
393
392
|
return e.forEach((e) => {
|
|
394
393
|
n = void 0, n = "layers" in e && e.options.type === "logicGroup" ? {
|
|
@@ -427,19 +426,19 @@ var A = t(k), j = (e, t) => {
|
|
|
427
426
|
let e = () => {
|
|
428
427
|
let e = [];
|
|
429
428
|
l(a ? u(a.layers, e) : []), r(e);
|
|
430
|
-
}, t =
|
|
429
|
+
}, t = _(() => {
|
|
431
430
|
e();
|
|
432
431
|
}, 300);
|
|
433
|
-
return a?.on(
|
|
434
|
-
a?.off(
|
|
432
|
+
return a?.on(w.MAPLAYERCHANGED, t), e(), () => {
|
|
433
|
+
a?.off(w.MAPLAYERCHANGED, t);
|
|
435
434
|
};
|
|
436
|
-
}, []), /* @__PURE__ */ c(
|
|
435
|
+
}, []), /* @__PURE__ */ c(h, {
|
|
437
436
|
name: "图层控制",
|
|
438
437
|
position: e.position,
|
|
439
|
-
icon:
|
|
438
|
+
icon: m.LayerList,
|
|
440
439
|
width: 200,
|
|
441
440
|
height: t.length * 28 < 280 ? 280 : t.length * 28,
|
|
442
|
-
children: /* @__PURE__ */ c(
|
|
441
|
+
children: /* @__PURE__ */ c(I, {
|
|
443
442
|
checkable: !0,
|
|
444
443
|
checkedKeys: t,
|
|
445
444
|
onCheck: (e) => d(e),
|
|
@@ -452,8 +451,8 @@ var A = t(k), j = (e, t) => {
|
|
|
452
451
|
}
|
|
453
452
|
})
|
|
454
453
|
});
|
|
455
|
-
}),
|
|
456
|
-
let { map: t } =
|
|
454
|
+
}), R = t((e) => {
|
|
455
|
+
let { map: t } = D(), [r, a] = o(), [s, u] = o(0), d = n((e, n, r) => {
|
|
457
456
|
let i;
|
|
458
457
|
e.forEach((e) => {
|
|
459
458
|
if (i = void 0, "layers" in e && !e.options.legend) d(e.layers, n, r);
|
|
@@ -508,16 +507,16 @@ var A = t(k), j = (e, t) => {
|
|
|
508
507
|
let e = () => {
|
|
509
508
|
let e = [], n = [];
|
|
510
509
|
d(t.layers, e, n), a(n), u(e.reduce((e, t) => e + t, 0) + 40);
|
|
511
|
-
}, n =
|
|
510
|
+
}, n = _(() => {
|
|
512
511
|
e();
|
|
513
512
|
}, 200);
|
|
514
|
-
return t?.on(
|
|
515
|
-
t?.off(
|
|
513
|
+
return t?.on(w.MAPLAYERCHANGED, n), e(), () => {
|
|
514
|
+
t?.off(w.MAPLAYERCHANGED, n);
|
|
516
515
|
};
|
|
517
|
-
}, []), /* @__PURE__ */ c(
|
|
516
|
+
}, []), /* @__PURE__ */ c(h, {
|
|
518
517
|
name: "图例",
|
|
519
518
|
position: e.position,
|
|
520
|
-
icon:
|
|
519
|
+
icon: m.Legend,
|
|
521
520
|
width: 180,
|
|
522
521
|
height: s,
|
|
523
522
|
children: /* @__PURE__ */ c("div", {
|
|
@@ -525,12 +524,12 @@ var A = t(k), j = (e, t) => {
|
|
|
525
524
|
children: r
|
|
526
525
|
})
|
|
527
526
|
});
|
|
528
|
-
}),
|
|
527
|
+
}), z = {
|
|
529
528
|
JPEG: "jpg",
|
|
530
529
|
PNG: "png",
|
|
531
530
|
PDF: "pdf",
|
|
532
531
|
SVG: "svg"
|
|
533
|
-
},
|
|
532
|
+
}, B = { mm: "mm" }, V = {
|
|
534
533
|
A2: [594, 420],
|
|
535
534
|
A3: [420, 297],
|
|
536
535
|
A4: [297, 210],
|
|
@@ -542,16 +541,16 @@ var A = t(k), j = (e, t) => {
|
|
|
542
541
|
B5: [250, 176],
|
|
543
542
|
B6: [176, 125],
|
|
544
543
|
Letter: [279, 216]
|
|
545
|
-
},
|
|
544
|
+
}, H = {
|
|
546
545
|
横向: "landscape",
|
|
547
546
|
纵向: "portrait"
|
|
548
|
-
},
|
|
547
|
+
}, U = {
|
|
549
548
|
72: 72,
|
|
550
549
|
96: 96,
|
|
551
550
|
200: 200,
|
|
552
551
|
300: 300,
|
|
553
552
|
400: 400
|
|
554
|
-
},
|
|
553
|
+
}, W = class {
|
|
555
554
|
map;
|
|
556
555
|
svgCanvas;
|
|
557
556
|
constructor(e) {
|
|
@@ -569,14 +568,14 @@ var A = t(k), j = (e, t) => {
|
|
|
569
568
|
destroy() {
|
|
570
569
|
this.svgCanvas?.remove(), this.svgCanvas = null, this.map = null;
|
|
571
570
|
}
|
|
572
|
-
},
|
|
571
|
+
}, G = class {
|
|
573
572
|
map;
|
|
574
573
|
svgCanvas;
|
|
575
574
|
path;
|
|
576
575
|
constructor(e) {
|
|
577
576
|
this.map = e, this.svgCanvas = null, this.path = null;
|
|
578
577
|
}
|
|
579
|
-
updateArea(e, t, n =
|
|
578
|
+
updateArea(e, t, n = B.mm) {
|
|
580
579
|
if (!this.map || !this.svgCanvas) return;
|
|
581
580
|
let r = this.map.getCanvas().clientWidth, i = this.map.getCanvas().clientHeight, a = this.toPixels(e, n), o = this.toPixels(t, n), s = r / a, c = i / o, l = Math.min(s, c, 1), u = a * l, d = o * l, f = (r - u) / 2, p = (i - d) / 2, m = f + u, h = p + d, g = `M 0 0 L ${r} 0 L ${r} ${i} L 0 ${i} Z M ${f} ${p} L ${m} ${p} L ${m} ${h} L ${f} ${h} Z`;
|
|
582
581
|
this.path?.setAttribute("d", g);
|
|
@@ -592,9 +591,9 @@ var A = t(k), j = (e, t) => {
|
|
|
592
591
|
this.svgCanvas?.remove(), this.svgCanvas = null, this.path = null, this.map = null;
|
|
593
592
|
}
|
|
594
593
|
toPixels(e, t) {
|
|
595
|
-
return t ===
|
|
594
|
+
return t === B.mm ? 96 / 25.4 * e : 96 * e;
|
|
596
595
|
}
|
|
597
|
-
},
|
|
596
|
+
}, K = class {
|
|
598
597
|
toPNG(e, t) {
|
|
599
598
|
e.toBlob((e) => {
|
|
600
599
|
if (e) {
|
|
@@ -611,19 +610,19 @@ var A = t(k), j = (e, t) => {
|
|
|
611
610
|
let a = r.toDataURL("image/jpeg", Math.max(0, Math.min(1, n))), o = document.createElement("a");
|
|
612
611
|
o.href = a, o.download = t, o.click();
|
|
613
612
|
}
|
|
614
|
-
},
|
|
615
|
-
image:
|
|
613
|
+
}, q = "<svg width=\"800px\" height=\"800px\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\" class=\"iconify iconify--gis\" preserveAspectRatio=\"xMidYMid meet\"><path d=\"M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z\" fill=\"none\" stroke=\"white\" stroke-width=\"1.5\"/><path d=\"M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z\" fill=\"#000000\" fill-rule=\"evenodd\"></path></svg>", J = {
|
|
614
|
+
image: q,
|
|
616
615
|
imageName: "gl-export-north-icon",
|
|
617
616
|
imageSizeFraction: .05,
|
|
618
617
|
visibility: "visible",
|
|
619
618
|
position: "top-right"
|
|
620
|
-
},
|
|
619
|
+
}, Y = class {
|
|
621
620
|
options;
|
|
622
621
|
constructor(e) {
|
|
623
622
|
this.options = {
|
|
624
|
-
...
|
|
623
|
+
...J,
|
|
625
624
|
...e,
|
|
626
|
-
image: e?.image ??
|
|
625
|
+
image: e?.image ?? q
|
|
627
626
|
};
|
|
628
627
|
}
|
|
629
628
|
async addToMap(e, t, n) {
|
|
@@ -698,19 +697,19 @@ var A = t(k), j = (e, t) => {
|
|
|
698
697
|
image: e.image ?? this.options.image
|
|
699
698
|
};
|
|
700
699
|
}
|
|
701
|
-
},
|
|
700
|
+
}, X = {
|
|
702
701
|
"circle-radius": 8,
|
|
703
702
|
"circle-color": "red",
|
|
704
703
|
"circle-stroke-width": 1,
|
|
705
704
|
"circle-stroke-color": "black"
|
|
706
|
-
},
|
|
705
|
+
}, ee = "maplibregl-marker", te = class {
|
|
707
706
|
sourceMap;
|
|
708
707
|
renderMap;
|
|
709
708
|
markerClassName;
|
|
710
709
|
markerCirclePaint;
|
|
711
710
|
constructor(e, t, n) {
|
|
712
|
-
this.sourceMap = e, this.renderMap = t, this.markerClassName = n?.markerClassName ??
|
|
713
|
-
...
|
|
711
|
+
this.sourceMap = e, this.renderMap = t, this.markerClassName = n?.markerClassName ?? ee, this.markerCirclePaint = {
|
|
712
|
+
...X,
|
|
714
713
|
...n?.markerCirclePaint
|
|
715
714
|
};
|
|
716
715
|
}
|
|
@@ -743,7 +742,7 @@ var A = t(k), j = (e, t) => {
|
|
|
743
742
|
}
|
|
744
743
|
return !0;
|
|
745
744
|
}
|
|
746
|
-
},
|
|
745
|
+
}, ne = class {
|
|
747
746
|
width;
|
|
748
747
|
height;
|
|
749
748
|
unit;
|
|
@@ -755,7 +754,7 @@ var A = t(k), j = (e, t) => {
|
|
|
755
754
|
a.href = i, a.download = t, a.click(), URL.revokeObjectURL(i);
|
|
756
755
|
}
|
|
757
756
|
buildPDF(e) {
|
|
758
|
-
let t = this.unit ===
|
|
757
|
+
let t = this.unit === B.mm ? this.width * 2.83465 : this.width * 72, n = this.unit === B.mm ? this.height * 2.83465 : this.height * 72, r = document.createElement("canvas");
|
|
759
758
|
r.width = e.width, r.height = e.height;
|
|
760
759
|
let i = r.getContext("2d");
|
|
761
760
|
i && (i.fillStyle = "#FFFFFF", i.fillRect(0, 0, r.width, r.height), i.drawImage(e, 0, 0));
|
|
@@ -789,7 +788,7 @@ var A = t(k), j = (e, t) => {
|
|
|
789
788
|
for (let e of S) w.set(e, T), T += e.length;
|
|
790
789
|
return w.buffer;
|
|
791
790
|
}
|
|
792
|
-
},
|
|
791
|
+
}, re = class {
|
|
793
792
|
toSVG(e, t, n, r, i, a) {
|
|
794
793
|
let o = e.toDataURL("image/png"), s = i === "mm" ? a / 25.4 : a, c = s * n, l = s * r, u = `
|
|
795
794
|
<svg xmlns="http://www.w3.org/2000/svg"
|
|
@@ -803,7 +802,7 @@ var A = t(k), j = (e, t) => {
|
|
|
803
802
|
</svg>`, d = `data:application/xml,${encodeURIComponent(u)}`, f = document.createElement("a");
|
|
804
803
|
f.href = d, f.download = t, f.click();
|
|
805
804
|
}
|
|
806
|
-
},
|
|
805
|
+
}, ie = class {
|
|
807
806
|
map;
|
|
808
807
|
width;
|
|
809
808
|
height;
|
|
@@ -814,7 +813,7 @@ var A = t(k), j = (e, t) => {
|
|
|
814
813
|
northIcon;
|
|
815
814
|
northIconOptions;
|
|
816
815
|
markerOptions;
|
|
817
|
-
constructor(e, t, n, r, i =
|
|
816
|
+
constructor(e, t, n, r, i = B.mm, a) {
|
|
818
817
|
this.map = e, this.width = t[0], this.height = t[1], this.dpi = n, this.format = r, this.unit = i, this.jpegQuality = a?.jpegQuality ?? .85, this.northIcon = a?.northIcon ?? !1, this.northIconOptions = a?.northIconOptions, this.markerOptions = a?.markerOptions ?? {};
|
|
819
818
|
}
|
|
820
819
|
generate(e) {
|
|
@@ -851,37 +850,37 @@ var A = t(k), j = (e, t) => {
|
|
|
851
850
|
setTimeout(e, 200);
|
|
852
851
|
});
|
|
853
852
|
o.once("idle", async () => {
|
|
854
|
-
await c(), this.northIcon && (await new
|
|
853
|
+
await c(), this.northIcon && (await new Y(this.northIconOptions).addToMap(o, this.width, this.height), await new Promise((e) => {
|
|
855
854
|
o.once("idle", () => {
|
|
856
855
|
setTimeout(e, 200);
|
|
857
856
|
});
|
|
858
|
-
})), new
|
|
857
|
+
})), new te(this.map, o, this.markerOptions).renderMarkers() && await new Promise((e) => {
|
|
859
858
|
o.once("idle", () => {
|
|
860
859
|
setTimeout(e, 200);
|
|
861
860
|
});
|
|
862
861
|
});
|
|
863
862
|
let r = o.getCanvas(), i = r.getContext("webgl") || r.getContext("webgl2");
|
|
864
863
|
i && i.readPixels(0, 0, 1, 1, i.RGBA, i.UNSIGNED_BYTE, new Uint8Array(4));
|
|
865
|
-
let a = `map.${this.format}`, s = new
|
|
864
|
+
let a = `map.${this.format}`, s = new K();
|
|
866
865
|
switch (this.format) {
|
|
867
|
-
case
|
|
866
|
+
case z.PNG:
|
|
868
867
|
s.toPNG(r, a);
|
|
869
868
|
break;
|
|
870
|
-
case
|
|
869
|
+
case z.JPEG:
|
|
871
870
|
s.toJPEG(r, a, this.jpegQuality);
|
|
872
871
|
break;
|
|
873
|
-
case
|
|
874
|
-
new
|
|
872
|
+
case z.PDF:
|
|
873
|
+
new ne(this.width, this.height, this.unit).generate(r, a);
|
|
875
874
|
break;
|
|
876
|
-
case
|
|
877
|
-
new
|
|
875
|
+
case z.SVG:
|
|
876
|
+
new re().toSVG(r, a, this.width, this.height, this.unit, this.dpi);
|
|
878
877
|
break;
|
|
879
878
|
}
|
|
880
879
|
o.remove(), n.remove(), Object.defineProperty(window, "devicePixelRatio", { get: () => t }), this.hideLoading(), e?.();
|
|
881
880
|
});
|
|
882
881
|
}
|
|
883
882
|
toPixels(e) {
|
|
884
|
-
return this.unit ===
|
|
883
|
+
return this.unit === B.mm ? 96 / 25.4 * e : 96 * e;
|
|
885
884
|
}
|
|
886
885
|
showLoading() {
|
|
887
886
|
let e = document.createElement("div");
|
|
@@ -890,18 +889,18 @@ var A = t(k), j = (e, t) => {
|
|
|
890
889
|
hideLoading() {
|
|
891
890
|
document.querySelector(".qm-print-loading-overlay")?.remove();
|
|
892
891
|
}
|
|
893
|
-
},
|
|
894
|
-
let { map: t } =
|
|
895
|
-
PageSize:
|
|
896
|
-
PageOrientation:
|
|
897
|
-
Format:
|
|
898
|
-
DPI:
|
|
892
|
+
}, ae = t((e) => {
|
|
893
|
+
let { map: t } = D(), [r, u] = o(!1), [d, f] = o({
|
|
894
|
+
PageSize: V.A4,
|
|
895
|
+
PageOrientation: H.横向,
|
|
896
|
+
Format: z.PDF,
|
|
897
|
+
DPI: U[300],
|
|
899
898
|
Crosshair: !0,
|
|
900
899
|
PrintableArea: !0
|
|
901
|
-
}), p = a(null),
|
|
900
|
+
}), p = a(null), g = a(null);
|
|
902
901
|
i(() => {
|
|
903
|
-
if (t) return r ? (d.Crosshair && (p.current = new
|
|
904
|
-
p.current?.destroy(),
|
|
902
|
+
if (t) return r ? (d.Crosshair && (p.current = new W(t), p.current.create()), d.PrintableArea && (g.current = new G(t), g.current.create()), _()) : (p.current?.destroy(), p.current = null, g.current?.destroy(), g.current = null), () => {
|
|
903
|
+
p.current?.destroy(), g.current?.destroy();
|
|
905
904
|
};
|
|
906
905
|
}, [
|
|
907
906
|
t,
|
|
@@ -912,13 +911,13 @@ var A = t(k), j = (e, t) => {
|
|
|
912
911
|
d.PageOrientation
|
|
913
912
|
]);
|
|
914
913
|
let _ = n(() => {
|
|
915
|
-
if (!
|
|
914
|
+
if (!g.current) return;
|
|
916
915
|
let e = d.PageSize;
|
|
917
|
-
d.PageOrientation ===
|
|
916
|
+
d.PageOrientation === H.纵向 ? g.current.updateArea(e[1], e[0]) : g.current.updateArea(e[0], e[1]);
|
|
918
917
|
}, [d.PageSize, d.PageOrientation]), v = n(() => {
|
|
919
918
|
if (!t) return;
|
|
920
919
|
let e = [...d.PageSize];
|
|
921
|
-
d.PageOrientation ===
|
|
920
|
+
d.PageOrientation === H.纵向 && (e = [e[1], e[0]]), new ie(t, e, d.DPI, d.Format, B.mm, {
|
|
922
921
|
jpegQuality: d.JPEGQuality,
|
|
923
922
|
northIcon: !0
|
|
924
923
|
}).generate(() => {
|
|
@@ -926,23 +925,23 @@ var A = t(k), j = (e, t) => {
|
|
|
926
925
|
});
|
|
927
926
|
}, [t, d]), y = (e) => {
|
|
928
927
|
console.log("打印面板:", e), u(e);
|
|
929
|
-
}, b = Object.entries(
|
|
928
|
+
}, b = Object.entries(V).map(([e, t]) => /* @__PURE__ */ c("option", {
|
|
930
929
|
value: JSON.stringify(t),
|
|
931
930
|
children: e
|
|
932
|
-
}, e)), x = Object.entries(
|
|
931
|
+
}, e)), x = Object.entries(H).map(([e, t]) => /* @__PURE__ */ c("option", {
|
|
933
932
|
value: t,
|
|
934
933
|
children: e
|
|
935
|
-
}, e)), S = Object.entries(
|
|
934
|
+
}, e)), S = Object.entries(z).map(([e, t]) => /* @__PURE__ */ c("option", {
|
|
936
935
|
value: t,
|
|
937
936
|
children: e
|
|
938
|
-
}, e)), C = Object.entries(
|
|
937
|
+
}, e)), C = Object.entries(U).map(([e, t]) => /* @__PURE__ */ c("option", {
|
|
939
938
|
value: t,
|
|
940
939
|
children: e
|
|
941
940
|
}, e));
|
|
942
|
-
return /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(
|
|
941
|
+
return /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(h, {
|
|
943
942
|
name: "打印",
|
|
944
943
|
position: e.position,
|
|
945
|
-
icon:
|
|
944
|
+
icon: m.Print,
|
|
946
945
|
openHandle: y,
|
|
947
946
|
children: /* @__PURE__ */ c(s, {})
|
|
948
947
|
}), /* @__PURE__ */ l("div", {
|
|
@@ -1006,7 +1005,7 @@ var A = t(k), j = (e, t) => {
|
|
|
1006
1005
|
});
|
|
1007
1006
|
//#endregion
|
|
1008
1007
|
//#region src/gis/widget/Swipe/MapCompare/sync-maps.ts
|
|
1009
|
-
function
|
|
1008
|
+
function oe(e, t) {
|
|
1010
1009
|
let n = e.getCenter(), r = e.getZoom(), i = e.getBearing(), a = e.getPitch();
|
|
1011
1010
|
t.forEach((e) => {
|
|
1012
1011
|
e.jumpTo({
|
|
@@ -1017,7 +1016,7 @@ function se(e, t) {
|
|
|
1017
1016
|
});
|
|
1018
1017
|
});
|
|
1019
1018
|
}
|
|
1020
|
-
function
|
|
1019
|
+
function se(...e) {
|
|
1021
1020
|
let t;
|
|
1022
1021
|
t = e.length === 1 && Array.isArray(e[0]) ? e[0] : e;
|
|
1023
1022
|
let n = [];
|
|
@@ -1036,7 +1035,7 @@ function ce(...e) {
|
|
|
1036
1035
|
});
|
|
1037
1036
|
}
|
|
1038
1037
|
function a(e, t) {
|
|
1039
|
-
i(),
|
|
1038
|
+
i(), oe(e, t), r();
|
|
1040
1039
|
}
|
|
1041
1040
|
return r(), () => {
|
|
1042
1041
|
i();
|
|
@@ -1063,7 +1062,7 @@ var Z = class {
|
|
|
1063
1062
|
...r
|
|
1064
1063
|
}, this._mapA = e, this._mapB = t, this._horizontal = this.options.orientation === "horizontal", this._eventTarget = new EventTarget(), this._swiper = document.createElement("div"), this._swiper.className = this._horizontal ? "compare-swiper-horizontal" : "compare-swiper-vertical", this._controlContainer = document.createElement("div"), this._controlContainer.className = this._horizontal ? "maplibregl-compare maplibregl-compare-horizontal" : "maplibregl-compare", this._controlContainer.appendChild(this._swiper), this._mountContainer(n), this._bounds = this._mapB.getContainer().getBoundingClientRect();
|
|
1065
1064
|
let i = this._horizontal ? this._bounds.height / 2 : this._bounds.width / 2;
|
|
1066
|
-
this._setPosition(i), this._clearSync =
|
|
1065
|
+
this._setPosition(i), this._clearSync = se(this._mapA, this._mapB), this._onResize = () => {
|
|
1067
1066
|
this._bounds = this._mapB.getContainer().getBoundingClientRect(), this.currentPosition && this._setPosition(this.currentPosition);
|
|
1068
1067
|
}, this._mapB.on("resize", this._onResize), this.options.mousemove && (this._mapA.getContainer().addEventListener("mousemove", this._onMove), this._mapB.getContainer().addEventListener("mousemove", this._onMove)), this._swiper.addEventListener("mousedown", this._onDown), this._swiper.addEventListener("touchstart", this._onDown);
|
|
1069
1068
|
}
|
|
@@ -1127,7 +1126,7 @@ var Z = class {
|
|
|
1127
1126
|
}
|
|
1128
1127
|
};
|
|
1129
1128
|
window.maplibregl && (window.maplibregl.Compare = Z);
|
|
1130
|
-
var
|
|
1129
|
+
var ce = t((e) => {
|
|
1131
1130
|
let { title: t, open: r = !1, maskClosable: a = !0, mask: s, width: u = 520, footer: d, onCancel: p, destroyOnHidden: m = !1, className: h, style: g, children: _, centered: v = !1 } = e, y = s?.closable === void 0 ? a : s.closable, [b, x] = o(r);
|
|
1132
1131
|
i(() => {
|
|
1133
1132
|
if (r) x(!0), document.body.style.overflow = "hidden";
|
|
@@ -1186,8 +1185,8 @@ var le = t((e) => {
|
|
|
1186
1185
|
})
|
|
1187
1186
|
})]
|
|
1188
1187
|
}), document.body) : null;
|
|
1189
|
-
}),
|
|
1190
|
-
let { map: t } =
|
|
1188
|
+
}), le = t((e) => {
|
|
1189
|
+
let { map: t } = D(), [r, a] = o(!1), [u, d] = o(null), [f, p] = o(null), g = n((e) => {
|
|
1191
1190
|
a(e);
|
|
1192
1191
|
}, []);
|
|
1193
1192
|
return i(() => {
|
|
@@ -1198,13 +1197,13 @@ var le = t((e) => {
|
|
|
1198
1197
|
orientation: "vertical"
|
|
1199
1198
|
}), u.setCenter(t.getCenter()), u.setZoom(t.getZoom()), u.setBearing(t.getBearing()), f.setPitch(t.getPitch()));
|
|
1200
1199
|
}
|
|
1201
|
-
}, [u, f]), /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(
|
|
1200
|
+
}, [u, f]), /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(h, {
|
|
1202
1201
|
name: "卷帘对比",
|
|
1203
1202
|
position: { ...e.position },
|
|
1204
|
-
icon:
|
|
1205
|
-
openHandle:
|
|
1203
|
+
icon: m.Swipe,
|
|
1204
|
+
openHandle: g,
|
|
1206
1205
|
children: /* @__PURE__ */ c(s, {})
|
|
1207
|
-
}), /* @__PURE__ */ c(
|
|
1206
|
+
}), /* @__PURE__ */ c(ce, {
|
|
1208
1207
|
title: "卷帘对比",
|
|
1209
1208
|
mask: { closable: !1 },
|
|
1210
1209
|
open: r,
|
|
@@ -1215,7 +1214,7 @@ var le = t((e) => {
|
|
|
1215
1214
|
children: /* @__PURE__ */ l("div", {
|
|
1216
1215
|
id: "swipeContainer",
|
|
1217
1216
|
className: "maplibregl-swipe",
|
|
1218
|
-
children: [/* @__PURE__ */ c(
|
|
1217
|
+
children: [/* @__PURE__ */ c(k, {
|
|
1219
1218
|
mapOptions: {
|
|
1220
1219
|
...t.options,
|
|
1221
1220
|
id: "swipeBeforeMap"
|
|
@@ -1223,11 +1222,11 @@ var le = t((e) => {
|
|
|
1223
1222
|
mapLayerSettting: t.mapLayerSetting,
|
|
1224
1223
|
onMapLoad: (e) => d(e),
|
|
1225
1224
|
className: "swipe-map-container",
|
|
1226
|
-
children: /* @__PURE__ */ c(
|
|
1225
|
+
children: /* @__PURE__ */ c(L, { position: {
|
|
1227
1226
|
top: 10,
|
|
1228
1227
|
left: 10
|
|
1229
1228
|
} })
|
|
1230
|
-
}), /* @__PURE__ */ c(
|
|
1229
|
+
}), /* @__PURE__ */ c(k, {
|
|
1231
1230
|
mapOptions: {
|
|
1232
1231
|
...t.options,
|
|
1233
1232
|
id: "swipeAfterMap"
|
|
@@ -1235,7 +1234,7 @@ var le = t((e) => {
|
|
|
1235
1234
|
mapLayerSettting: t.mapLayerSetting,
|
|
1236
1235
|
onMapLoad: (e) => p(e),
|
|
1237
1236
|
className: "swipe-map-container",
|
|
1238
|
-
children: /* @__PURE__ */ c(
|
|
1237
|
+
children: /* @__PURE__ */ c(L, { position: {
|
|
1239
1238
|
top: 10,
|
|
1240
1239
|
right: 10
|
|
1241
1240
|
} })
|
|
@@ -1274,7 +1273,7 @@ var le = t((e) => {
|
|
|
1274
1273
|
mode: "simple_select",
|
|
1275
1274
|
icon: Q.Reset
|
|
1276
1275
|
}
|
|
1277
|
-
],
|
|
1276
|
+
], ue = [
|
|
1278
1277
|
{
|
|
1279
1278
|
id: "gl-draw-line",
|
|
1280
1279
|
type: "line",
|
|
@@ -1492,14 +1491,14 @@ var le = t((e) => {
|
|
|
1492
1491
|
"circle-color": "#D20C0C"
|
|
1493
1492
|
}
|
|
1494
1493
|
}
|
|
1495
|
-
],
|
|
1496
|
-
let { position: t, onDraw: n, initFeature: r, modes: o } = e, s = o ? $.filter((e) => o.includes(e.mode) || e.id === "reset") : $, { map: l } =
|
|
1494
|
+
], de = t((e) => {
|
|
1495
|
+
let { position: t, onDraw: n, initFeature: r, modes: o } = e, s = o ? $.filter((e) => o.includes(e.mode) || e.id === "reset") : $, { map: l } = D(), u = a(null);
|
|
1497
1496
|
i(() => {
|
|
1498
1497
|
r && d(r);
|
|
1499
1498
|
}, [r]);
|
|
1500
1499
|
let d = (e) => {
|
|
1501
1500
|
if (l && e.features && u.current) {
|
|
1502
|
-
let t =
|
|
1501
|
+
let t = b(e.features[0]);
|
|
1503
1502
|
t && l.fitBounds(t, { maxZoom: 16 });
|
|
1504
1503
|
let n = u.current.add(e);
|
|
1505
1504
|
u.current.changeMode("simple_select", { featureIds: n });
|
|
@@ -1509,24 +1508,16 @@ var le = t((e) => {
|
|
|
1509
1508
|
t === "reset" && u.current.deleteAll(), u.current.changeMode(e);
|
|
1510
1509
|
let n = l.getCanvas();
|
|
1511
1510
|
e === "simple_select" ? n.style.cursor = "" : n.style.cursor = "crosshair";
|
|
1512
|
-
},
|
|
1511
|
+
}, m = () => {
|
|
1513
1512
|
if (!u.current) return;
|
|
1514
1513
|
let e = u.current.getAll();
|
|
1515
|
-
|
|
1516
|
-
let t = 0;
|
|
1517
|
-
e.features.forEach((e) => {
|
|
1518
|
-
(e.geometry.type === "Polygon" || e.geometry.type === "MultiPolygon") && (t += m(e));
|
|
1519
|
-
}), n({
|
|
1520
|
-
data: e,
|
|
1521
|
-
area: t
|
|
1522
|
-
});
|
|
1523
|
-
}
|
|
1514
|
+
e.features && e.features.length > 0 && n({ data: e });
|
|
1524
1515
|
};
|
|
1525
1516
|
return i(() => (l && !u.current && (u.current = new p({
|
|
1526
1517
|
displayControlsDefault: !1,
|
|
1527
|
-
styles:
|
|
1518
|
+
styles: ue,
|
|
1528
1519
|
defaultMode: "simple_select"
|
|
1529
|
-
}), l.addControl(u.current, "bottom-left"), l.on("draw.create",
|
|
1520
|
+
}), l.addControl(u.current, "bottom-left"), l.on("draw.create", m), l.on("draw.delete", m), l.on("draw.update", m), l.on("draw.modechange", (e) => {
|
|
1530
1521
|
let t = l.getCanvas();
|
|
1531
1522
|
e.mode === "simple_select" ? t.style.cursor = "" : t.style.cursor = "crosshair";
|
|
1532
1523
|
})), () => {}), []), /* @__PURE__ */ c("div", {
|
|
@@ -1544,4 +1535,4 @@ var le = t((e) => {
|
|
|
1544
1535
|
});
|
|
1545
1536
|
});
|
|
1546
1537
|
//#endregion
|
|
1547
|
-
export {
|
|
1538
|
+
export { x as BaseLayer, h as BaseWidget, de as Draw, C as LayerGroupWrapper, L as LayerList, S as LayerWrapper, R as Legend, E as MapContext, k as MapWidget, T as MapWrapper, ae as Print, le as Swipe, D as useMap };
|
package/dist/qm-map.umd.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("react/jsx-runtime"),require("maplibre-gl"),require("react-dom"),require("@mapbox/mapbox-gl-draw"),require("@turf/area")):typeof define==`function`&&define.amd?define([`exports`,`react`,`react/jsx-runtime`,`maplibre-gl`,`react-dom`,`@mapbox/mapbox-gl-draw`,`@turf/area`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.QmMap={},e.react,e.react_jsx_runtime,e.maplibre_gl,e[`react-dom`],e._mapbox_mapbox_gl_draw,e._turf_area))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var s=Object.create,c=Object.defineProperty,l=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,d=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty,p=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=u(t),a=0,o=i.length,s;a<o;a++)s=i[a],!f.call(e,s)&&s!==n&&c(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=l(t,s))||r.enumerable});return e},m=(e,t,n)=>(n=e==null?{}:s(d(e)),p(t||!e||!e.__esModule?c(n,`default`,{value:e,enumerable:!0}):n,e));t=m(t,1),a=m(a,1),o=m(o,1);var h={Swipe:`data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTk3MzE2MzYyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijk2NTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTUzNy4xIDkxMC4yYzAgNy44IDcuOSAwIDAgMHogbS00OS4yIDBjLTcuOSAwIDAgNy44IDAgMHogbTQzOC40LTY1Mi40Yy0yLjctMi41LTYuNC00LTEwLjEtNC0yLjggMC01LjQgMC44LTcuOCAyLjRsLTM3MS4zIDI0M1YxMjMuMWMwLTcuOC0xNi43IDAtMjQuNiAwLTcuOSAwLTI0LjYtNy44LTI0LjYgMHYzNzYuMmwtMzcxLjMtMjQzYy0yLjUtMS42LTUuMS0yLjQtNy45LTIuNC02LjkgMC0xNC40IDUuNC0xNC40IDE0LjJ2NDk3LjRjMCA4LjcgNy41IDE0LjEgMTQuNSAxNC4xIDIuNyAwIDUuNC0wLjggNy44LTIuNGwzNzEuMy0yNDN2Mzc2LjJoNDkuMlY1MzRsMzcxLjMgMjQzYzIuNSAxLjYgNS4xIDIuNCA3LjkgMi40IDMuNyAwIDcuNC0xLjUgMTAuMS00IDItMS44IDQuMy01LjEgNC4zLTEwLjFWMjY4YzAtNS4xLTIuNC04LjMtNC40LTEwLjJ6IiBmaWxsPSIjMTQwQTBBIiBwLWlkPSI5NjUzIj48L3BhdGg+PC9zdmc+`,Legend:`data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTEwNzAzMTU0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQ5NzIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTExMiAxMTJtMzIgMGw3MzYgMHEzMiAwIDMyIDMybDAgNzM2cTAgMzItMzIgMzJsLTczNiAwcS0zMiAwLTMyLTMybDAtNzM2cTAtMzIgMzItMzJaIiBmaWxsPSIjRkZGRkZGIiBwLWlkPSI0OTczIj48L3BhdGg+PHBhdGggZD0iTTEyOCA5Nmg3NjhhMzIgMzIgMCAwIDEgMzIgMzJ2NzY4YTMyIDMyIDAgMCAxLTMyIDMySDEyOGEzMiAzMiAwIDAgMS0zMi0zMlYxMjhhMzIgMzIgMCAwIDEgMzItMzJ6IG0wIDMydjc2OGg3NjhWMTI4SDEyOHoiIGZpbGw9IiM1RDZEN0UiIHAtaWQ9IjQ5NzQiPjwvcGF0aD48cGF0aCBkPSJNMjI0IDM4NGg2NHY2NEgyMjRWMzg0eiBtMCAxMjhoNjR2NjRIMjI0di02NHogbTAgMTI4aDY0djY0SDIyNHYtNjR6IG0wIDEyOGg2NHY2NEgyMjR2LTY0ek01NDQgMzg0aDY0djY0aC02NFYzODR6IG0wIDEyOGg2NHY2NGgtNjR2LTY0eiBtMCAxMjhoNjR2NjRoLTY0di02NHogbTAgMTI4aDY0djY0aC02NHYtNjR6IiBmaWxsPSIjODA4RkExIiBwLWlkPSI0OTc1Ij48L3BhdGg+PHBhdGggZD0iTTMyMCAzODRoMTYwdjY0SDMyMFYzODR6IG0wIDEyOGgxNjB2NjRIMzIwdi02NHogbTAgMTI4aDE2MHY2NEgzMjB2LTY0eiBtMCAxMjhoMTYwdjY0SDMyMHYtNjR6TTY0MCAzODRoMTYwdjY0aC0xNjBWMzg0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiIgZmlsbD0iI0FDQjRDMCIgcC1pZD0iNDk3NiI+PC9wYXRoPjxwYXRoIGQ9Ik0yMjQgMjI0aDU3NnY5NkgyMjR6IiBmaWxsPSIjMzBBRDk4IiBwLWlkPSI0OTc3Ij48L3BhdGg+PC9zdmc+`,LayerList:`data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTMyNjkyNzI3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijg5OTAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTg1Mi42IDQ2Mi45bDEyLjEgNy42YzI0LjggMTUuNiAzMi4zIDQ4LjMgMTYuNyA3My4yLTQuMiA2LjctOS45IDEyLjQtMTYuNyAxNi43TDU0MC40IDc2NC4xYy0xNy4zIDEwLjgtMzkuMiAxMC44LTU2LjQgMEwxNTkuMyA1NjBjLTI0LjgtMTUuNi0zMi4zLTQ4LjMtMTYuNy03My4yIDQuMi02LjcgOS45LTEyLjQgMTYuNy0xNi43bDEyLjEtNy42TDQ4My45IDY1OWMxNy4zIDEwLjggMzkuMiAxMC44IDU2LjQgMGwzMTIuMi0xOTYgMC4xLTAuMXogbTAgMTU2LjFsMTIuMSA3LjZjMjQuOCAxNS42IDMyLjMgNDguMyAxNi43IDczLjItNC4yIDYuNy05LjkgMTIuNC0xNi43IDE2LjdMNTQwLjQgOTIwLjJjLTE3LjMgMTAuOC0zOS4yIDEwLjggNTYuNCAwTDE1OS4zIDcxNi4xYy0yNC44LTE1LjYtMzIuMy00OC4zLTE2LjctNzMuMiA0LjItNi43IDkuOS0xMi40IDE2LjctMTYuN2wxMi4xLTcuNkw0ODMuOSA4MTVjMTcuMyAxMC44IDM5LjIgMTAuOCA1Ni40IDBsMzEyLjItMTk2aDAuMXpNNTQwIDEwNi40bDMyNC42IDIwNC4xYzI0LjggMTUuNiAzMi4zIDQ4LjMgMTYuNyA3My4yLTQuMiA2LjctOS45IDEyLjQtMTYuNyAxNi43TDU0MC40IDYwNGMtMTcuMyAxMC44LTM5LjIgMTAuOC01Ni40IDBMMTU5LjMgMzk5LjhjLTI0LjgtMTUuNi0zMi4zLTQ4LjMtMTYuNy03My4yIDQuMi02LjcgOS45LTEyLjQgMTYuNy0xNi43bDMyNC40LTIwMy43YzE3LjMtMTAuOCAzOS4yLTEwLjggNTYuNCAwbC0wLjEgMC4yeiIgcC1pZD0iODk5MSI+PC9wYXRoPjwvc3ZnPg==`,Print:`data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzc5NjgwOTI2ODcwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE2ODkiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTI5MS42MTk2NCAxMDI0aDQzOC43NThhNzIuOTAxIDcyLjkwMSAwIDAgMCA3MS41NTItNzQuMjUxVjczMS4wNDRIMjE5LjM5MjY0Vjk0OS43NUE3Mi45MDEgNzIuOTAxIDAgMCAwIDI5MS42MjA2NCAxMDI0ek03MzAuMzc3NjQgMC4wMDVIMjkxLjYyMDY0YTcxLjU1MSA3MS41NTEgMCAwIDAtNzIuMjI3IDY3LjUwMXYyMjIuMDhoNTgzLjIxMlY3Mi4yM0E3Mi4yMjYgNzIuMjI2IDAgMCAwIDczNS4xMDI2NCAwLjAwNXogbTE0Ny4xNTMgMjg5LjU4djc0LjkyN0gxNDUuODE2NjR2LTc0LjkyN0g3Mi4yMzk2NEE3My41NzYgNzMuNTc2IDAgMCAwIDAuMDEzNjQgMzY0LjUxMnY1MTMuMDFBNzIuOTAxIDcyLjkwMSAwIDAgMCA3MS41NjQ2NCA5NTEuMWg3NC4yNTJWNjU3LjQ2OEg4NzcuNTMwNjR2MjkyLjk1Nmg3NC4yNTJhNzMuNTc2IDczLjU3NiAwIDAgMCA3Mi4yMjYtNzIuOTAydi01MTMuMDFhNzQuOTI2IDc0LjkyNiAwIDAgMC03NC4yNTEtNzQuOTI3eiBtMCAyMjIuNzU1SDY1Ny40NzY2NHYtNzQuMjUySDg3Ny41MzA2NHoiIHAtaWQ9IjE2OTAiPjwvcGF0aD48L3N2Zz4=`},g=(0,t.memo)(e=>{let{position:r,children:i,name:a,icon:o,width:s,height:c,openHandle:l}=e,[u,d]=(0,t.useState)(!1),[f,p]=(0,t.useState)(!1),m={width:u?s??30:30,height:u?c??30:30,...r};return(0,n.jsxs)(`div`,{className:`maplibregl-control`,style:m,children:[(0,n.jsxs)(`div`,{className:`maplibregl-bar`,children:[(0,n.jsx)(`div`,{className:`maplibregl-bar-button`,onClick:()=>{l?(l(!f),p(!f)):d(!u)},title:a??``,style:{backgroundImage:`url(${o})`}}),a&&(0,n.jsx)(`div`,{className:`maplibregl-bar-title`,children:a})]}),u&&i]})});function _(e,t=new WeakMap){if(typeof e!=`object`||!e)return e;if(t.has(e))return t.get(e);let n;return e instanceof Date?n=new Date(e.getTime()):e instanceof RegExp?(n=new RegExp(e.source,e.flags),n.lastIndex=e.lastIndex):e instanceof Map?(n=new Map,t.set(e,n),e.forEach((e,r)=>{n.set(_(r,t),_(e,t))})):e instanceof Set?(n=new Set,t.set(e,n),e.forEach(e=>{n.add(_(e,t))})):Array.isArray(e)?(n=[],t.set(e,n),e.forEach((e,r)=>{n[r]=_(e,t)})):(n=Object.create(Object.getPrototypeOf(e)),t.set(e,n),Reflect.ownKeys(e).forEach(r=>{let i=e[r];n[r]=_(i,t)})),n}var v=(e,t)=>{let n=null;return r=>{n&&clearTimeout(n),n=setTimeout(()=>{e(r)},t)}},y=(e,t)=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{e.push(t),t.layers instanceof Array&&y(e,t.layers)})},b=(e,t)=>{t[0]instanceof Array?t.forEach(t=>{t[0]instanceof Array?b(e,t):e.extend(t)}):e.extend(t)},x=e=>{let t=new r.LngLatBounds;return b(t,e.geometry.coordinates),t},S=class{_options;get options(){return this._options}constructor(e){this._options=e}onAdd(e,t){if(this._options.isAdd===!1){this._options.isAdd=!1;return}t=e.findValidBeforeId(this._options.id),this.add(e,t),this._options.isAdd=!0}onRemove(e,t){if(this._options.isAdd)return;e.getLayer(this._options.id)&&e.removeLayer(this._options.id);let n=this._options.id+`-ds`;t&&e.removeSource(n),this._options.isAdd=!1}},C=class extends S{constructor(e){super(e),this._options=e}add(e,t){let{id:n,source:r}=this._options,i=this._options.id+`-ds`;typeof r==`string`&&(i=r),!e.getSource(i)&&r&&typeof r!=`string`&&e.addSource(i,r);let a=e.getLayer(n),o=e.getSource(i);if(!a&&o){let n={...this._options,source:i};e.addLayer(n,t)}}},w=class e{_options;get options(){return this._options}_layers=[];get layers(){return this._layers}constructor(t){this._options=t,t.layers.forEach(t=>{let n;n=`layers`in t?new e(t):new C(t),this._layers.push(n)})}onAdd(e,t){this._layers.forEach(n=>{e.addLayerWrapper(n,t)}),this.updateOptions()}onRemove(e){this._layers.forEach(t=>{e.removeLayerWrapper(t,!1)}),this.updateOptions()}updateOptions(){let e=this._layers.findIndex(e=>e.options.isAdd)>-1;this._options.isAdd=e}},T={MAPINITED:`MAPINITED`,MAPCLICKED:`MAPCLICKED`,MAPLAYERCHANGED:`MAPLAYERCHANGED`,MAPDESTRORY:`MAPDESTRORY`},E=class extends r.Map{_id;get id(){return this._id}_options;get options(){return this._options}_mapLayerSetting;get mapLayerSetting(){return this._mapLayerSetting}_images=[];get images(){return this._images}_layers=[];get layers(){return this._layers}constructor(e){super(e),this._options=e,this._id=e.id,this._mapLayerSetting=[],this.fire(T.MAPINITED,{map:this})}getLayerWrapper(e,t){for(let n of e)if(n.options.id===t)return n;else if(`layers`in n){let e=this.getLayerWrapper(n.layers,t);if(e)return e}}addLayerWrapper(e,t){e.onAdd(this,t),this.fire(T.MAPLAYERCHANGED,{map:this,layer:e})}removeLayerWrapper(e,t){e.onRemove(this,t),this.fire(T.MAPLAYERCHANGED,{map:this,layer:e})}load(e){this._mapLayerSetting=e,e.forEach(e=>{let t;t=`layers`in e?new w(e):new C(e),this.addLayerWrapper(t),this._layers.push(t)})}selectFeature(e){this.clearSelect();let t=`location-ds`;this.addSource(t,{type:`geojson`,data:e}),this.addLayer({id:`location-lyr`,type:`line`,paint:{"line-color":`#00ffff`,"line-width":2},source:t})}clearSelect(){let e=`location-lyr`;this.getLayer(e)&&(this.removeLayer(e),this.removeSource(`location-ds`))}findValidBeforeId(e){let t=this.getLayerList(),n=t.findIndex(t=>t.options.id===e);if(n>-1)for(let e=n;e<t.length;e++){let n=this.getLayer(t[e].options.id);if(n)return n.id}}getLayerList(){let e=[];return y(e,this.layers),e}destory(){this.fire(T.MAPDESTRORY,{map:this}),this.remove()}},D=(0,t.createContext)({map:null}),O=()=>{let e=(0,t.useContext)(D);if(!e)throw Error(`只能在函数组件中使用`);return e};function k(e){let{mapOptions:r,mapLayerSettting:i,children:a,onMapLoad:o,className:s}=e,c=(0,t.useRef)(null),[l,u]=(0,t.useState)(!1),{current:d}=(0,t.useRef)({map:null});return(0,t.useEffect)(()=>{let e=new E({pitch:0,bearing:0,doubleClickZoom:!1,attributionControl:!1,renderWorldCopies:!1,trackResize:!0,...r,container:c.current,style:{version:8,glyphs:`/font/{fontstack}/{range}.pbf`,sources:{},layers:[]}}),t=()=>{e.load(_(i)),u(!0),o?.(e),d&&(d.map=e)};e.on(`load`,t),e.on(`click`,()=>{console.log(`center:`,e.getCenter(),`zoom:`,e.getZoom())});let n=v(()=>{e.resize()},10);return new ResizeObserver(n).observe(c?.current),()=>{e.off(`load`,t)}},[]),(0,n.jsx)(`div`,{ref:c,className:s??`map-wrapper`,id:`map-wrapper`,children:l&&d&&(0,n.jsx)(D.Provider,{value:d,children:a})})}var A=(0,t.memo)(k),j=(e,t)=>{for(let n of e){if(n.key===t)return n;if(n.children){let e=j(n.children,t);if(e)return e}}return null},M=e=>{let t=[];return e.children&&e.children.length>0&&e.children.forEach(e=>{t.push(e.key),t.push(...M(e))}),t},N=e=>!e.children||e.children.length===0,ee=(e,t)=>t.includes(e.key),te=(e,t)=>{if(N(e))return!1;let n=M(e);if(n.length===0)return!1;let r=n.filter(e=>t.includes(e));return r.length>0&&r.length<n.length},P=(0,t.memo)(e=>{let{node:r,level:i,checkedKeys:a,checkable:o,onCheck:s}=e,[c,l]=(0,t.useState)(!0),u=!N(r),d=ee(r,a),f=te(r,a);return(0,n.jsxs)(`div`,{className:`qm-tree-node`,children:[(0,n.jsxs)(`div`,{className:`qm-tree-node-content`,style:{paddingLeft:i*18},children:[(0,n.jsx)(`span`,{className:`qm-tree-switcher ${u?``:`qm-tree-switcher-noop`} ${c?`qm-tree-switcher-expanded`:``}`,onClick:()=>{u&&l(!c)},children:u&&(0,n.jsx)(`svg`,{viewBox:`0 0 1024 1024`,width:`12`,height:`12`,fill:`currentColor`,children:(0,n.jsx)(`path`,{d:`M715.8 493.5L435.6 213.3c-12.4-12.4-32.8-12.4-45.2 0s-12.4 32.8 0 45.2l245.8 245.8-245.8 245.8c-12.4 12.4-12.4 32.8 0 45.2 6.2 6.2 14.3 9.3 22.6 9.3s16.4-3.1 22.6-9.3l280.2-280.2c12.4-12.4 12.4-32.8 0-45.2z`})})}),o&&(0,n.jsx)(`span`,{className:`qm-tree-checkbox ${d?`qm-tree-checkbox-checked`:``} ${f?`qm-tree-checkbox-indeterminate`:``}`,onClick:()=>{s(r.key)},children:(0,n.jsxs)(`span`,{className:`qm-tree-checkbox-inner`,children:[d&&(0,n.jsx)(`svg`,{viewBox:`0 0 1024 1024`,width:`10`,height:`10`,fill:`white`,children:(0,n.jsx)(`path`,{d:`M912 224l-448 448-192-192-64 64 256 256 512-512z`})}),f&&(0,n.jsx)(`span`,{className:`qm-tree-checkbox-indeterminate-icon`})]})}),(0,n.jsx)(`span`,{className:`qm-tree-node-title`,title:typeof r.title==`string`?r.title:``,children:r.title})]}),u&&c&&(0,n.jsx)(`div`,{className:`qm-tree-children`,children:r.children.map(e=>(0,n.jsx)(P,{node:e,level:i+1,checkedKeys:a,checkable:o,onCheck:s},e.key))})]})}),F=(0,t.memo)(e=>{let{treeData:r,checkable:i=!1,checkedKeys:a,onCheck:o,style:s}=e,[c,l]=(0,t.useState)([]),u=a!==void 0,d=u?a:c,f=(e,t)=>{let n=j(r,t);if(!n)return e;let i=e.includes(t),a;if(i){let r=M(n),i=new Set([t,...r]);a=e.filter(e=>!i.has(e))}else{let r=M(n);a=Array.from(new Set([...e,t,...r]))}return a},p=(0,t.useCallback)(e=>{if(u){let t=f(d,e);o?.(t)}else l(t=>{let n=f(t,e);return o?.(n),n})},[d,r,u,o]);return(0,n.jsx)(`div`,{className:`qm-tree`,style:s,children:r.map(e=>(0,n.jsx)(P,{node:e,level:0,checkedKeys:d,checkable:i,onCheck:p},e.key))})}),I=(0,t.memo)(e=>{let[r,i]=(0,t.useState)([]),{map:a}=O(),[o,s]=(0,t.useState)([]),c=(0,t.useCallback)((e,t)=>{let n,r=[];return e.forEach(e=>{n=void 0,n=`layers`in e&&e.options.type===`logicGroup`?{title:e.options.name,key:e.options.id,selectable:!1,children:c(e.layers,t)}:{title:e.options.name,key:e.options.id,selectable:!1},n&&r.push(n),e.options.isAdd&&e.options.type!==`logicGroup`&&t.push(e.options.id)}),r},[]),l=e=>{i(e);let t=new Set([...r,...e]),n=new Set([...t].filter(e=>!r.includes(e))),o=new Set([...t].filter(t=>!e.includes(t)));n.forEach(e=>{let t=a?.getLayerWrapper(a.layers,e);t&&`layers`in t?(t.layers.forEach(e=>{e.options.isAdd=!0}),a?.addLayerWrapper(t)):t&&(t.options.isAdd=!0,a?.addLayerWrapper(t))}),o.forEach(e=>{let t=a?.getLayerWrapper(a.layers,e);t&&`layers`in t?(t.layers.forEach(e=>{e.options.isAdd=!1}),a?.removeLayerWrapper(t)):t&&(t.options.isAdd=!1,a?.removeLayerWrapper(t))}),a.layers.forEach(e=>{u(e)})},u=e=>{`layers`in e&&e.layers.findIndex(e=>e.options.type===`logicGroup`)>-1?e.layers.forEach(e=>{u(e)}):`layers`in e&&e.options.type===`logicGroup`&&(e.layers.findIndex(e=>e.options.isAdd)===-1?e.options.isAdd=!1:e.options.isAdd=!0)};return(0,t.useEffect)(()=>{let e=()=>{let e=[];s(a?c(a.layers,e):[]),i(e)},t=v(()=>{e()},300);return a?.on(T.MAPLAYERCHANGED,t),e(),()=>{a?.off(T.MAPLAYERCHANGED,t)}},[]),(0,n.jsx)(g,{name:`图层控制`,position:e.position,icon:h.LayerList,width:200,height:r.length*28<280?280:r.length*28,children:(0,n.jsx)(F,{checkable:!0,checkedKeys:r,onCheck:e=>l(e),treeData:o,style:{fontSize:12,maxHeight:400,overflowX:`hidden`,overflowY:`auto`}})})}),L=(0,t.memo)(e=>{let{map:r}=O(),[i,a]=(0,t.useState)(),[o,s]=(0,t.useState)(0),c=(0,t.useCallback)((e,t,i)=>{let a;e.forEach(e=>{if(a=void 0,`layers`in e&&!e.options.legend)c(e.layers,t,i);else if(e.options.legend&&(e.options.isAdd||`layers`in e&&e.layers.filter(e=>e.options.isAdd).length)){let{title:i,items:o}=e.options.legend;if(o)a=(0,n.jsxs)(`div`,{className:`maplibregl-legend-group`,children:[(0,n.jsx)(`div`,{className:`maplibregl-legend-tilte`,children:i||e.options.name}),o?.map(e=>{t.push(26);let i=r?.images.find(t=>t.id===e.imageId);return(0,n.jsxs)(`div`,{className:`maplibregl-legend-item`,children:[i?(0,n.jsx)(`img`,{src:i.data,alt:``,className:`maplibregl-legend-item-img`}):(0,n.jsx)(`div`,{className:`maplibregl-legend-item-geo`,style:e.style}),(0,n.jsx)(`div`,{className:`maplibregl-legend-item-text`,children:e.text})]},e.text)})]},e.options.id),t.push(50);else{let{style:o,imageId:s,text:c}=e.options.legend,l=r?.images.find(e=>e.id===s);t.push(26),a=(0,n.jsxs)(`div`,{className:`maplibregl-legend-item`,children:[l?(0,n.jsx)(`img`,{src:l.data,alt:``,className:`maplibregl-legend-item-img`}):(0,n.jsx)(`div`,{className:`maplibregl-legend-item-geo`,style:o}),(0,n.jsx)(`div`,{className:`maplibregl-legend-item-text`,children:c||e.options.name})]},c||i||e.options.id)}}else a=void 0;a&&i.push(a)})},[]);return(0,t.useEffect)(()=>{let e=()=>{let e=[],t=[];c(r.layers,e,t),a(t),s(e.reduce((e,t)=>e+t,0)+40)},t=v(()=>{e()},200);return r?.on(T.MAPLAYERCHANGED,t),e(),()=>{r?.off(T.MAPLAYERCHANGED,t)}},[]),(0,n.jsx)(g,{name:`图例`,position:e.position,icon:h.Legend,width:180,height:o,children:(0,n.jsx)(`div`,{className:`maplibregl-legend`,children:i})})}),R={JPEG:`jpg`,PNG:`png`,PDF:`pdf`,SVG:`svg`},z={mm:`mm`},B={A2:[594,420],A3:[420,297],A4:[297,210],A5:[210,148],A6:[148,105],B2:[707,500],B3:[500,353],B4:[353,250],B5:[250,176],B6:[176,125],Letter:[279,216]},V={横向:`landscape`,纵向:`portrait`},H={72:72,96:96,200:200,300:300,400:400},U=class{map;svgCanvas;constructor(e){this.map=e,this.svgCanvas=null}create(){if(!this.map)return;let e=this.map.getCanvasContainer(),t=this.map.getCanvas().clientWidth,n=this.map.getCanvas().clientHeight,r=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);r.setAttribute(`class`,`qm-print-crosshair`),r.style.cssText=`position:absolute;top:0;left:0;width:${t}px;height:${n}px;pointer-events:none;`;let i=t/2,a=n/2,o=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);o.setAttribute(`x1`,`${i}`),o.setAttribute(`y1`,`0`),o.setAttribute(`x2`,`${i}`),o.setAttribute(`y2`,`${n}`),o.setAttribute(`stroke`,`#dddddd`),o.setAttribute(`stroke-width`,`2`),o.setAttribute(`stroke-dasharray`,`5,5`);let s=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);s.setAttribute(`x1`,`0`),s.setAttribute(`y1`,`${a}`),s.setAttribute(`x2`,`${t}`),s.setAttribute(`y2`,`${a}`),s.setAttribute(`stroke`,`#dddddd`),s.setAttribute(`stroke-width`,`2`),s.setAttribute(`stroke-dasharray`,`5,5`),r.appendChild(o),r.appendChild(s),e.appendChild(r),this.svgCanvas=r}destroy(){this.svgCanvas?.remove(),this.svgCanvas=null,this.map=null}},W=class{map;svgCanvas;path;constructor(e){this.map=e,this.svgCanvas=null,this.path=null}updateArea(e,t,n=z.mm){if(!this.map||!this.svgCanvas)return;let r=this.map.getCanvas().clientWidth,i=this.map.getCanvas().clientHeight,a=this.toPixels(e,n),o=this.toPixels(t,n),s=r/a,c=i/o,l=Math.min(s,c,1),u=a*l,d=o*l,f=(r-u)/2,p=(i-d)/2,m=f+u,h=p+d,g=`M 0 0 L ${r} 0 L ${r} ${i} L 0 ${i} Z M ${f} ${p} L ${m} ${p} L ${m} ${h} L ${f} ${h} Z`;this.path?.setAttribute(`d`,g)}create(){if(!this.map)return;let e=this.map.getCanvasContainer(),t=this.map.getCanvas().clientWidth,n=this.map.getCanvas().clientHeight,r=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);r.style.cssText=`position:absolute;top:0;left:0;width:${t}px;height:${n}px;pointer-events:none;`;let i=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);i.setAttribute(`fill`,`#888888`),i.setAttribute(`fill-opacity`,`0.5`),i.setAttribute(`stroke-width`,`0`),i.setAttribute(`fill-rule`,`evenodd`),r.appendChild(i),e.appendChild(r),this.svgCanvas=r,this.path=i}destroy(){this.svgCanvas?.remove(),this.svgCanvas=null,this.path=null,this.map=null}toPixels(e,t){return t===z.mm?96/25.4*e:96*e}},G=class{toPNG(e,t){e.toBlob(e=>{if(e){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}})}toJPEG(e,t,n=.85){let r=document.createElement(`canvas`);r.width=e.width,r.height=e.height;let i=r.getContext(`2d`);i&&(i.fillStyle=`#FFFFFF`,i.fillRect(0,0,r.width,r.height),i.drawImage(e,0,0));let a=r.toDataURL(`image/jpeg`,Math.max(0,Math.min(1,n))),o=document.createElement(`a`);o.href=a,o.download=t,o.click()}},K=`<svg width="800px" height="800px" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--gis" preserveAspectRatio="xMidYMid meet"><path d="M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z" fill="none" stroke="white" stroke-width="1.5"/><path d="M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z" fill="#000000" fill-rule="evenodd"></path></svg>`,q={image:K,imageName:`gl-export-north-icon`,imageSizeFraction:.05,visibility:`visible`,position:`top-right`},J=class{options;constructor(e){this.options={...q,...e,image:e?.image??K}}async addToMap(e,t,n){let r=this.options.visibility??`visible`;e.getZoom()<2&&t>n&&(r=`none`),await this.addNorthIconImage(e);let i=this.getIconWidth(e,this.options.imageSizeFraction??.08)*.8,a=this.getElementPosition(e,this.options.position??`top-right`,i),o=e.unproject(a),s=this.options.imageName??`gl-export-north-icon`;e.addSource(s,{type:`geojson`,data:{type:`Feature`,geometry:{type:`Point`,coordinates:[o.lng,o.lat]},properties:{}}}),e.addLayer({id:s,source:s,type:`symbol`,layout:{"icon-image":s,"icon-size":1,"icon-rotate":e.getBearing()*-1,"icon-allow-overlap":!0,"icon-ignore-placement":!0,visibility:r},paint:{}})}async addNorthIconImage(e){let t=this.getIconWidth(e,this.options.imageSizeFraction??.08);return new Promise(n=>{let r=new Image(t,t);r.onload=()=>{this.options.imageName&&e.addImage(this.options.imageName,r),n()};function i(e){return`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(e)}this.options.image&&(r.src=i(this.options.image))})}getIconWidth(e,t){let n=e.getContainer(),r=parseInt(n.style.width.replace(`px`,``));return parseInt(`${r*t}`)}getElementPosition(e,t,n=0){let r=e.getContainer(),i=0,a=0;switch(t){case`top-left`:i=0+n,a=0+n;break;case`top-right`:i=parseInt(r.style.width.replace(`px`,``))-n,a=0+n;break;case`bottom-left`:i=0+n,a=parseInt(r.style.height.replace(`px`,``))-n;break;case`bottom-right`:i=parseInt(r.style.width.replace(`px`,``))-n,a=parseInt(r.style.height.replace(`px`,``))-n;break;default:break}return[i,a]}updateOptions(e){this.options={...this.options,...e,image:e.image??this.options.image}}},Y={"circle-radius":8,"circle-color":`red`,"circle-stroke-width":1,"circle-stroke-color":`black`},X=`maplibregl-marker`,ne=class{sourceMap;renderMap;markerClassName;markerCirclePaint;constructor(e,t,n){this.sourceMap=e,this.renderMap=t,this.markerClassName=n?.markerClassName??X,this.markerCirclePaint={...Y,...n?.markerCirclePaint}}getMarkers(){return this.sourceMap.getCanvasContainer().getElementsByClassName(this.markerClassName)}renderMarkers(){let e=this.getMarkers(),t=e.length;if(t===0)return!1;for(let n=0;n<t;n++){let t=e.item(n);if(!t)continue;let r=t.getAttribute(`style`);if(!r)continue;let i=r.match(/translate\(([^,]+)px,\s*([^,]+)px\)/);if(!i)continue;let a=parseInt(i[1]),o=parseInt(i[2]),s=this.sourceMap.unproject([a,o]),c=`print-marker-${n}`;this.renderMap.addSource(c,{type:`geojson`,data:{type:`Point`,coordinates:[s.lng,s.lat]}}),this.renderMap.addLayer({id:c,source:c,type:`circle`,paint:this.markerCirclePaint})}return!0}},re=class{width;height;unit;constructor(e,t,n){this.width=e,this.height=t,this.unit=n}generate(e,t){let n=this.buildPDF(e),r=new Blob([n],{type:`application/pdf`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i)}buildPDF(e){let t=this.unit===z.mm?this.width*2.83465:this.width*72,n=this.unit===z.mm?this.height*2.83465:this.height*72,r=document.createElement(`canvas`);r.width=e.width,r.height=e.height;let i=r.getContext(`2d`);i&&(i.fillStyle=`#FFFFFF`,i.fillRect(0,0,r.width,r.height),i.drawImage(e,0,0));let a=r.toDataURL(`image/jpeg`,.92).split(`,`)[1],o=atob(a),s=new Uint8Array(o.length);for(let e=0;e<o.length;e++)s[e]=o.charCodeAt(e);return this.createPDFStructure(t,n,e.width,e.height,s)}createPDFStructure(e,t,n,r,i){let a=Math.round(e),o=Math.round(t),s=i.length,c=0,l=c;c+=49;let u=c;c+=57;let d=`3 0 obj\n<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${a} ${o}] /Contents 4 0 R /Resources << /XObject << /Im0 5 0 R >> >> >>\nendobj\n`,f=c;c+=d.length;let p=`q\n${a} 0 0 ${o} 0 0 cm\n/Im0 Do\nQ\n`,m=`4 0 obj\n<< /Length ${p.length} >>\nstream\n${p}endstream\nendobj\n`,h=c;c+=m.length;let g=`5 0 obj\n<< /Type /XObject /Subtype /Image /Width ${n} /Height ${r} /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length ${s} >>\nstream\n`,_=c;c+=g.length+s+18;let v=c,y=`xref\n0 6\n0000000000 65535 f \n${String(l).padStart(10,`0`)} 00000 n \n${String(u).padStart(10,`0`)} 00000 n \n${String(f).padStart(10,`0`)} 00000 n \n${String(h).padStart(10,`0`)} 00000 n \n${String(_).padStart(10,`0`)} 00000 n \n`,b=`trailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n${v}\n%%EOF`,x=new TextEncoder,S=[x.encode(`%PDF-1.4
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("react/jsx-runtime"),require("maplibre-gl"),require("react-dom"),require("@mapbox/mapbox-gl-draw")):typeof define==`function`&&define.amd?define([`exports`,`react`,`react/jsx-runtime`,`maplibre-gl`,`react-dom`,`@mapbox/mapbox-gl-draw`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.QmMap={},e.react,e.react_jsx_runtime,e.maplibre_gl,e[`react-dom`],e._mapbox_mapbox_gl_draw))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e},p=(e,t,n)=>(n=e==null?{}:o(u(e)),f(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e));t=p(t,1),a=p(a,1);var m={Swipe:`data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTk3MzE2MzYyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijk2NTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTUzNy4xIDkxMC4yYzAgNy44IDcuOSAwIDAgMHogbS00OS4yIDBjLTcuOSAwIDAgNy44IDAgMHogbTQzOC40LTY1Mi40Yy0yLjctMi41LTYuNC00LTEwLjEtNC0yLjggMC01LjQgMC44LTcuOCAyLjRsLTM3MS4zIDI0M1YxMjMuMWMwLTcuOC0xNi43IDAtMjQuNiAwLTcuOSAwLTI0LjYtNy44LTI0LjYgMHYzNzYuMmwtMzcxLjMtMjQzYy0yLjUtMS42LTUuMS0yLjQtNy45LTIuNC02LjkgMC0xNC40IDUuNC0xNC40IDE0LjJ2NDk3LjRjMCA4LjcgNy41IDE0LjEgMTQuNSAxNC4xIDIuNyAwIDUuNC0wLjggNy44LTIuNGwzNzEuMy0yNDN2Mzc2LjJoNDkuMlY1MzRsMzcxLjMgMjQzYzIuNSAxLjYgNS4xIDIuNCA3LjkgMi40IDMuNyAwIDcuNC0xLjUgMTAuMS00IDItMS44IDQuMy01LjEgNC4zLTEwLjFWMjY4YzAtNS4xLTIuNC04LjMtNC40LTEwLjJ6IiBmaWxsPSIjMTQwQTBBIiBwLWlkPSI5NjUzIj48L3BhdGg+PC9zdmc+`,Legend:`data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTEwNzAzMTU0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQ5NzIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTExMiAxMTJtMzIgMGw3MzYgMHEzMiAwIDMyIDMybDAgNzM2cTAgMzItMzIgMzJsLTczNiAwcS0zMiAwLTMyLTMybDAtNzM2cTAtMzIgMzItMzJaIiBmaWxsPSIjRkZGRkZGIiBwLWlkPSI0OTczIj48L3BhdGg+PHBhdGggZD0iTTEyOCA5Nmg3NjhhMzIgMzIgMCAwIDEgMzIgMzJ2NzY4YTMyIDMyIDAgMCAxLTMyIDMySDEyOGEzMiAzMiAwIDAgMS0zMi0zMlYxMjhhMzIgMzIgMCAwIDEgMzItMzJ6IG0wIDMydjc2OGg3NjhWMTI4SDEyOHoiIGZpbGw9IiM1RDZEN0UiIHAtaWQ9IjQ5NzQiPjwvcGF0aD48cGF0aCBkPSJNMjI0IDM4NGg2NHY2NEgyMjRWMzg0eiBtMCAxMjhoNjR2NjRIMjI0di02NHogbTAgMTI4aDY0djY0SDIyNHYtNjR6IG0wIDEyOGg2NHY2NEgyMjR2LTY0ek01NDQgMzg0aDY0djY0aC02NFYzODR6IG0wIDEyOGg2NHY2NGgtNjR2LTY0eiBtMCAxMjhoNjR2NjRoLTY0di02NHogbTAgMTI4aDY0djY0aC02NHYtNjR6IiBmaWxsPSIjODA4RkExIiBwLWlkPSI0OTc1Ij48L3BhdGg+PHBhdGggZD0iTTMyMCAzODRoMTYwdjY0SDMyMFYzODR6IG0wIDEyOGgxNjB2NjRIMzIwdi02NHogbTAgMTI4aDE2MHY2NEgzMjB2LTY0eiBtMCAxMjhoMTYwdjY0SDMyMHYtNjR6TTY0MCAzODRoMTYwdjY0aC0xNjBWMzg0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiBtMCAxMjhoMTYwdjY0aC0xNjB2LTY0eiIgZmlsbD0iI0FDQjRDMCIgcC1pZD0iNDk3NiI+PC9wYXRoPjxwYXRoIGQ9Ik0yMjQgMjI0aDU3NnY5NkgyMjR6IiBmaWxsPSIjMzBBRDk4IiBwLWlkPSI0OTc3Ij48L3BhdGg+PC9zdmc+`,LayerList:`data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjcyMTMyNjkyNzI3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijg5OTAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTg1Mi42IDQ2Mi45bDEyLjEgNy42YzI0LjggMTUuNiAzMi4zIDQ4LjMgMTYuNyA3My4yLTQuMiA2LjctOS45IDEyLjQtMTYuNyAxNi43TDU0MC40IDc2NC4xYy0xNy4zIDEwLjgtMzkuMiAxMC44LTU2LjQgMEwxNTkuMyA1NjBjLTI0LjgtMTUuNi0zMi4zLTQ4LjMtMTYuNy03My4yIDQuMi02LjcgOS45LTEyLjQgMTYuNy0xNi43bDEyLjEtNy42TDQ4My45IDY1OWMxNy4zIDEwLjggMzkuMiAxMC44IDU2LjQgMGwzMTIuMi0xOTYgMC4xLTAuMXogbTAgMTU2LjFsMTIuMSA3LjZjMjQuOCAxNS42IDMyLjMgNDguMyAxNi43IDczLjItNC4yIDYuNy05LjkgMTIuNC0xNi43IDE2LjdMNTQwLjQgOTIwLjJjLTE3LjMgMTAuOC0zOS4yIDEwLjggNTYuNCAwTDE1OS4zIDcxNi4xYy0yNC44LTE1LjYtMzIuMy00OC4zLTE2LjctNzMuMiA0LjItNi43IDkuOS0xMi40IDE2LjctMTYuN2wxMi4xLTcuNkw0ODMuOSA4MTVjMTcuMyAxMC44IDM5LjIgMTAuOCA1Ni40IDBsMzEyLjItMTk2aDAuMXpNNTQwIDEwNi40bDMyNC42IDIwNC4xYzI0LjggMTUuNiAzMi4zIDQ4LjMgMTYuNyA3My4yLTQuMiA2LjctOS45IDEyLjQtMTYuNyAxNi43TDU0MC40IDYwNGMtMTcuMyAxMC44LTM5LjIgMTAuOC01Ni40IDBMMTU5LjMgMzk5LjhjLTI0LjgtMTUuNi0zMi4zLTQ4LjMtMTYuNy03My4yIDQuMi02LjcgOS45LTEyLjQgMTYuNy0xNi43bDMyNC40LTIwMy43YzE3LjMtMTAuOCAzOS4yLTEwLjggNTYuNCAwbC0wLjEgMC4yeiIgcC1pZD0iODk5MSI+PC9wYXRoPjwvc3ZnPg==`,Print:`data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzc5NjgwOTI2ODcwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE2ODkiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTI5MS42MTk2NCAxMDI0aDQzOC43NThhNzIuOTAxIDcyLjkwMSAwIDAgMCA3MS41NTItNzQuMjUxVjczMS4wNDRIMjE5LjM5MjY0Vjk0OS43NUE3Mi45MDEgNzIuOTAxIDAgMCAwIDI5MS42MjA2NCAxMDI0ek03MzAuMzc3NjQgMC4wMDVIMjkxLjYyMDY0YTcxLjU1MSA3MS41NTEgMCAwIDAtNzIuMjI3IDY3LjUwMXYyMjIuMDhoNTgzLjIxMlY3Mi4yM0E3Mi4yMjYgNzIuMjI2IDAgMCAwIDczNS4xMDI2NCAwLjAwNXogbTE0Ny4xNTMgMjg5LjU4djc0LjkyN0gxNDUuODE2NjR2LTc0LjkyN0g3Mi4yMzk2NEE3My41NzYgNzMuNTc2IDAgMCAwIDAuMDEzNjQgMzY0LjUxMnY1MTMuMDFBNzIuOTAxIDcyLjkwMSAwIDAgMCA3MS41NjQ2NCA5NTEuMWg3NC4yNTJWNjU3LjQ2OEg4NzcuNTMwNjR2MjkyLjk1Nmg3NC4yNTJhNzMuNTc2IDczLjU3NiAwIDAgMCA3Mi4yMjYtNzIuOTAydi01MTMuMDFhNzQuOTI2IDc0LjkyNiAwIDAgMC03NC4yNTEtNzQuOTI3eiBtMCAyMjIuNzU1SDY1Ny40NzY2NHYtNzQuMjUySDg3Ny41MzA2NHoiIHAtaWQ9IjE2OTAiPjwvcGF0aD48L3N2Zz4=`},h=(0,t.memo)(e=>{let{position:r,children:i,name:a,icon:o,width:s,height:c,openHandle:l}=e,[u,d]=(0,t.useState)(!1),[f,p]=(0,t.useState)(!1),m={width:u?s??30:30,height:u?c??30:30,...r};return(0,n.jsxs)(`div`,{className:`maplibregl-control`,style:m,children:[(0,n.jsxs)(`div`,{className:`maplibregl-bar`,children:[(0,n.jsx)(`div`,{className:`maplibregl-bar-button`,onClick:()=>{l?(l(!f),p(!f)):d(!u)},title:a??``,style:{backgroundImage:`url(${o})`}}),a&&(0,n.jsx)(`div`,{className:`maplibregl-bar-title`,children:a})]}),u&&i]})});function g(e,t=new WeakMap){if(typeof e!=`object`||!e)return e;if(t.has(e))return t.get(e);let n;return e instanceof Date?n=new Date(e.getTime()):e instanceof RegExp?(n=new RegExp(e.source,e.flags),n.lastIndex=e.lastIndex):e instanceof Map?(n=new Map,t.set(e,n),e.forEach((e,r)=>{n.set(g(r,t),g(e,t))})):e instanceof Set?(n=new Set,t.set(e,n),e.forEach(e=>{n.add(g(e,t))})):Array.isArray(e)?(n=[],t.set(e,n),e.forEach((e,r)=>{n[r]=g(e,t)})):(n=Object.create(Object.getPrototypeOf(e)),t.set(e,n),Reflect.ownKeys(e).forEach(r=>{let i=e[r];n[r]=g(i,t)})),n}var _=(e,t)=>{let n=null;return r=>{n&&clearTimeout(n),n=setTimeout(()=>{e(r)},t)}},v=(e,t)=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{e.push(t),t.layers instanceof Array&&v(e,t.layers)})},y=(e,t)=>{t[0]instanceof Array?t.forEach(t=>{t[0]instanceof Array?y(e,t):e.extend(t)}):e.extend(t)},b=e=>{let t=new r.LngLatBounds;return y(t,e.geometry.coordinates),t},x=class{_options;get options(){return this._options}constructor(e){this._options=e}onAdd(e,t){if(this._options.isAdd===!1){this._options.isAdd=!1;return}t=e.findValidBeforeId(this._options.id),this.add(e,t),this._options.isAdd=!0}onRemove(e,t){if(this._options.isAdd)return;e.getLayer(this._options.id)&&e.removeLayer(this._options.id);let n=this._options.id+`-ds`;t&&e.removeSource(n),this._options.isAdd=!1}},S=class extends x{constructor(e){super(e),this._options=e}add(e,t){let{id:n,source:r}=this._options,i=this._options.id+`-ds`;typeof r==`string`&&(i=r),!e.getSource(i)&&r&&typeof r!=`string`&&e.addSource(i,r);let a=e.getLayer(n),o=e.getSource(i);if(!a&&o){let n={...this._options,source:i};e.addLayer(n,t)}}},C=class e{_options;get options(){return this._options}_layers=[];get layers(){return this._layers}constructor(t){this._options=t,t.layers.forEach(t=>{let n;n=`layers`in t?new e(t):new S(t),this._layers.push(n)})}onAdd(e,t){this._layers.forEach(n=>{e.addLayerWrapper(n,t)}),this.updateOptions()}onRemove(e){this._layers.forEach(t=>{e.removeLayerWrapper(t,!1)}),this.updateOptions()}updateOptions(){let e=this._layers.findIndex(e=>e.options.isAdd)>-1;this._options.isAdd=e}},w={MAPINITED:`MAPINITED`,MAPCLICKED:`MAPCLICKED`,MAPLAYERCHANGED:`MAPLAYERCHANGED`,MAPDESTRORY:`MAPDESTRORY`},T=class extends r.Map{_id;get id(){return this._id}_options;get options(){return this._options}_mapLayerSetting;get mapLayerSetting(){return this._mapLayerSetting}_images=[];get images(){return this._images}_layers=[];get layers(){return this._layers}constructor(e){super(e),this._options=e,this._id=e.id,this._mapLayerSetting=[],this.fire(w.MAPINITED,{map:this})}getLayerWrapper(e,t){for(let n of e)if(n.options.id===t)return n;else if(`layers`in n){let e=this.getLayerWrapper(n.layers,t);if(e)return e}}addLayerWrapper(e,t){e.onAdd(this,t),this.fire(w.MAPLAYERCHANGED,{map:this,layer:e})}removeLayerWrapper(e,t){e.onRemove(this,t),this.fire(w.MAPLAYERCHANGED,{map:this,layer:e})}load(e){this._mapLayerSetting=e,e.forEach(e=>{let t;t=`layers`in e?new C(e):new S(e),this.addLayerWrapper(t),this._layers.push(t)})}selectFeature(e){this.clearSelect();let t=`location-ds`;this.addSource(t,{type:`geojson`,data:e}),this.addLayer({id:`location-lyr`,type:`line`,paint:{"line-color":`#00ffff`,"line-width":2},source:t})}clearSelect(){let e=`location-lyr`;this.getLayer(e)&&(this.removeLayer(e),this.removeSource(`location-ds`))}findValidBeforeId(e){let t=this.getLayerList(),n=t.findIndex(t=>t.options.id===e);if(n>-1)for(let e=n;e<t.length;e++){let n=this.getLayer(t[e].options.id);if(n)return n.id}}getLayerList(){let e=[];return v(e,this.layers),e}destory(){this.fire(w.MAPDESTRORY,{map:this}),this.remove()}},E=(0,t.createContext)({map:null}),D=()=>{let e=(0,t.useContext)(E);if(!e)throw Error(`只能在函数组件中使用`);return e};function O(e){let{mapOptions:r,mapLayerSettting:i,children:a,onMapLoad:o,className:s}=e,c=(0,t.useRef)(null),[l,u]=(0,t.useState)(!1),{current:d}=(0,t.useRef)({map:null});return(0,t.useEffect)(()=>{let e=new T({pitch:0,bearing:0,doubleClickZoom:!1,attributionControl:!1,renderWorldCopies:!1,trackResize:!0,...r,container:c.current,style:{version:8,glyphs:`/font/{fontstack}/{range}.pbf`,sources:{},layers:[]}}),t=()=>{e.load(g(i)),u(!0),o?.(e),d&&(d.map=e)};e.on(`load`,t),e.on(`click`,()=>{console.log(`center:`,e.getCenter(),`zoom:`,e.getZoom())});let n=_(()=>{e.resize()},10);return new ResizeObserver(n).observe(c?.current),()=>{e.off(`load`,t)}},[]),(0,n.jsx)(`div`,{ref:c,className:s??`map-wrapper`,id:`map-wrapper`,children:l&&d&&(0,n.jsx)(E.Provider,{value:d,children:a})})}var k=(0,t.memo)(O),A=(e,t)=>{for(let n of e){if(n.key===t)return n;if(n.children){let e=A(n.children,t);if(e)return e}}return null},j=e=>{let t=[];return e.children&&e.children.length>0&&e.children.forEach(e=>{t.push(e.key),t.push(...j(e))}),t},M=e=>!e.children||e.children.length===0,N=(e,t)=>t.includes(e.key),P=(e,t)=>{if(M(e))return!1;let n=j(e);if(n.length===0)return!1;let r=n.filter(e=>t.includes(e));return r.length>0&&r.length<n.length},F=(0,t.memo)(e=>{let{node:r,level:i,checkedKeys:a,checkable:o,onCheck:s}=e,[c,l]=(0,t.useState)(!0),u=!M(r),d=N(r,a),f=P(r,a);return(0,n.jsxs)(`div`,{className:`qm-tree-node`,children:[(0,n.jsxs)(`div`,{className:`qm-tree-node-content`,style:{paddingLeft:i*18},children:[(0,n.jsx)(`span`,{className:`qm-tree-switcher ${u?``:`qm-tree-switcher-noop`} ${c?`qm-tree-switcher-expanded`:``}`,onClick:()=>{u&&l(!c)},children:u&&(0,n.jsx)(`svg`,{viewBox:`0 0 1024 1024`,width:`12`,height:`12`,fill:`currentColor`,children:(0,n.jsx)(`path`,{d:`M715.8 493.5L435.6 213.3c-12.4-12.4-32.8-12.4-45.2 0s-12.4 32.8 0 45.2l245.8 245.8-245.8 245.8c-12.4 12.4-12.4 32.8 0 45.2 6.2 6.2 14.3 9.3 22.6 9.3s16.4-3.1 22.6-9.3l280.2-280.2c12.4-12.4 12.4-32.8 0-45.2z`})})}),o&&(0,n.jsx)(`span`,{className:`qm-tree-checkbox ${d?`qm-tree-checkbox-checked`:``} ${f?`qm-tree-checkbox-indeterminate`:``}`,onClick:()=>{s(r.key)},children:(0,n.jsxs)(`span`,{className:`qm-tree-checkbox-inner`,children:[d&&(0,n.jsx)(`svg`,{viewBox:`0 0 1024 1024`,width:`10`,height:`10`,fill:`white`,children:(0,n.jsx)(`path`,{d:`M912 224l-448 448-192-192-64 64 256 256 512-512z`})}),f&&(0,n.jsx)(`span`,{className:`qm-tree-checkbox-indeterminate-icon`})]})}),(0,n.jsx)(`span`,{className:`qm-tree-node-title`,title:typeof r.title==`string`?r.title:``,children:r.title})]}),u&&c&&(0,n.jsx)(`div`,{className:`qm-tree-children`,children:r.children.map(e=>(0,n.jsx)(F,{node:e,level:i+1,checkedKeys:a,checkable:o,onCheck:s},e.key))})]})}),I=(0,t.memo)(e=>{let{treeData:r,checkable:i=!1,checkedKeys:a,onCheck:o,style:s}=e,[c,l]=(0,t.useState)([]),u=a!==void 0,d=u?a:c,f=(e,t)=>{let n=A(r,t);if(!n)return e;let i=e.includes(t),a;if(i){let r=j(n),i=new Set([t,...r]);a=e.filter(e=>!i.has(e))}else{let r=j(n);a=Array.from(new Set([...e,t,...r]))}return a},p=(0,t.useCallback)(e=>{if(u){let t=f(d,e);o?.(t)}else l(t=>{let n=f(t,e);return o?.(n),n})},[d,r,u,o]);return(0,n.jsx)(`div`,{className:`qm-tree`,style:s,children:r.map(e=>(0,n.jsx)(F,{node:e,level:0,checkedKeys:d,checkable:i,onCheck:p},e.key))})}),L=(0,t.memo)(e=>{let[r,i]=(0,t.useState)([]),{map:a}=D(),[o,s]=(0,t.useState)([]),c=(0,t.useCallback)((e,t)=>{let n,r=[];return e.forEach(e=>{n=void 0,n=`layers`in e&&e.options.type===`logicGroup`?{title:e.options.name,key:e.options.id,selectable:!1,children:c(e.layers,t)}:{title:e.options.name,key:e.options.id,selectable:!1},n&&r.push(n),e.options.isAdd&&e.options.type!==`logicGroup`&&t.push(e.options.id)}),r},[]),l=e=>{i(e);let t=new Set([...r,...e]),n=new Set([...t].filter(e=>!r.includes(e))),o=new Set([...t].filter(t=>!e.includes(t)));n.forEach(e=>{let t=a?.getLayerWrapper(a.layers,e);t&&`layers`in t?(t.layers.forEach(e=>{e.options.isAdd=!0}),a?.addLayerWrapper(t)):t&&(t.options.isAdd=!0,a?.addLayerWrapper(t))}),o.forEach(e=>{let t=a?.getLayerWrapper(a.layers,e);t&&`layers`in t?(t.layers.forEach(e=>{e.options.isAdd=!1}),a?.removeLayerWrapper(t)):t&&(t.options.isAdd=!1,a?.removeLayerWrapper(t))}),a.layers.forEach(e=>{u(e)})},u=e=>{`layers`in e&&e.layers.findIndex(e=>e.options.type===`logicGroup`)>-1?e.layers.forEach(e=>{u(e)}):`layers`in e&&e.options.type===`logicGroup`&&(e.layers.findIndex(e=>e.options.isAdd)===-1?e.options.isAdd=!1:e.options.isAdd=!0)};return(0,t.useEffect)(()=>{let e=()=>{let e=[];s(a?c(a.layers,e):[]),i(e)},t=_(()=>{e()},300);return a?.on(w.MAPLAYERCHANGED,t),e(),()=>{a?.off(w.MAPLAYERCHANGED,t)}},[]),(0,n.jsx)(h,{name:`图层控制`,position:e.position,icon:m.LayerList,width:200,height:r.length*28<280?280:r.length*28,children:(0,n.jsx)(I,{checkable:!0,checkedKeys:r,onCheck:e=>l(e),treeData:o,style:{fontSize:12,maxHeight:400,overflowX:`hidden`,overflowY:`auto`}})})}),R=(0,t.memo)(e=>{let{map:r}=D(),[i,a]=(0,t.useState)(),[o,s]=(0,t.useState)(0),c=(0,t.useCallback)((e,t,i)=>{let a;e.forEach(e=>{if(a=void 0,`layers`in e&&!e.options.legend)c(e.layers,t,i);else if(e.options.legend&&(e.options.isAdd||`layers`in e&&e.layers.filter(e=>e.options.isAdd).length)){let{title:i,items:o}=e.options.legend;if(o)a=(0,n.jsxs)(`div`,{className:`maplibregl-legend-group`,children:[(0,n.jsx)(`div`,{className:`maplibregl-legend-tilte`,children:i||e.options.name}),o?.map(e=>{t.push(26);let i=r?.images.find(t=>t.id===e.imageId);return(0,n.jsxs)(`div`,{className:`maplibregl-legend-item`,children:[i?(0,n.jsx)(`img`,{src:i.data,alt:``,className:`maplibregl-legend-item-img`}):(0,n.jsx)(`div`,{className:`maplibregl-legend-item-geo`,style:e.style}),(0,n.jsx)(`div`,{className:`maplibregl-legend-item-text`,children:e.text})]},e.text)})]},e.options.id),t.push(50);else{let{style:o,imageId:s,text:c}=e.options.legend,l=r?.images.find(e=>e.id===s);t.push(26),a=(0,n.jsxs)(`div`,{className:`maplibregl-legend-item`,children:[l?(0,n.jsx)(`img`,{src:l.data,alt:``,className:`maplibregl-legend-item-img`}):(0,n.jsx)(`div`,{className:`maplibregl-legend-item-geo`,style:o}),(0,n.jsx)(`div`,{className:`maplibregl-legend-item-text`,children:c||e.options.name})]},c||i||e.options.id)}}else a=void 0;a&&i.push(a)})},[]);return(0,t.useEffect)(()=>{let e=()=>{let e=[],t=[];c(r.layers,e,t),a(t),s(e.reduce((e,t)=>e+t,0)+40)},t=_(()=>{e()},200);return r?.on(w.MAPLAYERCHANGED,t),e(),()=>{r?.off(w.MAPLAYERCHANGED,t)}},[]),(0,n.jsx)(h,{name:`图例`,position:e.position,icon:m.Legend,width:180,height:o,children:(0,n.jsx)(`div`,{className:`maplibregl-legend`,children:i})})}),z={JPEG:`jpg`,PNG:`png`,PDF:`pdf`,SVG:`svg`},B={mm:`mm`},V={A2:[594,420],A3:[420,297],A4:[297,210],A5:[210,148],A6:[148,105],B2:[707,500],B3:[500,353],B4:[353,250],B5:[250,176],B6:[176,125],Letter:[279,216]},H={横向:`landscape`,纵向:`portrait`},U={72:72,96:96,200:200,300:300,400:400},W=class{map;svgCanvas;constructor(e){this.map=e,this.svgCanvas=null}create(){if(!this.map)return;let e=this.map.getCanvasContainer(),t=this.map.getCanvas().clientWidth,n=this.map.getCanvas().clientHeight,r=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);r.setAttribute(`class`,`qm-print-crosshair`),r.style.cssText=`position:absolute;top:0;left:0;width:${t}px;height:${n}px;pointer-events:none;`;let i=t/2,a=n/2,o=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);o.setAttribute(`x1`,`${i}`),o.setAttribute(`y1`,`0`),o.setAttribute(`x2`,`${i}`),o.setAttribute(`y2`,`${n}`),o.setAttribute(`stroke`,`#dddddd`),o.setAttribute(`stroke-width`,`2`),o.setAttribute(`stroke-dasharray`,`5,5`);let s=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);s.setAttribute(`x1`,`0`),s.setAttribute(`y1`,`${a}`),s.setAttribute(`x2`,`${t}`),s.setAttribute(`y2`,`${a}`),s.setAttribute(`stroke`,`#dddddd`),s.setAttribute(`stroke-width`,`2`),s.setAttribute(`stroke-dasharray`,`5,5`),r.appendChild(o),r.appendChild(s),e.appendChild(r),this.svgCanvas=r}destroy(){this.svgCanvas?.remove(),this.svgCanvas=null,this.map=null}},G=class{map;svgCanvas;path;constructor(e){this.map=e,this.svgCanvas=null,this.path=null}updateArea(e,t,n=B.mm){if(!this.map||!this.svgCanvas)return;let r=this.map.getCanvas().clientWidth,i=this.map.getCanvas().clientHeight,a=this.toPixels(e,n),o=this.toPixels(t,n),s=r/a,c=i/o,l=Math.min(s,c,1),u=a*l,d=o*l,f=(r-u)/2,p=(i-d)/2,m=f+u,h=p+d,g=`M 0 0 L ${r} 0 L ${r} ${i} L 0 ${i} Z M ${f} ${p} L ${m} ${p} L ${m} ${h} L ${f} ${h} Z`;this.path?.setAttribute(`d`,g)}create(){if(!this.map)return;let e=this.map.getCanvasContainer(),t=this.map.getCanvas().clientWidth,n=this.map.getCanvas().clientHeight,r=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);r.style.cssText=`position:absolute;top:0;left:0;width:${t}px;height:${n}px;pointer-events:none;`;let i=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);i.setAttribute(`fill`,`#888888`),i.setAttribute(`fill-opacity`,`0.5`),i.setAttribute(`stroke-width`,`0`),i.setAttribute(`fill-rule`,`evenodd`),r.appendChild(i),e.appendChild(r),this.svgCanvas=r,this.path=i}destroy(){this.svgCanvas?.remove(),this.svgCanvas=null,this.path=null,this.map=null}toPixels(e,t){return t===B.mm?96/25.4*e:96*e}},K=class{toPNG(e,t){e.toBlob(e=>{if(e){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}})}toJPEG(e,t,n=.85){let r=document.createElement(`canvas`);r.width=e.width,r.height=e.height;let i=r.getContext(`2d`);i&&(i.fillStyle=`#FFFFFF`,i.fillRect(0,0,r.width,r.height),i.drawImage(e,0,0));let a=r.toDataURL(`image/jpeg`,Math.max(0,Math.min(1,n))),o=document.createElement(`a`);o.href=a,o.download=t,o.click()}},q=`<svg width="800px" height="800px" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--gis" preserveAspectRatio="xMidYMid meet"><path d="M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z" fill="none" stroke="white" stroke-width="1.5"/><path d="M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z" fill="#000000" fill-rule="evenodd"></path></svg>`,J={image:q,imageName:`gl-export-north-icon`,imageSizeFraction:.05,visibility:`visible`,position:`top-right`},Y=class{options;constructor(e){this.options={...J,...e,image:e?.image??q}}async addToMap(e,t,n){let r=this.options.visibility??`visible`;e.getZoom()<2&&t>n&&(r=`none`),await this.addNorthIconImage(e);let i=this.getIconWidth(e,this.options.imageSizeFraction??.08)*.8,a=this.getElementPosition(e,this.options.position??`top-right`,i),o=e.unproject(a),s=this.options.imageName??`gl-export-north-icon`;e.addSource(s,{type:`geojson`,data:{type:`Feature`,geometry:{type:`Point`,coordinates:[o.lng,o.lat]},properties:{}}}),e.addLayer({id:s,source:s,type:`symbol`,layout:{"icon-image":s,"icon-size":1,"icon-rotate":e.getBearing()*-1,"icon-allow-overlap":!0,"icon-ignore-placement":!0,visibility:r},paint:{}})}async addNorthIconImage(e){let t=this.getIconWidth(e,this.options.imageSizeFraction??.08);return new Promise(n=>{let r=new Image(t,t);r.onload=()=>{this.options.imageName&&e.addImage(this.options.imageName,r),n()};function i(e){return`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(e)}this.options.image&&(r.src=i(this.options.image))})}getIconWidth(e,t){let n=e.getContainer(),r=parseInt(n.style.width.replace(`px`,``));return parseInt(`${r*t}`)}getElementPosition(e,t,n=0){let r=e.getContainer(),i=0,a=0;switch(t){case`top-left`:i=0+n,a=0+n;break;case`top-right`:i=parseInt(r.style.width.replace(`px`,``))-n,a=0+n;break;case`bottom-left`:i=0+n,a=parseInt(r.style.height.replace(`px`,``))-n;break;case`bottom-right`:i=parseInt(r.style.width.replace(`px`,``))-n,a=parseInt(r.style.height.replace(`px`,``))-n;break;default:break}return[i,a]}updateOptions(e){this.options={...this.options,...e,image:e.image??this.options.image}}},X={"circle-radius":8,"circle-color":`red`,"circle-stroke-width":1,"circle-stroke-color":`black`},ee=`maplibregl-marker`,te=class{sourceMap;renderMap;markerClassName;markerCirclePaint;constructor(e,t,n){this.sourceMap=e,this.renderMap=t,this.markerClassName=n?.markerClassName??ee,this.markerCirclePaint={...X,...n?.markerCirclePaint}}getMarkers(){return this.sourceMap.getCanvasContainer().getElementsByClassName(this.markerClassName)}renderMarkers(){let e=this.getMarkers(),t=e.length;if(t===0)return!1;for(let n=0;n<t;n++){let t=e.item(n);if(!t)continue;let r=t.getAttribute(`style`);if(!r)continue;let i=r.match(/translate\(([^,]+)px,\s*([^,]+)px\)/);if(!i)continue;let a=parseInt(i[1]),o=parseInt(i[2]),s=this.sourceMap.unproject([a,o]),c=`print-marker-${n}`;this.renderMap.addSource(c,{type:`geojson`,data:{type:`Point`,coordinates:[s.lng,s.lat]}}),this.renderMap.addLayer({id:c,source:c,type:`circle`,paint:this.markerCirclePaint})}return!0}},ne=class{width;height;unit;constructor(e,t,n){this.width=e,this.height=t,this.unit=n}generate(e,t){let n=this.buildPDF(e),r=new Blob([n],{type:`application/pdf`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i)}buildPDF(e){let t=this.unit===B.mm?this.width*2.83465:this.width*72,n=this.unit===B.mm?this.height*2.83465:this.height*72,r=document.createElement(`canvas`);r.width=e.width,r.height=e.height;let i=r.getContext(`2d`);i&&(i.fillStyle=`#FFFFFF`,i.fillRect(0,0,r.width,r.height),i.drawImage(e,0,0));let a=r.toDataURL(`image/jpeg`,.92).split(`,`)[1],o=atob(a),s=new Uint8Array(o.length);for(let e=0;e<o.length;e++)s[e]=o.charCodeAt(e);return this.createPDFStructure(t,n,e.width,e.height,s)}createPDFStructure(e,t,n,r,i){let a=Math.round(e),o=Math.round(t),s=i.length,c=0,l=c;c+=49;let u=c;c+=57;let d=`3 0 obj\n<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${a} ${o}] /Contents 4 0 R /Resources << /XObject << /Im0 5 0 R >> >> >>\nendobj\n`,f=c;c+=d.length;let p=`q\n${a} 0 0 ${o} 0 0 cm\n/Im0 Do\nQ\n`,m=`4 0 obj\n<< /Length ${p.length} >>\nstream\n${p}endstream\nendobj\n`,h=c;c+=m.length;let g=`5 0 obj\n<< /Type /XObject /Subtype /Image /Width ${n} /Height ${r} /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length ${s} >>\nstream\n`,_=c;c+=g.length+s+18;let v=c,y=`xref\n0 6\n0000000000 65535 f \n${String(l).padStart(10,`0`)} 00000 n \n${String(u).padStart(10,`0`)} 00000 n \n${String(f).padStart(10,`0`)} 00000 n \n${String(h).padStart(10,`0`)} 00000 n \n${String(_).padStart(10,`0`)} 00000 n \n`,b=`trailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n${v}\n%%EOF`,x=new TextEncoder,S=[x.encode(`%PDF-1.4
|
|
2
2
|
`),x.encode(`1 0 obj
|
|
3
3
|
<< /Type /Catalog /Pages 2 0 R >>
|
|
4
4
|
endobj
|
|
@@ -8,7 +8,7 @@ endobj
|
|
|
8
8
|
`),x.encode(d),x.encode(m),x.encode(g),i,x.encode(`
|
|
9
9
|
endstream
|
|
10
10
|
endobj
|
|
11
|
-
`),x.encode(y),x.encode(b)],C=S.reduce((e,t)=>e+t.length,0),w=new Uint8Array(C),T=0;for(let e of S)w.set(e,T),T+=e.length;return w.buffer}},
|
|
11
|
+
`),x.encode(y),x.encode(b)],C=S.reduce((e,t)=>e+t.length,0),w=new Uint8Array(C),T=0;for(let e of S)w.set(e,T),T+=e.length;return w.buffer}},re=class{toSVG(e,t,n,r,i,a){let o=e.toDataURL(`image/png`),s=i===`mm`?a/25.4:a,c=s*n,l=s*r,u=`
|
|
12
12
|
<svg xmlns="http://www.w3.org/2000/svg"
|
|
13
13
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
14
14
|
version="1.1"
|
|
@@ -17,7 +17,7 @@ endobj
|
|
|
17
17
|
viewBox="0 0 ${c} ${l}"
|
|
18
18
|
xml:space="preserve">
|
|
19
19
|
<image xlink:href="${o}" width="${c}" height="${l}"></image>
|
|
20
|
-
</svg>`,d=`data:application/xml,${encodeURIComponent(u)}`,f=document.createElement(`a`);f.href=d,f.download=t,f.click()}},
|
|
20
|
+
</svg>`,d=`data:application/xml,${encodeURIComponent(u)}`,f=document.createElement(`a`);f.href=d,f.download=t,f.click()}},ie=class{map;width;height;dpi;format;unit;jpegQuality;northIcon;northIconOptions;markerOptions;constructor(e,t,n,r,i=B.mm,a){this.map=e,this.width=t[0],this.height=t[1],this.dpi=n,this.format=r,this.unit=i,this.jpegQuality=a?.jpegQuality??.85,this.northIcon=a?.northIcon??!1,this.northIconOptions=a?.northIconOptions,this.markerOptions=a?.markerOptions??{}}generate(e){this.showLoading();let t=window.devicePixelRatio;Object.defineProperty(window,"devicePixelRatio",{get:()=>this.dpi/96});let n=document.createElement(`div`);n.className=`qm-print-hidden-container`,n.style.cssText=`
|
|
21
21
|
position: fixed;
|
|
22
22
|
top: 0;
|
|
23
23
|
left: 0;
|
|
@@ -25,4 +25,4 @@ endobj
|
|
|
25
25
|
height: 100%;
|
|
26
26
|
visibility: hidden;
|
|
27
27
|
pointer-events: none;
|
|
28
|
-
`;let i=document.createElement(`div`),a=this.toPixels(this.width),o=this.toPixels(this.height);i.style.cssText=`position:absolute;top:0;left:0;width:${a}px;height:${o}px;`,n.appendChild(i),document.body.appendChild(n);let s=new r.Map({container:i,style:this.map.getStyle(),center:this.map.getCenter(),zoom:this.map.getZoom(),bearing:this.map.getBearing(),pitch:this.map.getPitch(),interactive:!1,fadeDuration:0,attributionControl:!1,canvasContextAttributes:{preserveDrawingBuffer:!0},transformRequest:this.map._requestManager._transformRequestFn});this.map.getTerrain()&&(s.setMaxPitch(85),s.setPitch(this.map.getPitch()));let c=this.map.style?.imageManager?.images||[];Object.keys(c).forEach(e=>{s.hasImage(e)||s.addImage(e,c[e].data)});let l=()=>new Promise(e=>{if(!s.isStyleLoaded()||!s.areTilesLoaded()){setTimeout(l,100);return}setTimeout(e,200)});s.once(`idle`,async()=>{await l(),this.northIcon&&(await new J(this.northIconOptions).addToMap(s,this.width,this.height),await new Promise(e=>{s.once(`idle`,()=>{setTimeout(e,200)})})),new ne(this.map,s,this.markerOptions).renderMarkers()&&await new Promise(e=>{s.once(`idle`,()=>{setTimeout(e,200)})});let r=s.getCanvas(),i=r.getContext(`webgl`)||r.getContext(`webgl2`);i&&i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,new Uint8Array(4));let a=`map.${this.format}`,o=new G;switch(this.format){case R.PNG:o.toPNG(r,a);break;case R.JPEG:o.toJPEG(r,a,this.jpegQuality);break;case R.PDF:new re(this.width,this.height,this.unit).generate(r,a);break;case R.SVG:new ie().toSVG(r,a,this.width,this.height,this.unit,this.dpi);break}s.remove(),n.remove(),Object.defineProperty(window,"devicePixelRatio",{get:()=>t}),this.hideLoading(),e?.()})}toPixels(e){return this.unit===z.mm?96/25.4*e:96*e}showLoading(){let e=document.createElement(`div`);e.className=`qm-print-loading-overlay`,e.innerHTML=`<div class="qm-print-loading-spinner"></div><div class="qm-print-loading-text">正在生成...</div>`,document.body.appendChild(e)}hideLoading(){document.querySelector(`.qm-print-loading-overlay`)?.remove()}},oe=(0,t.memo)(e=>{let{map:r}=O(),[i,a]=(0,t.useState)(!1),[o,s]=(0,t.useState)({PageSize:B.A4,PageOrientation:V.横向,Format:R.PDF,DPI:H[300],Crosshair:!0,PrintableArea:!0}),c=(0,t.useRef)(null),l=(0,t.useRef)(null);(0,t.useEffect)(()=>{if(r)return i?(o.Crosshair&&(c.current=new U(r),c.current.create()),o.PrintableArea&&(l.current=new W(r),l.current.create()),u()):(c.current?.destroy(),c.current=null,l.current?.destroy(),l.current=null),()=>{c.current?.destroy(),l.current?.destroy()}},[r,i,o.Crosshair,o.PrintableArea,o.PageSize,o.PageOrientation]);let u=(0,t.useCallback)(()=>{if(!l.current)return;let e=o.PageSize;o.PageOrientation===V.纵向?l.current.updateArea(e[1],e[0]):l.current.updateArea(e[0],e[1])},[o.PageSize,o.PageOrientation]),d=(0,t.useCallback)(()=>{if(!r)return;let e=[...o.PageSize];o.PageOrientation===V.纵向&&(e=[e[1],e[0]]),new ae(r,e,o.DPI,o.Format,z.mm,{jpegQuality:o.JPEGQuality,northIcon:!0}).generate(()=>{a(!1)})},[r,o]),f=e=>{console.log(`打印面板:`,e),a(e)},p=Object.entries(B).map(([e,t])=>(0,n.jsx)(`option`,{value:JSON.stringify(t),children:e},e)),m=Object.entries(V).map(([e,t])=>(0,n.jsx)(`option`,{value:t,children:e},e)),_=Object.entries(R).map(([e,t])=>(0,n.jsx)(`option`,{value:t,children:e},e)),v=Object.entries(H).map(([e,t])=>(0,n.jsx)(`option`,{value:t,children:e},e));return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(g,{name:`打印`,position:e.position,icon:h.Print,openHandle:f,children:(0,n.jsx)(n.Fragment,{})}),(0,n.jsxs)(`div`,{className:`qm-print-panel ${i?`open`:``}`,style:{position:`absolute`,top:(e.position.top??0)+34,right:e.position.right??10},children:[(0,n.jsx)(`table`,{className:`qm-print-panel-table`,children:(0,n.jsxs)(`tbody`,{children:[(0,n.jsxs)(`tr`,{children:[(0,n.jsx)(`td`,{children:(0,n.jsx)(`label`,{children:`页面尺寸`})}),(0,n.jsx)(`td`,{children:(0,n.jsx)(`select`,{id:`print-page-size`,value:JSON.stringify(o.PageSize),onChange:e=>{s(t=>({...t,PageSize:JSON.parse(e.target.value)})),u()},children:p})})]}),(0,n.jsxs)(`tr`,{children:[(0,n.jsx)(`td`,{children:(0,n.jsx)(`label`,{children:`布局方向`})}),(0,n.jsx)(`td`,{children:(0,n.jsx)(`select`,{id:`print-orientation`,value:o.PageOrientation,onChange:e=>{s(t=>({...t,PageOrientation:e.target.value})),u()},children:m})})]}),(0,n.jsxs)(`tr`,{children:[(0,n.jsx)(`td`,{children:(0,n.jsx)(`label`,{children:`导出格式`})}),(0,n.jsx)(`td`,{children:(0,n.jsx)(`select`,{id:`print-format`,value:o.Format,onChange:e=>s(t=>({...t,Format:e.target.value})),children:_})})]}),(0,n.jsxs)(`tr`,{children:[(0,n.jsx)(`td`,{children:(0,n.jsx)(`label`,{children:`DPI`})}),(0,n.jsx)(`td`,{children:(0,n.jsx)(`select`,{id:`print-dpi`,value:o.DPI,onChange:e=>s(t=>({...t,DPI:Number(e.target.value)})),children:v})})]})]})}),(0,n.jsx)(`button`,{type:`button`,className:`qm-print-export-button`,onClick:d,children:`导 出`})]})]})});function se(e,t){let n=e.getCenter(),r=e.getZoom(),i=e.getBearing(),a=e.getPitch();t.forEach(e=>{e.jumpTo({center:n,zoom:r,bearing:i,pitch:a})})}function ce(...e){let t;t=e.length===1&&Array.isArray(e[0])?e[0]:e;let n=[];t.forEach((e,r)=>{let i=t.filter((e,t)=>t!==r);n[r]=()=>a(e,i)});function r(){t.forEach((e,t)=>{e.on(`move`,n[t])})}function i(){t.forEach((e,t)=>{e.off(`move`,n[t])})}function a(e,t){i(),se(e,t),r()}return r(),()=>{i()}}var Z=class{options;_mapA;_mapB;_horizontal;_bounds;currentPosition=0;_swiper;_controlContainer;_clearSync;_onResize;_eventTarget;constructor(e,t,n,r={}){this.options={orientation:`vertical`,mousemove:!1,...r},this._mapA=e,this._mapB=t,this._horizontal=this.options.orientation===`horizontal`,this._eventTarget=new EventTarget,this._swiper=document.createElement(`div`),this._swiper.className=this._horizontal?`compare-swiper-horizontal`:`compare-swiper-vertical`,this._controlContainer=document.createElement(`div`),this._controlContainer.className=this._horizontal?`maplibregl-compare maplibregl-compare-horizontal`:`maplibregl-compare`,this._controlContainer.appendChild(this._swiper),this._mountContainer(n),this._bounds=this._mapB.getContainer().getBoundingClientRect();let i=this._horizontal?this._bounds.height/2:this._bounds.width/2;this._setPosition(i),this._clearSync=ce(this._mapA,this._mapB),this._onResize=()=>{this._bounds=this._mapB.getContainer().getBoundingClientRect(),this.currentPosition&&this._setPosition(this.currentPosition)},this._mapB.on(`resize`,this._onResize),this.options.mousemove&&(this._mapA.getContainer().addEventListener(`mousemove`,this._onMove),this._mapB.getContainer().addEventListener(`mousemove`,this._onMove)),this._swiper.addEventListener(`mousedown`,this._onDown),this._swiper.addEventListener(`touchstart`,this._onDown)}_mountContainer(e){if(typeof e==`string`){let t=document.querySelector(e);if(!t)throw Error(`找不到容器`);t.appendChild(this._controlContainer)}else if(e instanceof HTMLElement)e.appendChild(this._controlContainer);else throw Error(`容器必须是字符串选择器或 HTML 元素`)}_setPointerEvents(e){this._controlContainer.style.pointerEvents=e,this._swiper.style.pointerEvents=e}_onDown=e=>{`touches`in e?(document.addEventListener(`touchmove`,this._onMove),document.addEventListener(`touchend`,this._onTouchEnd)):(document.addEventListener(`mousemove`,this._onMove),document.addEventListener(`mouseup`,this._onMouseUp))};_setPosition(e){let t=this._horizontal?this._bounds.height:this._bounds.width,n=Math.max(0,Math.min(e,t)),r=this._horizontal?`translate(0, ${n}px)`:`translate(${n}px, 0)`;this._controlContainer.style.transform=r,this._controlContainer.style.webkitTransform=r;let i=this._bounds.height,a,o;this._horizontal?(a=`rect(0, 999em, ${n}px, 0)`,o=`rect(${n}px, 999em, ${i}px, 0)`):(a=`rect(0, ${n}px, ${i}px, 0)`,o=`rect(0, 999em, ${i}px, ${n}px)`),this._mapA.getContainer().style.clip=a,this._mapB.getContainer().style.clip=o,this.currentPosition=n}_onMove=e=>{this.options.mousemove&&this._setPointerEvents(`none`),this._horizontal?this._setPosition(this._getY(e)):this._setPosition(this._getX(e))};_onMouseUp=()=>{document.removeEventListener(`mousemove`,this._onMove),document.removeEventListener(`mouseup`,this._onMouseUp),this._emitSlideEnd()};_onTouchEnd=()=>{document.removeEventListener(`touchmove`,this._onMove),document.removeEventListener(`touchend`,this._onTouchEnd),this._emitSlideEnd()};_emitSlideEnd(){this._eventTarget.dispatchEvent(new CustomEvent(`slideend`,{detail:{currentPosition:this.currentPosition}}))}_getX(e){let t=(`touches`in e?e.touches[0]:e).clientX-this._bounds.left;return Math.max(0,Math.min(t,this._bounds.width))}_getY(e){let t=(`touches`in e?e.touches[0]:e).clientY-this._bounds.top;return Math.max(0,Math.min(t,this._bounds.height))}setSlider(e){this._setPosition(e)}on(e,t){this._eventTarget.addEventListener(e,e=>{let n=e.detail;t(n)})}off(e,t){this._eventTarget.removeEventListener(e,t)}remove(){this._clearSync(),this._mapB.off(`resize`,this._onResize),[this._mapA,this._mapB].forEach(e=>{let t=e.getContainer();t.style.clip=``,t.removeEventListener(`mousemove`,this._onMove)}),this._swiper.removeEventListener(`mousedown`,this._onDown),this._swiper.removeEventListener(`touchstart`,this._onDown),this._controlContainer.remove()}};window.maplibregl&&(window.maplibregl.Compare=Z);var le=(0,t.memo)(e=>{let{title:r,open:a=!1,maskClosable:o=!0,mask:s,width:c=520,footer:l,onCancel:u,destroyOnHidden:d=!1,className:f,style:p,children:m,centered:h=!1}=e,g=s?.closable===void 0?o:s.closable,[_,v]=(0,t.useState)(a);(0,t.useEffect)(()=>{if(a)v(!0),document.body.style.overflow=`hidden`;else if(document.body.style.overflow=``,d){let e=setTimeout(()=>{v(!1)},200);return()=>clearTimeout(e)}},[a,d]),(0,t.useEffect)(()=>()=>{document.body.style.overflow=``},[]);let y=(0,t.useCallback)(e=>{e.target===e.currentTarget&&g&&u?.()},[g,u]),b=(0,t.useCallback)(e=>{e.stopPropagation(),u?.()},[u]);return _?(0,i.createPortal)((0,n.jsxs)(`div`,{className:`qm-modal-wrapper ${a?`qm-modal-open`:``} ${h?`qm-modal-centered`:``}`,children:[(0,n.jsx)(`div`,{className:`qm-modal-mask ${a?`qm-modal-mask-enter`:`qm-modal-mask-leave`}`}),(0,n.jsx)(`div`,{className:`qm-modal-container`,onClick:y,children:(0,n.jsxs)(`div`,{className:`qm-modal ${f||``} ${a?`qm-modal-enter`:`qm-modal-leave`}`,style:{width:typeof c==`number`?`${c}px`:c,...p},onClick:e=>e.stopPropagation(),children:[r&&(0,n.jsxs)(`div`,{className:`qm-modal-header`,children:[(0,n.jsx)(`div`,{className:`qm-modal-title`,children:r}),(0,n.jsx)(`button`,{type:`button`,className:`qm-modal-close`,onClick:b,"aria-label":`关闭`,children:(0,n.jsx)(`span`,{className:`qm-modal-close-x`,children:`×`})})]}),(0,n.jsx)(`div`,{className:`qm-modal-body`,children:m}),l!==null&&(0,n.jsx)(`div`,{className:`qm-modal-footer`,children:l})]})})]}),document.body):null}),ue=(0,t.memo)(e=>{let{map:r}=O(),[i,a]=(0,t.useState)(!1),[o,s]=(0,t.useState)(null),[c,l]=(0,t.useState)(null),u=(0,t.useCallback)(e=>{a(e)},[]);return(0,t.useEffect)(()=>{if(o&&c){let e=document.getElementById(`swipeContainer`);e&&(new Z(o,c,e,{mousemove:!1,orientation:`vertical`}),o.setCenter(r.getCenter()),o.setZoom(r.getZoom()),o.setBearing(r.getBearing()),c.setPitch(r.getPitch()))}},[o,c]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(g,{name:`卷帘对比`,position:{...e.position},icon:h.Swipe,openHandle:u,children:(0,n.jsx)(n.Fragment,{})}),(0,n.jsx)(le,{title:`卷帘对比`,mask:{closable:!1},open:i,width:1e3,footer:null,onCancel:()=>a(!1),destroyOnHidden:!0,children:(0,n.jsxs)(`div`,{id:`swipeContainer`,className:`maplibregl-swipe`,children:[(0,n.jsx)(A,{mapOptions:{...r.options,id:`swipeBeforeMap`},mapLayerSettting:r.mapLayerSetting,onMapLoad:e=>s(e),className:`swipe-map-container`,children:(0,n.jsx)(I,{position:{top:10,left:10}})}),(0,n.jsx)(A,{mapOptions:{...r.options,id:`swipeAfterMap`},mapLayerSettting:r.mapLayerSetting,onMapLoad:e=>l(e),className:`swipe-map-container`,children:(0,n.jsx)(I,{position:{top:10,right:10}})})]})})]})}),Q={Point:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAARxJREFUWEft1LEuREEYxfHf9jRLIRIqnUSpoOEFREUh3kFBo6LYKEj0StEp8ARUEvUmOg2NSHT07pW73XK/mZBtZto5c87/npn7dYx4dUacrwCUBkoDpYHcBiYwjTG84g2fOUMtB+AYu0PC9nGUCpEK8IyZX0IOq72DFIgUgFusBMw3cBnQfUuiAOu4ippivLqmj4g+ClDfby9i2Gjm8BTRRwFusBYxbDTLuI/oowCn2IkYNpoF9CP6KMA2ziOGjWYS7xF9FKDbfFE9fNrWSTWU9tpEg/0oQK3fwkWL8Qtmo+Epv+HAc6kawWfVfz4/JOQOqynhOQD1mXr+b2IRU3jAI65Tw3MBcnJ+PJPyBv40OOcRFoDSQGngXxr4App1HCGF2UdQAAAAAElFTkSuQmCC`,Line:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAp1JREFUWEe9l0uIjlEYx3+zsZGFsqCUe0hEiXFJ7iklxUxZMcVIE7IZFm4TJWYzLolQLKYmTKLIJYaYRolyySULpMRmFkwoC85/Oq/ejvO93zlHvWf7vc95fu/z/J//8341lHuWArOBJ8AVpa4pMf9eYE8u311gQVkAdcB5z8vWlwXgvn3G0lIWwFjgracC48oCUG63CmeBhmoAs4CJwC/gKtD7H6JtBg4C14FNwPtqU6CRueEkHGqCvyRC3JHqge3AoeyOogo8BGY6yY6aKmxJABicq94M4FEIwFdgkJPsmglengCwErgEPAem5OOLKnAfmOska7FiimU4AWwEjgBbQwHmA12eTCkQEtwIQJW4HApQC/QALwE52aScm8VAzAEeWA0MMXb8OxRgH7ATOAOst0F5Sw2FyMavE1jtVrRIA9pY04ANwOlcYCzETWAJ0AicCgVQv9S3PjuKakP+hELIxLLYYcDnUACVXLS3ABmS74RAZPdIS/oO+OdUaoFmVoqVDnYXzFw1CPn9WmAXsD8UYKBV7ABgYYVRDGmHbFvqHwNMBZ6GAqyws/oGmBDoOL5KrAIumo33ARhZ6R5fCw5bvz9nhLguEECPuRDaI8uAY8DmGAB9OOgDYo2pQEcEgAuRhX4zK1im5k5S/+9uBaTUbrMyfxhyudb3SACN2idPjOslfx9xAaR4OdxtI6DFkcn1uDadT2xNwPEQEd4D5tmNpc2Vcj4a5xzuBKqy8oJCHxgPvLZPjDbz+y4lux27VmAR8Mr6iOzYe7IWSO3606BxeQFMTkweHSaAHcABJ7LerN8L0bclBAjgmeeNHwPTE+6LDhGAeu06lTbhqOjbEgIEcNLu6nx4G7At4b7okEyEEqBW50+g3dyifzGlnD8S4H8a/N0aLAAAAABJRU5ErkJggg==`,Rectangle:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAASxJREFUWEft16FKBWEQBeDvvodBRCw+gFWbgtVkEkWLil6wGbSLgiZBxKDFajB6owgGwSQ3GMTmMyhz3YVluRdW+BcM/4FlYXf2zPnPzMJMxy92cYx7POGgeJ76dooFfOEGZx1sIV5UsYKrxNmH5emGgEfMJE7WmC4EvGK69sUbPhuzNAscR1xV9EJA1D56oIo59JrxNo5axnUt+jAEBMr6vGO/aJDGzH8InMU5pjDos1JAcHwXp47Tt4kHhJBB7iwgO5AdyA5kB7ID2YHsQHbg3ziwXgyLMaYdYa+loXAztqGCe7vcjG6xVEvYxUliEYu4q3EOVrOYhuv4QD+xgDFM1jj7owQkzj2S7jkEDCvBKi4Tq4gyR64qNsq/YA2xOgUuWtyMQsQ8JrCDlx+OVWdvFenv8gAAAABJRU5ErkJggg==`,Polygon:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAxVJREFUWEe1133InnMUB/DPKCQS87ZQtrJ5yT8LUShaJKHWzMSaWqkt07LyEjEvQykrL2WRFautoZBt3hoRhkRqjLyUKMuyGLHWan3X73q6unff7t+953Lq6um5nt855/s7z/ec870mqLfDcBeuwd94E7fUu/c/OWGEAIuxvOf8Ejw6Qox9jo4C4HtM6ZPsM/Q+/TAdWfx/xtbmwCgANuP0ytt+hE3IzzznYW3L9znMy++jAHgIt/cAeAw7cApOKwAPrAR5L5bWAjgKH+DUEjzVGETCizEV03AGzsTxfUC9jstqATyM2/Aqrqq8YXPsEPzTxyfkXVID4AK8iwNKmbeMCCDHV+DGlt83mImvagC8XG79CG7dj+SNy7VYiYNxOdbXkHA+nsFfCA92jQNAXH/EyTgRvwwDkJJ/WYi0AE+NM3ncPywteQ4+HQbgAdyJzzG9g+QJ8VL534fIIfTAOXASvsNBuLS0XBcYHsdNGKvoIBKuKUvnRVzdReYS4w48iPtwz6AK5MYZErFUIrO7K7uhdMLTTVv2q0DIcRaWlfXbVfLEuQRv4DVc0a7AE6U38y5t8jsmdpm5xMpYTmeNETsVWIgne5KFLDf/DwCOxm/4FZOaCvTb8+mALJ7dHYPIpoyayjQ8BttSgZDshJ5E28vk6zj/3nA/YHIZcHt3QXb6op5MUTghYteWcf4KzseFeD8ADkWmXhia/d1Y9sCzHSK4srRgQMS2YX67DQ8vxIj4zKT6s4D6uCMQ7yGrvW0bBk3C5vAnpVQ79xPE2ZhRej66cB8bBCD67h0chzEBWQkiJU5rR5pdNMRn/X8JknyAZCfE8gHS+03Qjn0EZpUnibPEGguhox834n6cW/7wBxYPU0R3I+o1lnlxLL4uUzM6Lze8vnAlur+xb/EW1mFD633Uc6RYtEbefzEMQHxX4bqeUiZ4BlWWVWOZbm+XNssWrbIaAOHA3AHRUoUsl5Q4eu/fqqytQzUAVmNOn8DhRRTOT6MmbZ+vAZDbpwptewGzx5O48a0BkLNLizTPAomYeL7M9HFj2AMTmY45mDBG5AAAAABJRU5ErkJggg==`,Trash:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA71JREFUWEfNl2nIVlUQx3+vgoRrai6lpaaiJbgU5QeXygVREVdUxF0RTa0oF3BBW6AFxRUXXHLrg5qgIgruS35QM1ooI3LFXdyKKAiq83+ZI+Pj83jPKynOpzlzZ87935n/mTm3iHTZB7ye6L4feCPFtyjFyXz+LYGvXJP2TnLKAfB+BpAZ9jxp7ySnPABmFgAh+wMBGAoMyfiyWH/V936S6rcaWKUMPA1cLGF9/w/3G0DVWILPAWXhUcoqYFhJOPBQwD2WACoAv9nn1gSuuE+vayxfAhzJSUkvoDKwIsdeA7hstmeAS/55vgxMAz40p4+A6S4gHrMzwPMBjG9OUR8mdrsY7aU9JW2BQ1kAxgV2LjCnecA7LmAqIFCSMsDfpj8B/Gn6FOBjFzMXeNvWLYBvswAMCl+3xpxWAiNcwGTgE1uXdS9V6nWsJO8Cc1yMSjLc1g2Ak1kAugFbzWkD0M8FvAfMsnVF4HfTfS8ZA4gjUdYDfW2Ry6m8A6MNcNACdgBd3GZKpVIqqRJSe9P0esAp03M5sD0QtrM9Kw/8kZWBpsB35vQVIEBRxgILbSF2XzX9ReBH0/sD+uooIl1r4J9A7tL+5dLznYLnQoc6a44C0twFjQqte6mta7kW/hJw3Ow9gC0uRqRrBtwO2XsyBUClwPxb5qi01ndBIlM853UCuc7Zs1aAsiXpBOx0MSKdjuz5EPtsCgD5KF3KzjWgugsaDGiKSQQs1r19SPNus7/mOCSTylQN+DmU5oVUACKX0vUXUM4AKXYA8IVt0iisfzG9K7DN9FeBY6aXMtKpT8imZ3dJoVlwOnQztV2JgKh+Eh2nSLAmYf2T2fsAG00XiX8w3ZdTd8p2qQAiceRfG7hgger3m0wXsb43fWAoyVrTGwK/mi6iqvYS9ZbuqQB061EtJaqb6ifxTepl4BuzjwSWmS6ixZc2Do3shNlVOgG9SwqVYLND62uqhqLGImkZmtRR08eHxjTf9KeA66a/4nx0fEenAhDTxXiJGL7X9I7uiKm5HDb7ROAz0323U833mH02MCEVgKbgW+bsG4t+NiIYXT4PmI9G9gemq9vpGEtUc2VTouv8PbfpQiXQZvEeoOm4ziH/OkxEHSs1nEhOnRhlQ8fS/xF5cipLcZDd2a4QAI1UpUzyJrA4N3WJa03GReabOyWLzYUA6A6w3AJ1B4j1TXzvHbdJwKe2ys3kfQH0Br60wKwfkSxQ8Uelp+NDZgk6ALuydi7hc52gOC8yAei2o5Ga+juehaX4JySf03+JLrAhSDUYWAAAAABJRU5ErkJggg==`,Reset:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAuRJREFUWEfVl1moTWEUx3+31M1U5JYxxQuJa7xvEg+UMpOkDFcevChEGUMi8/gkD24kSaIkRJEhM1cyJA83JMKD5AUPvv9tfVpOe5999j3XkVX7tPfZa/h/3/p/a61dxT+Wqn8cn/8SwAhgHDAW6Ap0A9oDH+y6C5wHrgNfsnY4zw6MBhYD07Kc2vu3wD5gP/A9zaYUAG3NycIUJ2+A98AA24lCtYfAVuBkkn0WgB7AYdvyaH8BOAe8ABqBT85xf2CgXesLAq4EthWCKAagD3AGqDWjp8B24EiJKRBPpD/Y6eu/S96+GIBjwGwXfCbwrMTgXm15SM0O98cw4FF8TgMgsok8ktfA+BYGj3GWArvt4SowphDAhsDwz8ABoNqC9TWlRcDBFqy80OQKoJMk2Rh+FLO5EOkmEmY60AY4YYriwNRWCC4XQwGdiCjiWJMAiBgX3QuRbK49a6s6hDQsAI6nHaUcAP1i64GGyAEdtfnmSKnoEgj4ErjtwLwDeuYIlqQ6yxaidw1AfQQwCLgGdHJWX4GO7vl33soAoRrxxOzvh3pS50/BWmBTgnOxVpXMp6kMDHwL9aEdoAra2wPQ6i8Dw837j1DDVwcO7CwnWoLtPUANTf2hurAOzLPcnALWAc9bObjcaeW97NjXJBWiOcDRvxBYLrsDIrNEXKjNakatjWNCSPFZX2MqDWCFNShhUHneW0kAKvF3XHdUZWysJIBloa7ssu0XyWfovlIAaoCPjlCjbGbMBKDuVQe8Clt3ugxGqurF+rIFWBN9Ze2A5sBDpqwxbDNwKweQPcASp38zFLuR3j4LgAZNjWJRfhoIHaUHRYBMsRY/xOk0AWrBf0gWAClr0NQ0o6nIixgtIBpKdamLTgrj1uQwN8ZhJuo3d74kwKUAiHarAOUvj2jV6qICkCh5AMhBv7D1E+0Sk9PkBqAvJI14ApEqeQF4R/okU447u+uxDTH+W6HojpUDIE8qUnV/AUEbfiHgdnTrAAAAAElFTkSuQmCC`},$=[{id:`point`,title:`绘制点`,mode:`draw_point`,icon:Q.Point},{id:`line`,title:`绘制线`,mode:`draw_line_string`,icon:Q.Line},{id:`polygon`,title:`绘制面`,mode:`draw_polygon`,icon:Q.Polygon},{id:`reset`,title:`清除选中/所有`,mode:`simple_select`,icon:Q.Reset}],de=[{id:`gl-draw-line`,type:`line`,filter:[`all`,[`==`,`$type`,`LineString`]],layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":`#D20C0C`,"line-dasharray":[.2,2],"line-width":2}},{id:`gl-draw-polygon-fill`,type:`fill`,filter:[`all`,[`==`,`$type`,`Polygon`]],paint:{"fill-color":`#D20C0C`,"fill-outline-color":`#D20C0C`,"fill-opacity":.3}},{id:`gl-draw-polygon-midpoint`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`midpoint`]],paint:{"circle-radius":5,"circle-color":`#fbb03b`}},{id:`gl-draw-polygon-stroke-active`,type:`line`,filter:[`all`,[`==`,`$type`,`Polygon`]],layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":`#D20C0C`,"line-dasharray":[.3,3],"line-width":3}},{id:`gl-draw-polygon-and-line-vertex-halo-active`,type:`circle`,filter:[`all`,[`==`,`meta`,`vertex`],[`==`,`$type`,`Point`]],paint:{"circle-radius":5,"circle-color":`#FFF`}},{id:`gl-draw-polygon-and-line-vertex-active`,type:`circle`,filter:[`all`,[`==`,`meta`,`vertex`],[`==`,`$type`,`Point`]],paint:{"circle-radius":3,"circle-color":`#D20C0C`}},{id:`gl-draw-point-point-stroke-active`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`true`]],paint:{"circle-radius":8,"circle-color":`#FFF`}},{id:`gl-draw-point-active`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`true`]],paint:{"circle-radius":6,"circle-color":`#D20C0C`}},{id:`gl-draw-point-point-stroke-inactive`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`false`]],paint:{"circle-radius":8,"circle-color":`#FFF`}},{id:`gl-draw-point-inactive`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`false`]],paint:{"circle-radius":6,"circle-color":`#D20C0C`}}],fe=(0,t.memo)(e=>{let{position:r,onDraw:i,initFeature:s,modes:c}=e,l=c?$.filter(e=>c.includes(e.mode)||e.id===`reset`):$,{map:u}=O(),d=(0,t.useRef)(null);(0,t.useEffect)(()=>{s&&f(s)},[s]);let f=e=>{if(u&&e.features&&d.current){let t=x(e.features[0]);t&&u.fitBounds(t,{maxZoom:16});let n=d.current.add(e);d.current.changeMode(`simple_select`,{featureIds:n})}},p=(e,t)=>{if(!d.current||!u)return;t===`reset`&&d.current.deleteAll(),d.current.changeMode(e);let n=u.getCanvas();e===`simple_select`?n.style.cursor=``:n.style.cursor=`crosshair`},m=()=>{if(!d.current)return;let e=d.current.getAll();if(e&&e.features.length>0){let t=0;e.features.forEach(e=>{(e.geometry.type===`Polygon`||e.geometry.type===`MultiPolygon`)&&(t+=(0,o.default)(e))}),i({data:e,area:t})}};return(0,t.useEffect)(()=>(u&&!d.current&&(d.current=new a.default({displayControlsDefault:!1,styles:de,defaultMode:`simple_select`}),u.addControl(d.current,`bottom-left`),u.on(`draw.create`,m),u.on(`draw.delete`,m),u.on(`draw.update`,m),u.on(`draw.modechange`,e=>{let t=u.getCanvas();e.mode===`simple_select`?t.style.cursor=``:t.style.cursor=`crosshair`})),()=>{}),[]),(0,n.jsx)(`div`,{className:`mapboxgl-draw`,style:{...r},children:(0,n.jsx)(`div`,{className:`mapboxgl-draw-bar`,children:(0,n.jsx)(`div`,{children:l.map(e=>(0,n.jsx)(`div`,{title:e.title,className:`mapboxgl-draw-bar-button`,style:{backgroundImage:`url(${e.icon})`},onClick:()=>p(e.mode,e.id)},e.id))})})})});e.BaseLayer=S,e.BaseWidget=g,e.Draw=fe,e.LayerGroupWrapper=w,e.LayerList=I,e.LayerWrapper=C,e.Legend=L,e.MapContext=D,e.MapWidget=A,e.MapWrapper=E,e.Print=oe,e.Swipe=ue,e.useMap=O});
|
|
28
|
+
`;let i=document.createElement(`div`),a=this.toPixels(this.width),o=this.toPixels(this.height);i.style.cssText=`position:absolute;top:0;left:0;width:${a}px;height:${o}px;`,n.appendChild(i),document.body.appendChild(n);let s=new r.Map({container:i,style:this.map.getStyle(),center:this.map.getCenter(),zoom:this.map.getZoom(),bearing:this.map.getBearing(),pitch:this.map.getPitch(),interactive:!1,fadeDuration:0,attributionControl:!1,canvasContextAttributes:{preserveDrawingBuffer:!0},transformRequest:this.map._requestManager._transformRequestFn});this.map.getTerrain()&&(s.setMaxPitch(85),s.setPitch(this.map.getPitch()));let c=this.map.style?.imageManager?.images||[];Object.keys(c).forEach(e=>{s.hasImage(e)||s.addImage(e,c[e].data)});let l=()=>new Promise(e=>{if(!s.isStyleLoaded()||!s.areTilesLoaded()){setTimeout(l,100);return}setTimeout(e,200)});s.once(`idle`,async()=>{await l(),this.northIcon&&(await new Y(this.northIconOptions).addToMap(s,this.width,this.height),await new Promise(e=>{s.once(`idle`,()=>{setTimeout(e,200)})})),new te(this.map,s,this.markerOptions).renderMarkers()&&await new Promise(e=>{s.once(`idle`,()=>{setTimeout(e,200)})});let r=s.getCanvas(),i=r.getContext(`webgl`)||r.getContext(`webgl2`);i&&i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,new Uint8Array(4));let a=`map.${this.format}`,o=new K;switch(this.format){case z.PNG:o.toPNG(r,a);break;case z.JPEG:o.toJPEG(r,a,this.jpegQuality);break;case z.PDF:new ne(this.width,this.height,this.unit).generate(r,a);break;case z.SVG:new re().toSVG(r,a,this.width,this.height,this.unit,this.dpi);break}s.remove(),n.remove(),Object.defineProperty(window,"devicePixelRatio",{get:()=>t}),this.hideLoading(),e?.()})}toPixels(e){return this.unit===B.mm?96/25.4*e:96*e}showLoading(){let e=document.createElement(`div`);e.className=`qm-print-loading-overlay`,e.innerHTML=`<div class="qm-print-loading-spinner"></div><div class="qm-print-loading-text">正在生成...</div>`,document.body.appendChild(e)}hideLoading(){document.querySelector(`.qm-print-loading-overlay`)?.remove()}},ae=(0,t.memo)(e=>{let{map:r}=D(),[i,a]=(0,t.useState)(!1),[o,s]=(0,t.useState)({PageSize:V.A4,PageOrientation:H.横向,Format:z.PDF,DPI:U[300],Crosshair:!0,PrintableArea:!0}),c=(0,t.useRef)(null),l=(0,t.useRef)(null);(0,t.useEffect)(()=>{if(r)return i?(o.Crosshair&&(c.current=new W(r),c.current.create()),o.PrintableArea&&(l.current=new G(r),l.current.create()),u()):(c.current?.destroy(),c.current=null,l.current?.destroy(),l.current=null),()=>{c.current?.destroy(),l.current?.destroy()}},[r,i,o.Crosshair,o.PrintableArea,o.PageSize,o.PageOrientation]);let u=(0,t.useCallback)(()=>{if(!l.current)return;let e=o.PageSize;o.PageOrientation===H.纵向?l.current.updateArea(e[1],e[0]):l.current.updateArea(e[0],e[1])},[o.PageSize,o.PageOrientation]),d=(0,t.useCallback)(()=>{if(!r)return;let e=[...o.PageSize];o.PageOrientation===H.纵向&&(e=[e[1],e[0]]),new ie(r,e,o.DPI,o.Format,B.mm,{jpegQuality:o.JPEGQuality,northIcon:!0}).generate(()=>{a(!1)})},[r,o]),f=e=>{console.log(`打印面板:`,e),a(e)},p=Object.entries(V).map(([e,t])=>(0,n.jsx)(`option`,{value:JSON.stringify(t),children:e},e)),g=Object.entries(H).map(([e,t])=>(0,n.jsx)(`option`,{value:t,children:e},e)),_=Object.entries(z).map(([e,t])=>(0,n.jsx)(`option`,{value:t,children:e},e)),v=Object.entries(U).map(([e,t])=>(0,n.jsx)(`option`,{value:t,children:e},e));return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(h,{name:`打印`,position:e.position,icon:m.Print,openHandle:f,children:(0,n.jsx)(n.Fragment,{})}),(0,n.jsxs)(`div`,{className:`qm-print-panel ${i?`open`:``}`,style:{position:`absolute`,top:(e.position.top??0)+34,right:e.position.right??10},children:[(0,n.jsx)(`table`,{className:`qm-print-panel-table`,children:(0,n.jsxs)(`tbody`,{children:[(0,n.jsxs)(`tr`,{children:[(0,n.jsx)(`td`,{children:(0,n.jsx)(`label`,{children:`页面尺寸`})}),(0,n.jsx)(`td`,{children:(0,n.jsx)(`select`,{id:`print-page-size`,value:JSON.stringify(o.PageSize),onChange:e=>{s(t=>({...t,PageSize:JSON.parse(e.target.value)})),u()},children:p})})]}),(0,n.jsxs)(`tr`,{children:[(0,n.jsx)(`td`,{children:(0,n.jsx)(`label`,{children:`布局方向`})}),(0,n.jsx)(`td`,{children:(0,n.jsx)(`select`,{id:`print-orientation`,value:o.PageOrientation,onChange:e=>{s(t=>({...t,PageOrientation:e.target.value})),u()},children:g})})]}),(0,n.jsxs)(`tr`,{children:[(0,n.jsx)(`td`,{children:(0,n.jsx)(`label`,{children:`导出格式`})}),(0,n.jsx)(`td`,{children:(0,n.jsx)(`select`,{id:`print-format`,value:o.Format,onChange:e=>s(t=>({...t,Format:e.target.value})),children:_})})]}),(0,n.jsxs)(`tr`,{children:[(0,n.jsx)(`td`,{children:(0,n.jsx)(`label`,{children:`DPI`})}),(0,n.jsx)(`td`,{children:(0,n.jsx)(`select`,{id:`print-dpi`,value:o.DPI,onChange:e=>s(t=>({...t,DPI:Number(e.target.value)})),children:v})})]})]})}),(0,n.jsx)(`button`,{type:`button`,className:`qm-print-export-button`,onClick:d,children:`导 出`})]})]})});function oe(e,t){let n=e.getCenter(),r=e.getZoom(),i=e.getBearing(),a=e.getPitch();t.forEach(e=>{e.jumpTo({center:n,zoom:r,bearing:i,pitch:a})})}function se(...e){let t;t=e.length===1&&Array.isArray(e[0])?e[0]:e;let n=[];t.forEach((e,r)=>{let i=t.filter((e,t)=>t!==r);n[r]=()=>a(e,i)});function r(){t.forEach((e,t)=>{e.on(`move`,n[t])})}function i(){t.forEach((e,t)=>{e.off(`move`,n[t])})}function a(e,t){i(),oe(e,t),r()}return r(),()=>{i()}}var Z=class{options;_mapA;_mapB;_horizontal;_bounds;currentPosition=0;_swiper;_controlContainer;_clearSync;_onResize;_eventTarget;constructor(e,t,n,r={}){this.options={orientation:`vertical`,mousemove:!1,...r},this._mapA=e,this._mapB=t,this._horizontal=this.options.orientation===`horizontal`,this._eventTarget=new EventTarget,this._swiper=document.createElement(`div`),this._swiper.className=this._horizontal?`compare-swiper-horizontal`:`compare-swiper-vertical`,this._controlContainer=document.createElement(`div`),this._controlContainer.className=this._horizontal?`maplibregl-compare maplibregl-compare-horizontal`:`maplibregl-compare`,this._controlContainer.appendChild(this._swiper),this._mountContainer(n),this._bounds=this._mapB.getContainer().getBoundingClientRect();let i=this._horizontal?this._bounds.height/2:this._bounds.width/2;this._setPosition(i),this._clearSync=se(this._mapA,this._mapB),this._onResize=()=>{this._bounds=this._mapB.getContainer().getBoundingClientRect(),this.currentPosition&&this._setPosition(this.currentPosition)},this._mapB.on(`resize`,this._onResize),this.options.mousemove&&(this._mapA.getContainer().addEventListener(`mousemove`,this._onMove),this._mapB.getContainer().addEventListener(`mousemove`,this._onMove)),this._swiper.addEventListener(`mousedown`,this._onDown),this._swiper.addEventListener(`touchstart`,this._onDown)}_mountContainer(e){if(typeof e==`string`){let t=document.querySelector(e);if(!t)throw Error(`找不到容器`);t.appendChild(this._controlContainer)}else if(e instanceof HTMLElement)e.appendChild(this._controlContainer);else throw Error(`容器必须是字符串选择器或 HTML 元素`)}_setPointerEvents(e){this._controlContainer.style.pointerEvents=e,this._swiper.style.pointerEvents=e}_onDown=e=>{`touches`in e?(document.addEventListener(`touchmove`,this._onMove),document.addEventListener(`touchend`,this._onTouchEnd)):(document.addEventListener(`mousemove`,this._onMove),document.addEventListener(`mouseup`,this._onMouseUp))};_setPosition(e){let t=this._horizontal?this._bounds.height:this._bounds.width,n=Math.max(0,Math.min(e,t)),r=this._horizontal?`translate(0, ${n}px)`:`translate(${n}px, 0)`;this._controlContainer.style.transform=r,this._controlContainer.style.webkitTransform=r;let i=this._bounds.height,a,o;this._horizontal?(a=`rect(0, 999em, ${n}px, 0)`,o=`rect(${n}px, 999em, ${i}px, 0)`):(a=`rect(0, ${n}px, ${i}px, 0)`,o=`rect(0, 999em, ${i}px, ${n}px)`),this._mapA.getContainer().style.clip=a,this._mapB.getContainer().style.clip=o,this.currentPosition=n}_onMove=e=>{this.options.mousemove&&this._setPointerEvents(`none`),this._horizontal?this._setPosition(this._getY(e)):this._setPosition(this._getX(e))};_onMouseUp=()=>{document.removeEventListener(`mousemove`,this._onMove),document.removeEventListener(`mouseup`,this._onMouseUp),this._emitSlideEnd()};_onTouchEnd=()=>{document.removeEventListener(`touchmove`,this._onMove),document.removeEventListener(`touchend`,this._onTouchEnd),this._emitSlideEnd()};_emitSlideEnd(){this._eventTarget.dispatchEvent(new CustomEvent(`slideend`,{detail:{currentPosition:this.currentPosition}}))}_getX(e){let t=(`touches`in e?e.touches[0]:e).clientX-this._bounds.left;return Math.max(0,Math.min(t,this._bounds.width))}_getY(e){let t=(`touches`in e?e.touches[0]:e).clientY-this._bounds.top;return Math.max(0,Math.min(t,this._bounds.height))}setSlider(e){this._setPosition(e)}on(e,t){this._eventTarget.addEventListener(e,e=>{let n=e.detail;t(n)})}off(e,t){this._eventTarget.removeEventListener(e,t)}remove(){this._clearSync(),this._mapB.off(`resize`,this._onResize),[this._mapA,this._mapB].forEach(e=>{let t=e.getContainer();t.style.clip=``,t.removeEventListener(`mousemove`,this._onMove)}),this._swiper.removeEventListener(`mousedown`,this._onDown),this._swiper.removeEventListener(`touchstart`,this._onDown),this._controlContainer.remove()}};window.maplibregl&&(window.maplibregl.Compare=Z);var ce=(0,t.memo)(e=>{let{title:r,open:a=!1,maskClosable:o=!0,mask:s,width:c=520,footer:l,onCancel:u,destroyOnHidden:d=!1,className:f,style:p,children:m,centered:h=!1}=e,g=s?.closable===void 0?o:s.closable,[_,v]=(0,t.useState)(a);(0,t.useEffect)(()=>{if(a)v(!0),document.body.style.overflow=`hidden`;else if(document.body.style.overflow=``,d){let e=setTimeout(()=>{v(!1)},200);return()=>clearTimeout(e)}},[a,d]),(0,t.useEffect)(()=>()=>{document.body.style.overflow=``},[]);let y=(0,t.useCallback)(e=>{e.target===e.currentTarget&&g&&u?.()},[g,u]),b=(0,t.useCallback)(e=>{e.stopPropagation(),u?.()},[u]);return _?(0,i.createPortal)((0,n.jsxs)(`div`,{className:`qm-modal-wrapper ${a?`qm-modal-open`:``} ${h?`qm-modal-centered`:``}`,children:[(0,n.jsx)(`div`,{className:`qm-modal-mask ${a?`qm-modal-mask-enter`:`qm-modal-mask-leave`}`}),(0,n.jsx)(`div`,{className:`qm-modal-container`,onClick:y,children:(0,n.jsxs)(`div`,{className:`qm-modal ${f||``} ${a?`qm-modal-enter`:`qm-modal-leave`}`,style:{width:typeof c==`number`?`${c}px`:c,...p},onClick:e=>e.stopPropagation(),children:[r&&(0,n.jsxs)(`div`,{className:`qm-modal-header`,children:[(0,n.jsx)(`div`,{className:`qm-modal-title`,children:r}),(0,n.jsx)(`button`,{type:`button`,className:`qm-modal-close`,onClick:b,"aria-label":`关闭`,children:(0,n.jsx)(`span`,{className:`qm-modal-close-x`,children:`×`})})]}),(0,n.jsx)(`div`,{className:`qm-modal-body`,children:m}),l!==null&&(0,n.jsx)(`div`,{className:`qm-modal-footer`,children:l})]})})]}),document.body):null}),le=(0,t.memo)(e=>{let{map:r}=D(),[i,a]=(0,t.useState)(!1),[o,s]=(0,t.useState)(null),[c,l]=(0,t.useState)(null),u=(0,t.useCallback)(e=>{a(e)},[]);return(0,t.useEffect)(()=>{if(o&&c){let e=document.getElementById(`swipeContainer`);e&&(new Z(o,c,e,{mousemove:!1,orientation:`vertical`}),o.setCenter(r.getCenter()),o.setZoom(r.getZoom()),o.setBearing(r.getBearing()),c.setPitch(r.getPitch()))}},[o,c]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(h,{name:`卷帘对比`,position:{...e.position},icon:m.Swipe,openHandle:u,children:(0,n.jsx)(n.Fragment,{})}),(0,n.jsx)(ce,{title:`卷帘对比`,mask:{closable:!1},open:i,width:1e3,footer:null,onCancel:()=>a(!1),destroyOnHidden:!0,children:(0,n.jsxs)(`div`,{id:`swipeContainer`,className:`maplibregl-swipe`,children:[(0,n.jsx)(k,{mapOptions:{...r.options,id:`swipeBeforeMap`},mapLayerSettting:r.mapLayerSetting,onMapLoad:e=>s(e),className:`swipe-map-container`,children:(0,n.jsx)(L,{position:{top:10,left:10}})}),(0,n.jsx)(k,{mapOptions:{...r.options,id:`swipeAfterMap`},mapLayerSettting:r.mapLayerSetting,onMapLoad:e=>l(e),className:`swipe-map-container`,children:(0,n.jsx)(L,{position:{top:10,right:10}})})]})})]})}),Q={Point:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAARxJREFUWEft1LEuREEYxfHf9jRLIRIqnUSpoOEFREUh3kFBo6LYKEj0StEp8ARUEvUmOg2NSHT07pW73XK/mZBtZto5c87/npn7dYx4dUacrwCUBkoDpYHcBiYwjTG84g2fOUMtB+AYu0PC9nGUCpEK8IyZX0IOq72DFIgUgFusBMw3cBnQfUuiAOu4ippivLqmj4g+ClDfby9i2Gjm8BTRRwFusBYxbDTLuI/oowCn2IkYNpoF9CP6KMA2ziOGjWYS7xF9FKDbfFE9fNrWSTWU9tpEg/0oQK3fwkWL8Qtmo+Epv+HAc6kawWfVfz4/JOQOqynhOQD1mXr+b2IRU3jAI65Tw3MBcnJ+PJPyBv40OOcRFoDSQGngXxr4App1HCGF2UdQAAAAAElFTkSuQmCC`,Line:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAp1JREFUWEe9l0uIjlEYx3+zsZGFsqCUe0hEiXFJ7iklxUxZMcVIE7IZFm4TJWYzLolQLKYmTKLIJYaYRolyySULpMRmFkwoC85/Oq/ejvO93zlHvWf7vc95fu/z/J//8341lHuWArOBJ8AVpa4pMf9eYE8u311gQVkAdcB5z8vWlwXgvn3G0lIWwFjgracC48oCUG63CmeBhmoAs4CJwC/gKtD7H6JtBg4C14FNwPtqU6CRueEkHGqCvyRC3JHqge3AoeyOogo8BGY6yY6aKmxJABicq94M4FEIwFdgkJPsmglengCwErgEPAem5OOLKnAfmOska7FiimU4AWwEjgBbQwHmA12eTCkQEtwIQJW4HApQC/QALwE52aScm8VAzAEeWA0MMXb8OxRgH7ATOAOst0F5Sw2FyMavE1jtVrRIA9pY04ANwOlcYCzETWAJ0AicCgVQv9S3PjuKakP+hELIxLLYYcDnUACVXLS3ABmS74RAZPdIS/oO+OdUaoFmVoqVDnYXzFw1CPn9WmAXsD8UYKBV7ABgYYVRDGmHbFvqHwNMBZ6GAqyws/oGmBDoOL5KrAIumo33ARhZ6R5fCw5bvz9nhLguEECPuRDaI8uAY8DmGAB9OOgDYo2pQEcEgAuRhX4zK1im5k5S/+9uBaTUbrMyfxhyudb3SACN2idPjOslfx9xAaR4OdxtI6DFkcn1uDadT2xNwPEQEd4D5tmNpc2Vcj4a5xzuBKqy8oJCHxgPvLZPjDbz+y4lux27VmAR8Mr6iOzYe7IWSO3606BxeQFMTkweHSaAHcABJ7LerN8L0bclBAjgmeeNHwPTE+6LDhGAeu06lTbhqOjbEgIEcNLu6nx4G7At4b7okEyEEqBW50+g3dyifzGlnD8S4H8a/N0aLAAAAABJRU5ErkJggg==`,Rectangle:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAASxJREFUWEft16FKBWEQBeDvvodBRCw+gFWbgtVkEkWLil6wGbSLgiZBxKDFajB6owgGwSQ3GMTmMyhz3YVluRdW+BcM/4FlYXf2zPnPzMJMxy92cYx7POGgeJ76dooFfOEGZx1sIV5UsYKrxNmH5emGgEfMJE7WmC4EvGK69sUbPhuzNAscR1xV9EJA1D56oIo59JrxNo5axnUt+jAEBMr6vGO/aJDGzH8InMU5pjDos1JAcHwXp47Tt4kHhJBB7iwgO5AdyA5kB7ID2YHsQHbg3ziwXgyLMaYdYa+loXAztqGCe7vcjG6xVEvYxUliEYu4q3EOVrOYhuv4QD+xgDFM1jj7owQkzj2S7jkEDCvBKi4Tq4gyR64qNsq/YA2xOgUuWtyMQsQ8JrCDlx+OVWdvFenv8gAAAABJRU5ErkJggg==`,Polygon:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAxVJREFUWEe1133InnMUB/DPKCQS87ZQtrJ5yT8LUShaJKHWzMSaWqkt07LyEjEvQykrL2WRFautoZBt3hoRhkRqjLyUKMuyGLHWan3X73q6unff7t+953Lq6um5nt855/s7z/ec870mqLfDcBeuwd94E7fUu/c/OWGEAIuxvOf8Ejw6Qox9jo4C4HtM6ZPsM/Q+/TAdWfx/xtbmwCgANuP0ytt+hE3IzzznYW3L9znMy++jAHgIt/cAeAw7cApOKwAPrAR5L5bWAjgKH+DUEjzVGETCizEV03AGzsTxfUC9jstqATyM2/Aqrqq8YXPsEPzTxyfkXVID4AK8iwNKmbeMCCDHV+DGlt83mImvagC8XG79CG7dj+SNy7VYiYNxOdbXkHA+nsFfCA92jQNAXH/EyTgRvwwDkJJ/WYi0AE+NM3ncPywteQ4+HQbgAdyJzzG9g+QJ8VL534fIIfTAOXASvsNBuLS0XBcYHsdNGKvoIBKuKUvnRVzdReYS4w48iPtwz6AK5MYZErFUIrO7K7uhdMLTTVv2q0DIcRaWlfXbVfLEuQRv4DVc0a7AE6U38y5t8jsmdpm5xMpYTmeNETsVWIgne5KFLDf/DwCOxm/4FZOaCvTb8+mALJ7dHYPIpoyayjQ8BttSgZDshJ5E28vk6zj/3nA/YHIZcHt3QXb6op5MUTghYteWcf4KzseFeD8ADkWmXhia/d1Y9sCzHSK4srRgQMS2YX67DQ8vxIj4zKT6s4D6uCMQ7yGrvW0bBk3C5vAnpVQ79xPE2ZhRej66cB8bBCD67h0chzEBWQkiJU5rR5pdNMRn/X8JknyAZCfE8gHS+03Qjn0EZpUnibPEGguhox834n6cW/7wBxYPU0R3I+o1lnlxLL4uUzM6Lze8vnAlur+xb/EW1mFD633Uc6RYtEbefzEMQHxX4bqeUiZ4BlWWVWOZbm+XNssWrbIaAOHA3AHRUoUsl5Q4eu/fqqytQzUAVmNOn8DhRRTOT6MmbZ+vAZDbpwptewGzx5O48a0BkLNLizTPAomYeL7M9HFj2AMTmY45mDBG5AAAAABJRU5ErkJggg==`,Trash:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA71JREFUWEfNl2nIVlUQx3+vgoRrai6lpaaiJbgU5QeXygVREVdUxF0RTa0oF3BBW6AFxRUXXHLrg5qgIgruS35QM1ooI3LFXdyKKAiq83+ZI+Pj83jPKynOpzlzZ87935n/mTm3iHTZB7ye6L4feCPFtyjFyXz+LYGvXJP2TnLKAfB+BpAZ9jxp7ySnPABmFgAh+wMBGAoMyfiyWH/V936S6rcaWKUMPA1cLGF9/w/3G0DVWILPAWXhUcoqYFhJOPBQwD2WACoAv9nn1gSuuE+vayxfAhzJSUkvoDKwIsdeA7hstmeAS/55vgxMAz40p4+A6S4gHrMzwPMBjG9OUR8mdrsY7aU9JW2BQ1kAxgV2LjCnecA7LmAqIFCSMsDfpj8B/Gn6FOBjFzMXeNvWLYBvswAMCl+3xpxWAiNcwGTgE1uXdS9V6nWsJO8Cc1yMSjLc1g2Ak1kAugFbzWkD0M8FvAfMsnVF4HfTfS8ZA4gjUdYDfW2Ry6m8A6MNcNACdgBd3GZKpVIqqRJSe9P0esAp03M5sD0QtrM9Kw/8kZWBpsB35vQVIEBRxgILbSF2XzX9ReBH0/sD+uooIl1r4J9A7tL+5dLznYLnQoc6a44C0twFjQqte6mta7kW/hJw3Ow9gC0uRqRrBtwO2XsyBUClwPxb5qi01ndBIlM853UCuc7Zs1aAsiXpBOx0MSKdjuz5EPtsCgD5KF3KzjWgugsaDGiKSQQs1r19SPNus7/mOCSTylQN+DmU5oVUACKX0vUXUM4AKXYA8IVt0iisfzG9K7DN9FeBY6aXMtKpT8imZ3dJoVlwOnQztV2JgKh+Eh2nSLAmYf2T2fsAG00XiX8w3ZdTd8p2qQAiceRfG7hgger3m0wXsb43fWAoyVrTGwK/mi6iqvYS9ZbuqQB061EtJaqb6ifxTepl4BuzjwSWmS6ixZc2Do3shNlVOgG9SwqVYLND62uqhqLGImkZmtRR08eHxjTf9KeA66a/4nx0fEenAhDTxXiJGL7X9I7uiKm5HDb7ROAz0323U833mH02MCEVgKbgW+bsG4t+NiIYXT4PmI9G9gemq9vpGEtUc2VTouv8PbfpQiXQZvEeoOm4ziH/OkxEHSs1nEhOnRhlQ8fS/xF5cipLcZDd2a4QAI1UpUzyJrA4N3WJa03GReabOyWLzYUA6A6w3AJ1B4j1TXzvHbdJwKe2ys3kfQH0Br60wKwfkSxQ8Uelp+NDZgk6ALuydi7hc52gOC8yAei2o5Ga+juehaX4JySf03+JLrAhSDUYWAAAAABJRU5ErkJggg==`,Reset:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAuRJREFUWEfVl1moTWEUx3+31M1U5JYxxQuJa7xvEg+UMpOkDFcevChEGUMi8/gkD24kSaIkRJEhM1cyJA83JMKD5AUPvv9tfVpOe5999j3XkVX7tPfZa/h/3/p/a61dxT+Wqn8cn/8SwAhgHDAW6Ap0A9oDH+y6C5wHrgNfsnY4zw6MBhYD07Kc2vu3wD5gP/A9zaYUAG3NycIUJ2+A98AA24lCtYfAVuBkkn0WgB7AYdvyaH8BOAe8ABqBT85xf2CgXesLAq4EthWCKAagD3AGqDWjp8B24EiJKRBPpD/Y6eu/S96+GIBjwGwXfCbwrMTgXm15SM0O98cw4FF8TgMgsok8ktfA+BYGj3GWArvt4SowphDAhsDwz8ABoNqC9TWlRcDBFqy80OQKoJMk2Rh+FLO5EOkmEmY60AY4YYriwNRWCC4XQwGdiCjiWJMAiBgX3QuRbK49a6s6hDQsAI6nHaUcAP1i64GGyAEdtfnmSKnoEgj4ErjtwLwDeuYIlqQ6yxaidw1AfQQwCLgGdHJWX4GO7vl33soAoRrxxOzvh3pS50/BWmBTgnOxVpXMp6kMDHwL9aEdoAra2wPQ6i8Dw837j1DDVwcO7CwnWoLtPUANTf2hurAOzLPcnALWAc9bObjcaeW97NjXJBWiOcDRvxBYLrsDIrNEXKjNakatjWNCSPFZX2MqDWCFNShhUHneW0kAKvF3XHdUZWysJIBloa7ssu0XyWfovlIAaoCPjlCjbGbMBKDuVQe8Clt3ugxGqurF+rIFWBN9Ze2A5sBDpqwxbDNwKweQPcASp38zFLuR3j4LgAZNjWJRfhoIHaUHRYBMsRY/xOk0AWrBf0gWAClr0NQ0o6nIixgtIBpKdamLTgrj1uQwN8ZhJuo3d74kwKUAiHarAOUvj2jV6qICkCh5AMhBv7D1E+0Sk9PkBqAvJI14ApEqeQF4R/okU447u+uxDTH+W6HojpUDIE8qUnV/AUEbfiHgdnTrAAAAAElFTkSuQmCC`},$=[{id:`point`,title:`绘制点`,mode:`draw_point`,icon:Q.Point},{id:`line`,title:`绘制线`,mode:`draw_line_string`,icon:Q.Line},{id:`polygon`,title:`绘制面`,mode:`draw_polygon`,icon:Q.Polygon},{id:`reset`,title:`清除选中/所有`,mode:`simple_select`,icon:Q.Reset}],ue=[{id:`gl-draw-line`,type:`line`,filter:[`all`,[`==`,`$type`,`LineString`]],layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":`#D20C0C`,"line-dasharray":[.2,2],"line-width":2}},{id:`gl-draw-polygon-fill`,type:`fill`,filter:[`all`,[`==`,`$type`,`Polygon`]],paint:{"fill-color":`#D20C0C`,"fill-outline-color":`#D20C0C`,"fill-opacity":.3}},{id:`gl-draw-polygon-midpoint`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`midpoint`]],paint:{"circle-radius":5,"circle-color":`#fbb03b`}},{id:`gl-draw-polygon-stroke-active`,type:`line`,filter:[`all`,[`==`,`$type`,`Polygon`]],layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":`#D20C0C`,"line-dasharray":[.3,3],"line-width":3}},{id:`gl-draw-polygon-and-line-vertex-halo-active`,type:`circle`,filter:[`all`,[`==`,`meta`,`vertex`],[`==`,`$type`,`Point`]],paint:{"circle-radius":5,"circle-color":`#FFF`}},{id:`gl-draw-polygon-and-line-vertex-active`,type:`circle`,filter:[`all`,[`==`,`meta`,`vertex`],[`==`,`$type`,`Point`]],paint:{"circle-radius":3,"circle-color":`#D20C0C`}},{id:`gl-draw-point-point-stroke-active`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`true`]],paint:{"circle-radius":8,"circle-color":`#FFF`}},{id:`gl-draw-point-active`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`true`]],paint:{"circle-radius":6,"circle-color":`#D20C0C`}},{id:`gl-draw-point-point-stroke-inactive`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`false`]],paint:{"circle-radius":8,"circle-color":`#FFF`}},{id:`gl-draw-point-inactive`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`false`]],paint:{"circle-radius":6,"circle-color":`#D20C0C`}}],de=(0,t.memo)(e=>{let{position:r,onDraw:i,initFeature:o,modes:s}=e,c=s?$.filter(e=>s.includes(e.mode)||e.id===`reset`):$,{map:l}=D(),u=(0,t.useRef)(null);(0,t.useEffect)(()=>{o&&d(o)},[o]);let d=e=>{if(l&&e.features&&u.current){let t=b(e.features[0]);t&&l.fitBounds(t,{maxZoom:16});let n=u.current.add(e);u.current.changeMode(`simple_select`,{featureIds:n})}},f=(e,t)=>{if(!u.current||!l)return;t===`reset`&&u.current.deleteAll(),u.current.changeMode(e);let n=l.getCanvas();e===`simple_select`?n.style.cursor=``:n.style.cursor=`crosshair`},p=()=>{if(!u.current)return;let e=u.current.getAll();e.features&&e.features.length>0&&i({data:e})};return(0,t.useEffect)(()=>(l&&!u.current&&(u.current=new a.default({displayControlsDefault:!1,styles:ue,defaultMode:`simple_select`}),l.addControl(u.current,`bottom-left`),l.on(`draw.create`,p),l.on(`draw.delete`,p),l.on(`draw.update`,p),l.on(`draw.modechange`,e=>{let t=l.getCanvas();e.mode===`simple_select`?t.style.cursor=``:t.style.cursor=`crosshair`})),()=>{}),[]),(0,n.jsx)(`div`,{className:`mapboxgl-draw`,style:{...r},children:(0,n.jsx)(`div`,{className:`mapboxgl-draw-bar`,children:(0,n.jsx)(`div`,{children:c.map(e=>(0,n.jsx)(`div`,{title:e.title,className:`mapboxgl-draw-bar-button`,style:{backgroundImage:`url(${e.icon})`},onClick:()=>f(e.mode,e.id)},e.id))})})})});e.BaseLayer=x,e.BaseWidget=h,e.Draw=de,e.LayerGroupWrapper=C,e.LayerList=L,e.LayerWrapper=S,e.Legend=R,e.MapContext=E,e.MapWidget=k,e.MapWrapper=T,e.Print=ae,e.Swipe=le,e.useMap=D});
|
|
@@ -3,7 +3,6 @@ import { TDrawModeType } from './constant';
|
|
|
3
3
|
import { FeatureCollection, Geometry, GeoJsonProperties } from 'geojson';
|
|
4
4
|
export type { TDrawModeType } from './constant';
|
|
5
5
|
export interface TDrawResult {
|
|
6
|
-
area: number;
|
|
7
6
|
data: FeatureCollection<Geometry, GeoJsonProperties>;
|
|
8
7
|
}
|
|
9
8
|
export interface TDrawControlProps {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qm-map-maplibre-gl",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/qm-map.es.js",
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@mapbox/mapbox-gl-draw": "^1.5.1",
|
|
26
|
-
"@turf/area": "^7.3.5",
|
|
27
26
|
"maplibre-gl": "^5.24.0"
|
|
28
27
|
},
|
|
29
28
|
"peerDependencies": {
|