@ywbgn/bgl-package 1.0.0 → 1.1.1
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/README.md +556 -24
- package/dist/index.css +1 -0
- package/dist/index.d.ts +890 -0
- package/dist/vue-arcgis-map.js +3593 -159
- package/dist/vue-arcgis-map.umd.cjs +2 -1
- package/package.json +47 -29
- package/dist/vue-arcgis-map.css +0 -1
package/dist/vue-arcgis-map.js
CHANGED
|
@@ -1,192 +1,3626 @@
|
|
|
1
|
-
import { ref as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { inject as Xt, computed as ee, toValue as Ht, unref as se, provide as qt, defineComponent as pe, ref as T, shallowRef as Se, onMounted as fe, watch as ue, onBeforeUnmount as me, openBlock as g, createElementBlock as N, normalizeStyle as Ye, toRef as _t, createBlock as re, Transition as $t, withCtx as Ie, createElementVNode as a, withModifiers as te, normalizeClass as ae, toDisplayString as U, renderSlot as bt, withKeys as Ae, Fragment as ce, renderList as de, createCommentVNode as _, toRaw as ge, withDirectives as Ge, vModelText as Ze } from "vue";
|
|
2
|
+
import el from "@arcgis/core/Map.js";
|
|
3
|
+
import tl from "@arcgis/core/views/MapView.js";
|
|
4
|
+
import et from "@arcgis/core/layers/GraphicsLayer.js";
|
|
5
|
+
import ll from "@arcgis/core/Basemap.js";
|
|
6
|
+
import al from "@arcgis/core/layers/BaseTileLayer.js";
|
|
7
|
+
import nl from "@arcgis/core/layers/TileLayer.js";
|
|
8
|
+
import ze from "@arcgis/core/layers/WebTileLayer.js";
|
|
9
|
+
import * as We from "@arcgis/core/core/reactiveUtils.js";
|
|
10
|
+
import gt from "@arcgis/core/geometry/Extent.js";
|
|
11
|
+
import xe from "@arcgis/core/geometry/Point.js";
|
|
12
|
+
import * as Ne from "@arcgis/core/geometry/operators/projectOperator.js";
|
|
13
|
+
import ol from "@arcgis/core/widgets/Legend.js";
|
|
14
|
+
import sl from "@arcgis/core/layers/FeatureLayer.js";
|
|
15
|
+
import il from "@arcgis/core/layers/MapImageLayer.js";
|
|
16
|
+
import st from "@arcgis/core/config.js";
|
|
17
|
+
import rl from "@arcgis/core/identity/IdentityManager.js";
|
|
18
|
+
import wt from "@arcgis/core/layers/support/LabelClass.js";
|
|
19
|
+
import St from "@arcgis/core/symbols/TextSymbol.js";
|
|
20
|
+
import cl from "@arcgis/core/widgets/ScaleBar.js";
|
|
21
|
+
import ul from "@arcgis/core/Graphic.js";
|
|
22
|
+
import it from "@arcgis/core/geometry/SpatialReference.js";
|
|
23
|
+
import tt from "@arcgis/core/symbols/SimpleMarkerSymbol.js";
|
|
24
|
+
import Ve from "@arcgis/core/geometry/Polyline.js";
|
|
25
|
+
import { isLoaded as rt, load as ct, execute as dl } from "@arcgis/core/geometry/operators/geodeticLengthOperator.js";
|
|
26
|
+
import Al from "@arcgis/core/symbols/CIMSymbol.js";
|
|
27
|
+
import It from "@arcgis/core/widgets/Sketch/SketchViewModel.js";
|
|
28
|
+
import Xe from "@arcgis/core/geometry/Polygon.js";
|
|
29
|
+
import { isLoaded as ut, load as dt, execute as pl } from "@arcgis/core/geometry/operators/geodeticAreaOperator.js";
|
|
30
|
+
import ml from "@arcgis/core/symbols/SimpleFillSymbol.js";
|
|
31
|
+
import Et from "@arcgis/core/widgets/Swipe.js";
|
|
32
|
+
import './index.css';const Te = "basemap-", vl = "tianditu-img-cia", Je = [
|
|
33
|
+
{ value: "tianditu", label: "天地图影像图" },
|
|
34
|
+
{ value: "tiandituVec", label: "天地图矢量图" },
|
|
35
|
+
{ value: "geovis", label: "星图地球" },
|
|
36
|
+
{ value: "jl1", label: "吉林一号" },
|
|
37
|
+
{ value: "arcgis", label: "ArcGIS影像底图" }
|
|
38
|
+
], je = ["0", "1", "2", "3", "4", "5", "6", "7"], At = al.createSubclass({
|
|
39
|
+
properties: {
|
|
40
|
+
urlTemplate: { type: String }
|
|
41
|
+
},
|
|
42
|
+
getTileUrl(e, t, l) {
|
|
43
|
+
return this.urlTemplate.replace("{z}", String(e)).replace("{y}", String(t)).replace("{x}", String(l));
|
|
44
|
+
}
|
|
45
|
+
}), be = (e) => (e ?? "").trim(), Lt = (e, t) => (e === "tianditu" || e === "tiandituVec") && !be(t.tiandituKey) ? "未配置天地图 Key,无法切换" : e === "geovis" && !be(t.geovisToken) ? "未配置星图地球 Token,无法切换" : e === "jl1" && (!be(t.jl1mallMk) || !be(t.jl1mallToken)) ? "未配置吉林一号 mk/tk,无法切换" : "", yl = (e) => be(e.tiandituKey) ? "tianditu" : be(e.geovisToken) ? "geovis" : be(e.jl1mallMk) && be(e.jl1mallToken) ? "jl1" : "arcgis", kt = (e) => {
|
|
46
|
+
if (!e) return null;
|
|
47
|
+
const t = e.id ?? "";
|
|
48
|
+
return t === `${Te}tianditu` || t === vl ? "tianditu" : t === `${Te}tiandituVec` ? "tiandituVec" : t === `${Te}geovis` ? "geovis" : t === `${Te}jl1` ? "jl1" : t === `${Te}arcgis` ? "arcgis" : null;
|
|
49
|
+
}, fl = (e) => new ze({
|
|
50
|
+
urlTemplate: `https://t{subDomain}.tianditu.gov.cn/DataServer?T=cia_w&x={col}&y={row}&l={level}&tk=${e}`,
|
|
51
|
+
subDomains: je,
|
|
52
|
+
title: "天地图中文注记"
|
|
53
|
+
}), hl = (e) => new ze({
|
|
54
|
+
urlTemplate: `https://t{subDomain}.tianditu.gov.cn/DataServer?T=img_w&x={col}&y={row}&l={level}&tk=${e}`,
|
|
55
|
+
subDomains: je,
|
|
56
|
+
title: "天地图影像"
|
|
57
|
+
}), bl = (e) => new ze({
|
|
58
|
+
urlTemplate: `https://t{subDomain}.tianditu.gov.cn/DataServer?T=vec_w&x={col}&y={row}&l={level}&tk=${e}`,
|
|
59
|
+
subDomains: je,
|
|
60
|
+
title: "天地图矢量"
|
|
61
|
+
}), gl = (e) => new ze({
|
|
62
|
+
urlTemplate: `https://t{subDomain}.tianditu.gov.cn/DataServer?T=cva_w&x={col}&y={row}&l={level}&tk=${e}`,
|
|
63
|
+
subDomains: je,
|
|
64
|
+
title: "天地图矢量注记"
|
|
65
|
+
}), xt = (e, t) => {
|
|
66
|
+
const l = be(t.tiandituKey), n = [];
|
|
67
|
+
if (e === "tianditu")
|
|
68
|
+
n.push(hl(l));
|
|
69
|
+
else {
|
|
70
|
+
if (e === "tiandituVec")
|
|
71
|
+
return n.push(bl(l)), l && n.push(gl(l)), n;
|
|
72
|
+
if (e === "geovis") {
|
|
73
|
+
const u = be(t.geovisToken);
|
|
74
|
+
n.push(
|
|
75
|
+
new At({
|
|
76
|
+
urlTemplate: `https://tiles1.geovisearth.com/base/v1/img/{z}/{x}/{y}?format=webp&tmsIds=w&token=${u}`,
|
|
77
|
+
title: "星图地球",
|
|
78
|
+
id: "xt-custom-basemap"
|
|
79
|
+
})
|
|
80
|
+
);
|
|
81
|
+
} else if (e === "jl1") {
|
|
82
|
+
const u = be(t.jl1mallMk), d = be(t.jl1mallToken);
|
|
83
|
+
n.push(
|
|
84
|
+
new At({
|
|
85
|
+
urlTemplate: `https://api.jl1mall.com/getMap/{z}/{x}/{y}?mk=${u}&tk=${d}&sch=wmts`,
|
|
86
|
+
title: "吉林一号",
|
|
87
|
+
id: "jl-custom-basemap"
|
|
88
|
+
})
|
|
89
|
+
);
|
|
90
|
+
} else
|
|
91
|
+
n.push(
|
|
92
|
+
new nl({
|
|
93
|
+
url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
|
|
94
|
+
id: "arcgis-imagery",
|
|
95
|
+
title: "ArcGIS影像底图"
|
|
96
|
+
})
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
return l && n.push(fl(l)), n;
|
|
100
|
+
}, Ct = (e, t) => {
|
|
101
|
+
var n;
|
|
102
|
+
const l = ((n = Je.find((u) => u.value === e)) == null ? void 0 : n.label) ?? e;
|
|
103
|
+
return new ll({
|
|
104
|
+
baseLayers: xt(e, t),
|
|
105
|
+
title: l,
|
|
106
|
+
id: `${Te}${e}`
|
|
107
|
+
});
|
|
108
|
+
}, wl = (e, t) => xt(e, t)[0], Sl = (e) => Ct(yl(e), e), Mt = Symbol("basemapKeys"), pt = {}, lt = (e) => {
|
|
109
|
+
const t = Xt(Mt, null);
|
|
110
|
+
return ee(() => {
|
|
111
|
+
const l = e !== void 0 ? Ht(e) : void 0;
|
|
112
|
+
return l ?? (t != null ? se(t) ?? pt : pt);
|
|
113
|
+
});
|
|
114
|
+
}, Il = (e) => {
|
|
115
|
+
qt(Mt, e);
|
|
116
|
+
}, El = 1e-9, Rt = (e, t) => {
|
|
117
|
+
const l = e.spatialReference, n = Ne.execute(
|
|
118
|
+
new xe({
|
|
119
|
+
x: t.xmin,
|
|
120
|
+
y: t.ymin,
|
|
121
|
+
spatialReference: { wkid: 4326 }
|
|
122
|
+
}),
|
|
123
|
+
l
|
|
124
|
+
), u = Ne.execute(
|
|
125
|
+
new xe({
|
|
126
|
+
x: t.xmax,
|
|
127
|
+
y: t.ymax,
|
|
128
|
+
spatialReference: { wkid: 4326 }
|
|
129
|
+
}),
|
|
130
|
+
l
|
|
131
|
+
);
|
|
132
|
+
return new gt({
|
|
133
|
+
xmin: n.x,
|
|
134
|
+
ymin: n.y,
|
|
135
|
+
xmax: u.x,
|
|
136
|
+
ymax: u.y,
|
|
137
|
+
spatialReference: l
|
|
138
|
+
});
|
|
139
|
+
}, Tt = async (e, t) => {
|
|
140
|
+
const l = new xe({
|
|
141
|
+
x: (t.xmin + t.xmax) / 2,
|
|
142
|
+
y: (t.ymin + t.ymax) / 2,
|
|
143
|
+
spatialReference: e.spatialReference
|
|
144
|
+
}), n = e.constraints.minZoom;
|
|
145
|
+
if (n != null && Number.isFinite(n)) {
|
|
146
|
+
await e.goTo({ center: l, zoom: n });
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
await e.goTo({ center: l });
|
|
150
|
+
}, Ll = async (e, t) => {
|
|
151
|
+
await e.when(), await Ne.load();
|
|
152
|
+
const l = Rt(e, t);
|
|
153
|
+
await Tt(e, l);
|
|
154
|
+
}, kl = async (e, t) => {
|
|
155
|
+
await e.when(), await Ne.load();
|
|
156
|
+
const l = Rt(e, t), n = (l.xmin + l.xmax) / 2, u = (l.ymin + l.ymax) / 2, d = Math.max(l.width, l.height) * El;
|
|
157
|
+
let b = 0, r = 0, s = null, A = 0, o = !1;
|
|
158
|
+
const c = e.goTo.bind(e), D = (L) => {
|
|
159
|
+
let P = l.xmin + L.width / 2, H = l.xmax - L.width / 2, I = l.ymin + L.height / 2, W = l.ymax - L.height / 2;
|
|
160
|
+
return P > H && (P = n - d, H = n + d), I > W && (I = u - d, W = u + d), new gt({
|
|
161
|
+
xmin: P,
|
|
162
|
+
ymin: I,
|
|
163
|
+
xmax: H,
|
|
164
|
+
ymax: W,
|
|
165
|
+
spatialReference: e.spatialReference
|
|
166
|
+
});
|
|
167
|
+
}, y = () => {
|
|
168
|
+
A === 0 && (e.constraints.geometry = null), A += 1;
|
|
169
|
+
}, p = () => {
|
|
170
|
+
A <= 0 || (A -= 1, A === 0 && (b = 0, r = 0, M()));
|
|
171
|
+
}, M = () => {
|
|
172
|
+
const L = e.extent;
|
|
173
|
+
if (!L) return;
|
|
174
|
+
if (A > 0) {
|
|
175
|
+
e.constraints.geometry = null;
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if ((L.width !== b || L.height !== r) && (b = L.width, r = L.height, s = D(L), e.constraints.geometry = s), !e.stationary || s === null) return;
|
|
179
|
+
const P = e.center, H = Math.min(Math.max(P.x, s.xmin), s.xmax), I = Math.min(Math.max(P.y, s.ymin), s.ymax);
|
|
180
|
+
H === P.x && I === P.y || c({
|
|
181
|
+
center: new xe({ x: H, y: I, spatialReference: e.spatialReference })
|
|
182
|
+
});
|
|
183
|
+
};
|
|
184
|
+
await Tt(e, l);
|
|
185
|
+
const B = We.watch(() => [e.extent, e.stationary, e.zoom], M, {
|
|
186
|
+
initial: !0
|
|
187
|
+
});
|
|
188
|
+
return {
|
|
189
|
+
wrapViewGoTo(L) {
|
|
190
|
+
L.goTo = (P, H) => (y(), Promise.resolve(c(P, H)).finally(() => {
|
|
191
|
+
o || p();
|
|
192
|
+
}));
|
|
21
193
|
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
default: "70vh"
|
|
194
|
+
remove() {
|
|
195
|
+
o || (o = !0, B.remove(), e.goTo = c, e.constraints.geometry = null, A = 0, s = null);
|
|
25
196
|
}
|
|
197
|
+
};
|
|
198
|
+
}, xl = /* @__PURE__ */ pe({
|
|
199
|
+
__name: "ArcgisMap",
|
|
200
|
+
props: {
|
|
201
|
+
width: { default: "100%" },
|
|
202
|
+
height: { default: "70vh" },
|
|
203
|
+
zoom: { default: 12 },
|
|
204
|
+
center: { default: () => [116.3972, 39.9075] },
|
|
205
|
+
keys: { default: null },
|
|
206
|
+
minZoom: { default: null },
|
|
207
|
+
maxZoom: { default: null },
|
|
208
|
+
panBounds: { default: null }
|
|
26
209
|
},
|
|
27
210
|
emits: ["ready"],
|
|
28
|
-
setup(
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
211
|
+
setup(e, { emit: t }) {
|
|
212
|
+
const l = t, n = e, u = lt(() => n.keys);
|
|
213
|
+
Il(u);
|
|
214
|
+
const d = T(null), b = Se(null), r = Se(null), s = ee(() => ({
|
|
215
|
+
width: typeof n.width == "number" ? `${n.width}px` : n.width,
|
|
216
|
+
height: typeof n.height == "number" ? `${n.height}px` : n.height
|
|
217
|
+
})), A = new et({ title: "绘制图层", listMode: "hide" });
|
|
218
|
+
let o = !1, c = null;
|
|
219
|
+
const D = (p) => {
|
|
220
|
+
n.minZoom != null && Number.isFinite(n.minZoom) && (p.constraints.minZoom = n.minZoom), n.maxZoom != null && Number.isFinite(n.maxZoom) && (p.constraints.maxZoom = n.maxZoom);
|
|
221
|
+
}, y = async (p) => {
|
|
222
|
+
c == null || c.remove(), c = null;
|
|
223
|
+
const M = n.panBounds;
|
|
224
|
+
if (M && !(o || r.value !== p)) {
|
|
225
|
+
if (c = await kl(p, M), o || r.value !== p) {
|
|
226
|
+
c.remove(), c = null;
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
c.wrapViewGoTo(p);
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
return fe(() => {
|
|
233
|
+
o = !1;
|
|
234
|
+
const p = d.value;
|
|
235
|
+
if (!p) return;
|
|
236
|
+
const M = new el({
|
|
237
|
+
basemap: Sl(u.value),
|
|
238
|
+
layers: [A]
|
|
239
|
+
}), B = new tl({
|
|
240
|
+
container: p,
|
|
241
|
+
map: M,
|
|
242
|
+
zoom: n.zoom,
|
|
243
|
+
center: n.center
|
|
42
244
|
});
|
|
43
|
-
|
|
44
|
-
|
|
245
|
+
b.value = M, r.value = B, B.when(async () => {
|
|
246
|
+
o || r.value !== B || (B.ui.remove(["attribution", "zoom"]), D(B), await y(B), !(o || r.value !== B) && l("ready", { map: M, view: B, sketchLayer: A }));
|
|
45
247
|
});
|
|
46
|
-
}),
|
|
47
|
-
|
|
48
|
-
(
|
|
49
|
-
|
|
248
|
+
}), ue(
|
|
249
|
+
() => n.zoom,
|
|
250
|
+
(p) => {
|
|
251
|
+
const M = r.value;
|
|
252
|
+
M && (M.zoom = p);
|
|
253
|
+
}
|
|
254
|
+
), ue(
|
|
255
|
+
() => n.center,
|
|
256
|
+
(p) => {
|
|
257
|
+
const M = r.value;
|
|
258
|
+
M && p && (M.center = p);
|
|
259
|
+
}
|
|
260
|
+
), ue(
|
|
261
|
+
() => [n.minZoom, n.maxZoom],
|
|
262
|
+
() => {
|
|
263
|
+
const p = r.value;
|
|
264
|
+
p && D(p);
|
|
265
|
+
}
|
|
266
|
+
), ue(
|
|
267
|
+
() => n.panBounds,
|
|
268
|
+
() => {
|
|
269
|
+
const p = r.value;
|
|
270
|
+
p && y(p);
|
|
271
|
+
},
|
|
272
|
+
{ deep: !0 }
|
|
273
|
+
), me(() => {
|
|
274
|
+
o = !0, c == null || c.remove(), c = null;
|
|
275
|
+
const p = r.value, M = b.value;
|
|
276
|
+
r.value = null, b.value = null, p == null || p.destroy(), M == null || M.destroy();
|
|
277
|
+
}), (p, M) => (g(), N("div", {
|
|
50
278
|
ref_key: "mapRef",
|
|
51
|
-
ref:
|
|
279
|
+
ref: d,
|
|
52
280
|
class: "map-container",
|
|
53
|
-
style:
|
|
281
|
+
style: Ye(s.value)
|
|
54
282
|
}, null, 4));
|
|
55
283
|
}
|
|
56
|
-
},
|
|
284
|
+
}), ve = (e, t) => {
|
|
285
|
+
const l = e.__vccOpts || e;
|
|
286
|
+
for (const [n, u] of t)
|
|
287
|
+
l[n] = u;
|
|
288
|
+
return l;
|
|
289
|
+
}, Cl = /* @__PURE__ */ ve(xl, [["__scopeId", "data-v-abd8e8a3"]]);
|
|
290
|
+
function Ml(e) {
|
|
291
|
+
const t = T(!1), l = T({ x: 0, y: 0 });
|
|
292
|
+
let n = { pointerX: 0, pointerY: 0, offsetX: 0, offsetY: 0 };
|
|
293
|
+
const u = (e == null ? void 0 : e.getCentered) ?? (() => !0), d = ee(() => {
|
|
294
|
+
const { x: o, y: c } = l.value;
|
|
295
|
+
if (!(o === 0 && c === 0))
|
|
296
|
+
return u() ? {
|
|
297
|
+
transform: `translate(calc(-50% + ${o}px), ${c}px)`
|
|
298
|
+
} : {
|
|
299
|
+
transform: `translate(${o}px, ${c}px)`
|
|
300
|
+
};
|
|
301
|
+
}), b = (o) => {
|
|
302
|
+
t.value && (l.value = {
|
|
303
|
+
x: n.offsetX + o.clientX - n.pointerX,
|
|
304
|
+
y: n.offsetY + o.clientY - n.pointerY
|
|
305
|
+
});
|
|
306
|
+
}, r = () => {
|
|
307
|
+
t.value && (t.value = !1, window.removeEventListener("pointermove", b), window.removeEventListener("pointerup", r), window.removeEventListener("pointercancel", r));
|
|
308
|
+
}, s = (o) => {
|
|
309
|
+
o.button === 0 && (o.preventDefault(), t.value = !0, n = {
|
|
310
|
+
pointerX: o.clientX,
|
|
311
|
+
pointerY: o.clientY,
|
|
312
|
+
offsetX: l.value.x,
|
|
313
|
+
offsetY: l.value.y
|
|
314
|
+
}, window.addEventListener("pointermove", b), window.addEventListener("pointerup", r), window.addEventListener("pointercancel", r));
|
|
315
|
+
}, A = () => {
|
|
316
|
+
l.value = { x: 0, y: 0 };
|
|
317
|
+
};
|
|
318
|
+
return me(() => {
|
|
319
|
+
r();
|
|
320
|
+
}), {
|
|
321
|
+
isDragging: t,
|
|
322
|
+
panelStyle: d,
|
|
323
|
+
startDrag: s,
|
|
324
|
+
stopDrag: r,
|
|
325
|
+
resetOffset: A
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
const Rl = ["aria-label"], Tl = { class: "map-tool-panel__body" }, Dl = /* @__PURE__ */ pe({
|
|
329
|
+
__name: "MapToolPanel",
|
|
330
|
+
props: {
|
|
331
|
+
title: {},
|
|
332
|
+
width: {},
|
|
333
|
+
anchor: { default: "center" }
|
|
334
|
+
},
|
|
335
|
+
emits: ["close"],
|
|
336
|
+
setup(e, { emit: t }) {
|
|
337
|
+
const l = e, n = t, u = _t(l, "anchor"), { isDragging: d, panelStyle: b, startDrag: r } = Ml({
|
|
338
|
+
getCentered: () => u.value !== "start"
|
|
339
|
+
}), s = ee(() => {
|
|
340
|
+
const A = {};
|
|
341
|
+
l.width != null && (A.width = typeof l.width == "number" ? `${l.width}px` : l.width);
|
|
342
|
+
const o = b.value;
|
|
343
|
+
return o && Object.assign(A, o), Object.keys(A).length ? A : void 0;
|
|
344
|
+
});
|
|
345
|
+
return (A, o) => (g(), re($t, { name: "map-tool-panel" }, {
|
|
346
|
+
default: Ie(() => [
|
|
347
|
+
a("section", {
|
|
348
|
+
class: ae(["map-tool-panel", {
|
|
349
|
+
"is-dragging": se(d),
|
|
350
|
+
"is-anchor-start": u.value === "start"
|
|
351
|
+
}]),
|
|
352
|
+
style: Ye(s.value),
|
|
353
|
+
onClick: o[3] || (o[3] = te(() => {
|
|
354
|
+
}, ["stop"])),
|
|
355
|
+
onPointerdown: o[4] || (o[4] = te(() => {
|
|
356
|
+
}, ["stop"]))
|
|
357
|
+
}, [
|
|
358
|
+
a("header", {
|
|
359
|
+
class: "map-tool-panel__header",
|
|
360
|
+
onPointerdown: o[2] || (o[2] = //@ts-ignore
|
|
361
|
+
(...c) => se(r) && se(r)(...c))
|
|
362
|
+
}, [
|
|
363
|
+
a("h3", null, U(e.title), 1),
|
|
364
|
+
a("button", {
|
|
365
|
+
type: "button",
|
|
366
|
+
class: "map-tool-panel__close",
|
|
367
|
+
"aria-label": `关闭${e.title}`,
|
|
368
|
+
onPointerdown: o[0] || (o[0] = te(() => {
|
|
369
|
+
}, ["stop"])),
|
|
370
|
+
onClick: o[1] || (o[1] = (c) => n("close"))
|
|
371
|
+
}, " × ", 40, Rl)
|
|
372
|
+
], 32),
|
|
373
|
+
a("div", Tl, [
|
|
374
|
+
bt(A.$slots, "default", {}, void 0, !0)
|
|
375
|
+
])
|
|
376
|
+
], 38)
|
|
377
|
+
]),
|
|
378
|
+
_: 3
|
|
379
|
+
}));
|
|
380
|
+
}
|
|
381
|
+
}), Ee = /* @__PURE__ */ ve(Dl, [["__scopeId", "data-v-278d69ed"]]), Ol = "data:image/png;base64,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", ke = (e, t) => {
|
|
382
|
+
const l = (n) => {
|
|
383
|
+
const u = n.target;
|
|
384
|
+
if (!(u instanceof Node)) {
|
|
385
|
+
t();
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
const d = e();
|
|
389
|
+
(Array.isArray(d) ? d : [d]).some((r) => r != null && r.contains(u)) || t();
|
|
390
|
+
};
|
|
391
|
+
return document.addEventListener("pointerdown", l, !0), () => document.removeEventListener("pointerdown", l, !0);
|
|
392
|
+
}, Nl = { class: "basemap-switch-wrap" }, Bl = { class: "basemap-switch-form" }, Yl = ["aria-expanded"], Gl = {
|
|
393
|
+
key: 0,
|
|
394
|
+
class: "basemap-unit-options",
|
|
395
|
+
role: "listbox"
|
|
396
|
+
}, Zl = ["aria-selected", "onClick"], Ql = {
|
|
397
|
+
key: 0,
|
|
398
|
+
class: "basemap-switch-message"
|
|
399
|
+
}, Fl = /* @__PURE__ */ pe({
|
|
57
400
|
__name: "BasemapSwitch",
|
|
58
401
|
props: {
|
|
59
402
|
/** MapView 实例 */
|
|
60
|
-
view: { type: Object, required: !0 }
|
|
403
|
+
view: { type: Object, required: !0 },
|
|
404
|
+
/** 底图密钥;未传时尝试 inject(BASEMAP_KEYS_KEY) */
|
|
405
|
+
keys: { type: Object, default: null }
|
|
61
406
|
},
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
407
|
+
emits: ["before-change"],
|
|
408
|
+
setup(e, { emit: t }) {
|
|
409
|
+
const l = e, n = t, u = () => ge(l.view), d = lt(() => l.keys), b = Je, r = T(!1), s = T(!1), A = T(null), o = T(null), c = T("");
|
|
410
|
+
let D = null;
|
|
411
|
+
const y = ee(() => {
|
|
412
|
+
var R, E, J, x;
|
|
413
|
+
if (o.value)
|
|
414
|
+
return ((R = b.find((w) => w.value === o.value)) == null ? void 0 : R.label) ?? "";
|
|
415
|
+
const W = (x = (J = (E = u()) == null ? void 0 : E.map) == null ? void 0 : J.basemap) == null ? void 0 : x.title;
|
|
416
|
+
return typeof W == "string" && W.trim() ? W : "当前底图";
|
|
417
|
+
}), p = () => {
|
|
418
|
+
var W, R;
|
|
419
|
+
o.value = kt(((R = (W = u()) == null ? void 0 : W.map) == null ? void 0 : R.basemap) ?? null);
|
|
420
|
+
}, M = () => {
|
|
421
|
+
r.value = !r.value, r.value ? (p(), c.value = "") : L();
|
|
422
|
+
}, B = () => {
|
|
423
|
+
r.value = !1, L(), c.value = "";
|
|
424
|
+
}, L = () => {
|
|
425
|
+
s.value = !1;
|
|
426
|
+
}, P = () => {
|
|
427
|
+
s.value = !s.value;
|
|
428
|
+
}, H = (W) => {
|
|
429
|
+
const R = u();
|
|
430
|
+
R != null && R.map && (R.map.basemap = Ct(W, d.value));
|
|
431
|
+
}, I = (W) => {
|
|
432
|
+
L();
|
|
433
|
+
const R = Lt(W, d.value);
|
|
434
|
+
if (R) {
|
|
435
|
+
c.value = R;
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
c.value = "", n("before-change"), o.value = W, H(W);
|
|
77
439
|
};
|
|
78
|
-
return (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
440
|
+
return fe(() => {
|
|
441
|
+
D = ke(() => A.value, L), p();
|
|
442
|
+
}), me(() => {
|
|
443
|
+
D == null || D(), D = null;
|
|
444
|
+
}), (W, R) => (g(), N("div", Nl, [
|
|
445
|
+
r.value ? (g(), re(Ee, {
|
|
446
|
+
key: 0,
|
|
447
|
+
title: "选择底图",
|
|
448
|
+
width: 300,
|
|
449
|
+
anchor: "start",
|
|
450
|
+
onClose: B
|
|
451
|
+
}, {
|
|
452
|
+
default: Ie(() => [
|
|
453
|
+
a("div", Bl, [
|
|
454
|
+
R[1] || (R[1] = a("span", { class: "basemap-switch-label" }, "选择底图", -1)),
|
|
455
|
+
a("div", {
|
|
456
|
+
ref_key: "basemapSelectRef",
|
|
457
|
+
ref: A,
|
|
458
|
+
class: "basemap-unit-select"
|
|
459
|
+
}, [
|
|
460
|
+
a("button", {
|
|
461
|
+
type: "button",
|
|
462
|
+
class: ae(["basemap-unit-trigger", { "is-open": s.value }]),
|
|
463
|
+
"aria-label": "底图选项",
|
|
464
|
+
"aria-haspopup": "listbox",
|
|
465
|
+
"aria-expanded": s.value,
|
|
466
|
+
onClick: te(P, ["stop"]),
|
|
467
|
+
onKeydown: Ae(L, ["esc"])
|
|
468
|
+
}, [
|
|
469
|
+
a("span", null, U(y.value), 1),
|
|
470
|
+
R[0] || (R[0] = a("span", {
|
|
471
|
+
class: "basemap-unit-arrow",
|
|
472
|
+
"aria-hidden": "true"
|
|
473
|
+
}, null, -1))
|
|
474
|
+
], 42, Yl),
|
|
475
|
+
s.value ? (g(), N("ul", Gl, [
|
|
476
|
+
(g(!0), N(ce, null, de(se(b), (E) => (g(), N("li", {
|
|
477
|
+
key: E.value
|
|
478
|
+
}, [
|
|
479
|
+
a("button", {
|
|
480
|
+
type: "button",
|
|
481
|
+
role: "option",
|
|
482
|
+
"aria-selected": o.value === E.value,
|
|
483
|
+
onClick: te((J) => I(E.value), ["stop"])
|
|
484
|
+
}, U(E.label), 9, Zl)
|
|
485
|
+
]))), 128))
|
|
486
|
+
])) : _("", !0)
|
|
487
|
+
], 512)
|
|
488
|
+
]),
|
|
489
|
+
c.value ? (g(), N("p", Ql, U(c.value), 1)) : _("", !0)
|
|
490
|
+
]),
|
|
491
|
+
_: 1
|
|
492
|
+
})) : _("", !0),
|
|
493
|
+
a("button", {
|
|
84
494
|
type: "button",
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}, "地形"),
|
|
91
|
-
c("button", {
|
|
92
|
-
type: "button",
|
|
93
|
-
onClick: e[3] || (e[3] = (u) => i("topo-vector"))
|
|
94
|
-
}, "地形图"),
|
|
95
|
-
c("button", {
|
|
96
|
-
type: "button",
|
|
97
|
-
onClick: r
|
|
98
|
-
}, "自定义")
|
|
495
|
+
class: ae(["basemap-switch-trigger", { "is-active": r.value }]),
|
|
496
|
+
style: Ye({ backgroundImage: `url(${se(Ol)})` }),
|
|
497
|
+
"aria-label": "选择底图",
|
|
498
|
+
onClick: M
|
|
499
|
+
}, " 底图 ", 6)
|
|
99
500
|
]));
|
|
100
501
|
}
|
|
101
|
-
},
|
|
102
|
-
|
|
502
|
+
}), Pl = /* @__PURE__ */ ve(Fl, [["__scopeId", "data-v-3546149f"]]), Le = /* @__PURE__ */ new Map(), De = /* @__PURE__ */ new Set(), Wl = (e) => De.has(e), qe = (e) => {
|
|
503
|
+
Le.delete(e), De.delete(e);
|
|
504
|
+
}, Jl = (e) => {
|
|
505
|
+
for (const t of [...De])
|
|
506
|
+
e.has(t) || qe(t);
|
|
507
|
+
for (const t of [...Le.keys()])
|
|
508
|
+
e.has(t) || Le.delete(t);
|
|
509
|
+
}, mt = (e) => e.type === "feature", vt = (e) => e.replace(/\\/g, "\\\\").replace(/"/g, '\\"'), Dt = (e) => `Text($feature["${e.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"])`, zl = (e) => {
|
|
510
|
+
if (e.length === 0)
|
|
511
|
+
throw new Error("buildLabelExpression: fields 不能为空");
|
|
512
|
+
return e.map((t) => Dt(t)).join(' + " " + ');
|
|
513
|
+
}, jl = (e, t) => {
|
|
514
|
+
const l = [];
|
|
515
|
+
let n = 0;
|
|
516
|
+
const u = /\{(\d+)\}/g;
|
|
517
|
+
let d;
|
|
518
|
+
for (; (d = u.exec(t)) !== null; ) {
|
|
519
|
+
const r = t.slice(n, d.index);
|
|
520
|
+
r && l.push(`"${vt(r)}"`);
|
|
521
|
+
const s = Number(d[1]), A = e[s];
|
|
522
|
+
if (!A)
|
|
523
|
+
throw new Error(`buildLabelExpression: 模板索引 {${s}} 超出 fields 范围`);
|
|
524
|
+
l.push(Dt(A)), n = d.index + d[0].length;
|
|
525
|
+
}
|
|
526
|
+
const b = t.slice(n);
|
|
527
|
+
if (b && l.push(`"${vt(b)}"`), l.length === 0)
|
|
528
|
+
throw new Error("buildLabelExpression: fieldTemplate 无效");
|
|
529
|
+
return l.join(" + ");
|
|
530
|
+
}, Kl = (e) => {
|
|
531
|
+
var l;
|
|
532
|
+
if ((l = e.expression) != null && l.trim())
|
|
533
|
+
return e.expression.trim();
|
|
534
|
+
const t = e.fields ?? [];
|
|
535
|
+
if (t.length === 0)
|
|
536
|
+
throw new Error("BusinessLayerLabelConfig 需提供 expression 或 fields");
|
|
537
|
+
return e.fieldTemplate ? jl(t, e.fieldTemplate) : zl(t);
|
|
538
|
+
}, yt = (e, t) => e === void 0 ? t : e, Ul = (e) => {
|
|
539
|
+
const t = e.style ?? {}, l = Kl(e);
|
|
540
|
+
return new wt({
|
|
541
|
+
labelPlacement: t.labelPlacement || "center-center",
|
|
542
|
+
labelExpressionInfo: { expression: l },
|
|
543
|
+
symbol: new St({
|
|
544
|
+
color: yt(t.color, [26, 127, 55, 1]),
|
|
545
|
+
haloColor: yt(t.haloColor, [255, 255, 255, 1]),
|
|
546
|
+
haloSize: t.haloSize ?? 1.5,
|
|
547
|
+
font: {
|
|
548
|
+
size: t.fontSize ?? 11,
|
|
549
|
+
weight: t.fontWeight ?? "bold"
|
|
550
|
+
}
|
|
551
|
+
})
|
|
552
|
+
});
|
|
553
|
+
}, Vl = (e, t) => {
|
|
554
|
+
if (e.layerId === void 0 || e.layerId === null || e.layerId === "")
|
|
555
|
+
return null;
|
|
556
|
+
const l = String(e.layerId);
|
|
557
|
+
return l.startsWith(t) ? l : `${t}${l}`;
|
|
558
|
+
}, Xl = (e, t, l) => {
|
|
559
|
+
const n = Vl(t, l);
|
|
560
|
+
if (n) {
|
|
561
|
+
const u = e.findLayerById(n);
|
|
562
|
+
if (u && mt(u)) return u;
|
|
563
|
+
}
|
|
564
|
+
if (t.title) {
|
|
565
|
+
const u = e.layers.find((d) => d.title === t.title);
|
|
566
|
+
if (u && mt(u)) return u;
|
|
567
|
+
}
|
|
568
|
+
return null;
|
|
569
|
+
}, Ot = (e, t) => {
|
|
570
|
+
if (t.length === 0) return;
|
|
571
|
+
const l = e.outFields;
|
|
572
|
+
if (!l || l.length === 0) {
|
|
573
|
+
e.outFields = [...t];
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
if (l.includes("*")) return;
|
|
577
|
+
const n = /* @__PURE__ */ new Set([...l, ...t]);
|
|
578
|
+
e.outFields = [...n];
|
|
579
|
+
}, Hl = (e, t, l) => {
|
|
580
|
+
if (!e || t.length === 0) return;
|
|
581
|
+
const n = (l == null ? void 0 : l.idPrefix) ?? he;
|
|
582
|
+
t.forEach((u) => {
|
|
583
|
+
const d = Xl(e, u, n);
|
|
584
|
+
if (!d) {
|
|
585
|
+
console.warn(
|
|
586
|
+
"applyBusinessLayerLabels: 未找到匹配图层",
|
|
587
|
+
u.layerId ?? u.title
|
|
588
|
+
);
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
let b;
|
|
592
|
+
try {
|
|
593
|
+
b = Ul(u);
|
|
594
|
+
} catch (s) {
|
|
595
|
+
console.error("applyBusinessLayerLabels: 创建注记失败", u, s);
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
const r = u.fields ?? [];
|
|
599
|
+
d.when(() => {
|
|
600
|
+
Wl(d.id) || (r.length > 0 && Ot(d, r), d.labelsVisible = !0, d.labelingInfo = [b]);
|
|
601
|
+
}).catch((s) => {
|
|
602
|
+
console.error(
|
|
603
|
+
`applyBusinessLayerLabels: 图层加载失败 (${d.title || d.id})`,
|
|
604
|
+
s
|
|
605
|
+
);
|
|
606
|
+
});
|
|
607
|
+
});
|
|
608
|
+
}, ql = 8848, _l = 'PROJCS["CGCS2000_Albers",GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_China_2000",SPHEROID["CGCS2000",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Origin",105.0],PARAMETER["Latitude_Of_1st_Point",25.0],PARAMETER["Latitude_Of_2nd_Point",47.0],PARAMETER["Scale_Factor",0.0],PARAMETER["Central_Parallel",0.0],PARAMETER["Azimuth",0.0],PARAMETER["Longitude_Of_1st_Point",0.0],PARAMETER["Longitude_Of_2nd_Point",0.0],PARAMETER["Longitude_Of_Center",0.0],PARAMETER["Latitude_Of_Center",0.0],UNIT["Meter",1.0]]', $l = (e) => (e || "").replace(/\s+/g, "").toUpperCase(), _e = (e) => {
|
|
609
|
+
const t = (e == null ? void 0 : e.wkid) ?? (e == null ? void 0 : e.latestWkid), l = t == null || !Number.isFinite(Number(t)) ? null : String(t), n = $l((e == null ? void 0 : e.wkt) || "");
|
|
610
|
+
return { wkid: l, wkt: n };
|
|
611
|
+
}, ea = (e) => {
|
|
612
|
+
if (e == null || e === "")
|
|
613
|
+
return null;
|
|
614
|
+
const t = Number(e);
|
|
615
|
+
return Number.isFinite(t) ? t === ql ? {
|
|
616
|
+
sourceCode: t,
|
|
617
|
+
wkid: null,
|
|
618
|
+
wkt: _l,
|
|
619
|
+
label: "CGCS2000_Albers"
|
|
620
|
+
} : {
|
|
621
|
+
sourceCode: t,
|
|
622
|
+
wkid: t,
|
|
623
|
+
wkt: null,
|
|
624
|
+
label: `WKID ${t}`
|
|
625
|
+
} : null;
|
|
626
|
+
}, ta = (e) => ({
|
|
627
|
+
wkid: e.wkid,
|
|
628
|
+
wkt: e.wkt
|
|
629
|
+
}), la = (e, t) => {
|
|
630
|
+
const l = _e(e), n = _e(t);
|
|
631
|
+
return l.wkid && n.wkid ? l.wkid === n.wkid ? "match" : "mismatch" : l.wkt && n.wkt ? l.wkt === n.wkt ? "match" : "mismatch" : "unreadable";
|
|
632
|
+
}, aa = (e) => {
|
|
633
|
+
const t = _e(e);
|
|
634
|
+
if (t.wkid) return `WKID ${t.wkid}`;
|
|
635
|
+
if (t.wkt) {
|
|
636
|
+
const l = ((e == null ? void 0 : e.wkt) || "").match(/PROJCS\["([^"]+)"/i);
|
|
637
|
+
return l != null && l[1] ? l[1] : "自定义 WKT";
|
|
638
|
+
}
|
|
639
|
+
return "未知";
|
|
640
|
+
}, he = "bgl-biz-", Ke = new globalThis.Map(), $e = /* @__PURE__ */ new Set(), Nt = () => {
|
|
641
|
+
$e.forEach((e) => e());
|
|
642
|
+
}, He = (e) => Ke.get(e) ?? null, Bs = () => Array.from(Ke.values()), na = (e) => ($e.add(e), () => {
|
|
643
|
+
$e.delete(e);
|
|
644
|
+
}), oa = (e) => {
|
|
645
|
+
let t = !1;
|
|
646
|
+
e.forEach((l) => {
|
|
647
|
+
Ke.delete(l) && (t = !0);
|
|
648
|
+
}), t && Nt();
|
|
649
|
+
}, sa = (e) => {
|
|
650
|
+
Ke.set(e.layerId, e), Nt();
|
|
651
|
+
}, Be = (e) => {
|
|
652
|
+
if (e == null || e === "") return;
|
|
653
|
+
const t = Number(e);
|
|
654
|
+
return Number.isFinite(t) ? t : void 0;
|
|
655
|
+
}, Bt = (e) => e === !0 || e === 1 || e === "1" ? !0 : typeof e == "string" ? e.toLowerCase() === "true" : !1, ia = (e) => e == null || e === "" ? !0 : Bt(e), ra = (e) => /\/(MapServer|FeatureServer)\/?$/i.test(e.replace(/\?.*$/, "")), Yt = (e) => {
|
|
656
|
+
const t = String(e.mapServiceType ?? ""), l = e.mapServiceUrl || "";
|
|
657
|
+
return !!(/\/MapServer\/?$/i.test(l.replace(/\?.*$/, "")) || (t === "1" || t.toLowerCase() === "mapserver") && ra(l));
|
|
658
|
+
}, ft = (e, t) => {
|
|
659
|
+
if (!Bt(e.scaleConfig)) return t;
|
|
660
|
+
const l = Be(e.minScale), n = Be(e.maxScale);
|
|
661
|
+
return l !== void 0 && (t.minScale = l), n !== void 0 && (t.maxScale = n), t;
|
|
662
|
+
}, Qe = (e, t = he) => `${t}${String(e.id)}`, Gt = (e, t) => {
|
|
663
|
+
var u;
|
|
664
|
+
const l = {
|
|
665
|
+
url: e.mapServiceUrl,
|
|
666
|
+
id: Qe(e, t == null ? void 0 : t.idPrefix),
|
|
667
|
+
title: e.mapServiceName,
|
|
668
|
+
visible: ia(e.layerVisible)
|
|
669
|
+
};
|
|
670
|
+
if (t != null && t.accessToken && (l.customParameters = { token: t.accessToken }), Yt(e))
|
|
671
|
+
return ft(e, l);
|
|
672
|
+
const n = { ...l };
|
|
673
|
+
return (u = t == null ? void 0 : t.outFields) != null && u.length && (n.outFields = t.outFields), ft(e, n);
|
|
674
|
+
}, Ys = (e) => Gt(e), ca = (e) => e.replace(/\/$/, "").replace(/\/portal$/i, "");
|
|
675
|
+
let Pe = "", Fe = null;
|
|
676
|
+
const ua = (e, t) => {
|
|
677
|
+
var n;
|
|
678
|
+
Pe = t;
|
|
679
|
+
const l = e.filter(Boolean);
|
|
680
|
+
if (Fe) {
|
|
681
|
+
Fe.urls = l;
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
684
|
+
Fe = {
|
|
685
|
+
urls: l,
|
|
686
|
+
before: (u) => {
|
|
687
|
+
if (!Pe) return;
|
|
688
|
+
const d = u.requestOptions.query ?? {};
|
|
689
|
+
d.token || (u.requestOptions.query = { ...d, token: Pe });
|
|
690
|
+
}
|
|
691
|
+
}, (n = st.request).interceptors ?? (n.interceptors = []), st.request.interceptors.push(Fe);
|
|
692
|
+
}, da = () => {
|
|
693
|
+
Pe = "";
|
|
694
|
+
}, ht = async (e) => {
|
|
695
|
+
var o;
|
|
696
|
+
const t = ca(e.portalUrl), l = e.tokenServiceUrl || `${t}/portal/sharing/rest/generateToken`, n = e.referer || (typeof window < "u" ? window.location.origin : t), u = String(e.expirationMinutes ?? 120), d = new URLSearchParams({
|
|
697
|
+
username: e.username,
|
|
698
|
+
password: e.password,
|
|
699
|
+
client: "referer",
|
|
700
|
+
referer: n,
|
|
701
|
+
expiration: u,
|
|
702
|
+
f: "json"
|
|
703
|
+
}), b = await fetch(l, {
|
|
704
|
+
method: "POST",
|
|
705
|
+
headers: {
|
|
706
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
707
|
+
},
|
|
708
|
+
body: d
|
|
709
|
+
});
|
|
710
|
+
if (!b.ok)
|
|
711
|
+
throw new Error(`Portal generateToken HTTP ${b.status}`);
|
|
712
|
+
const r = await b.json();
|
|
713
|
+
if (!r.token)
|
|
714
|
+
throw new Error(((o = r.error) == null ? void 0 : o.message) || "Portal generateToken 未返回 token");
|
|
715
|
+
const A = [.../* @__PURE__ */ new Set([
|
|
716
|
+
`${t}/portal/sharing/rest`,
|
|
717
|
+
`${t}/server`,
|
|
718
|
+
`${t}/server/rest`,
|
|
719
|
+
`${t}/server/rest/services`,
|
|
720
|
+
...(e.extraServers ?? []).map((c) => c.replace(/\/$/, ""))
|
|
721
|
+
])];
|
|
722
|
+
return A.forEach((c) => {
|
|
723
|
+
rl.registerToken({
|
|
724
|
+
server: c,
|
|
725
|
+
token: r.token
|
|
726
|
+
});
|
|
727
|
+
}), ua(A, r.token), r.token;
|
|
728
|
+
}, Aa = (e, t) => {
|
|
729
|
+
const l = Math.max(1, e), n = Math.max(5, Math.floor(l / 6)), d = Math.min(Math.max(1, t ?? n), Math.floor(l / 2));
|
|
730
|
+
return Math.max(1, l - d) * 60 * 1e3;
|
|
731
|
+
}, Gs = async (e) => {
|
|
732
|
+
const { renewBeforeMinutes: t, onRenewError: l, ...n } = e, u = n.expirationMinutes ?? 120;
|
|
733
|
+
let d = !1, b = null, r = await ht({
|
|
734
|
+
...n,
|
|
735
|
+
expirationMinutes: u
|
|
736
|
+
});
|
|
737
|
+
const s = () => {
|
|
738
|
+
b !== null && (clearTimeout(b), b = null);
|
|
739
|
+
}, A = async () => {
|
|
740
|
+
if (!d)
|
|
741
|
+
try {
|
|
742
|
+
r = await ht({
|
|
743
|
+
...n,
|
|
744
|
+
expirationMinutes: u
|
|
745
|
+
}), o();
|
|
746
|
+
} catch (c) {
|
|
747
|
+
console.error("Portal token 自动续期失败:", c), l == null || l(c), d || (b = setTimeout(() => {
|
|
748
|
+
A();
|
|
749
|
+
}, 300 * 1e3));
|
|
750
|
+
}
|
|
751
|
+
}, o = () => {
|
|
752
|
+
if (s(), d) return;
|
|
753
|
+
const c = Aa(u, t);
|
|
754
|
+
b = setTimeout(() => {
|
|
755
|
+
A();
|
|
756
|
+
}, c);
|
|
757
|
+
};
|
|
758
|
+
return o(), {
|
|
759
|
+
get token() {
|
|
760
|
+
return r;
|
|
761
|
+
},
|
|
762
|
+
stop: () => {
|
|
763
|
+
d = !0, s(), da();
|
|
764
|
+
}
|
|
765
|
+
};
|
|
766
|
+
}, pa = (e, t) => {
|
|
767
|
+
const l = new Set(t), n = e.layers.filter((u) => l.has(u.id)).toArray();
|
|
768
|
+
oa(t), n.length > 0 && (e.removeMany(n), n.forEach((u) => u.destroy()));
|
|
769
|
+
}, ma = (e, t) => Yt(e) ? new il(t) : new sl(t), va = (e) => {
|
|
770
|
+
const {
|
|
771
|
+
map: t,
|
|
772
|
+
layers: l,
|
|
773
|
+
resolveLayerProps: n,
|
|
774
|
+
reverse: u = !1,
|
|
775
|
+
idPrefix: d = he,
|
|
776
|
+
outFields: b,
|
|
777
|
+
labelConfigs: r,
|
|
778
|
+
expectedSpatialReferenceWkid: s,
|
|
779
|
+
onSpatialReferenceMismatch: A,
|
|
780
|
+
accessToken: o
|
|
781
|
+
} = e, c = [...l].sort((B, L) => {
|
|
782
|
+
const P = Be(B.layerOrder) ?? 0, H = Be(L.layerOrder) ?? 0;
|
|
783
|
+
return P - H;
|
|
784
|
+
}), D = u ? [...c].reverse() : c, y = D.map((B) => Qe(B, d));
|
|
785
|
+
pa(t, y);
|
|
786
|
+
const p = ea(
|
|
787
|
+
s
|
|
788
|
+
), M = D.map((B) => {
|
|
789
|
+
const L = Gt(B, { idPrefix: d, outFields: b, accessToken: o }), P = n == null ? void 0 : n(B, L), H = P ? { ...L, ...P } : L, I = ma(B, H);
|
|
790
|
+
return I.when().then(() => {
|
|
791
|
+
if (!p) return;
|
|
792
|
+
const R = I.spatialReference ?? null, E = la(
|
|
793
|
+
ta(p),
|
|
794
|
+
R
|
|
795
|
+
);
|
|
796
|
+
if (E === "match") return;
|
|
797
|
+
const J = (R == null ? void 0 : R.wkid) ?? (R == null ? void 0 : R.latestWkid) ?? null, x = typeof J == "number" && Number.isFinite(J) ? J : null, w = {
|
|
798
|
+
layerId: I.id,
|
|
799
|
+
layerTitle: B.mapServiceName,
|
|
800
|
+
layerUrl: B.mapServiceUrl,
|
|
801
|
+
expectedWkid: p.sourceCode,
|
|
802
|
+
actualWkid: x,
|
|
803
|
+
reason: E,
|
|
804
|
+
expectedLabel: p.label,
|
|
805
|
+
actualLabel: aa(R)
|
|
806
|
+
};
|
|
807
|
+
if (E === "mismatch" && sa(w), A) {
|
|
808
|
+
A(w);
|
|
809
|
+
return;
|
|
810
|
+
}
|
|
811
|
+
if (E === "unreadable") {
|
|
812
|
+
console.warn(
|
|
813
|
+
`[坐标系校验] ${w.layerTitle} 无法读取坐标系:期望 ${w.expectedLabel},实际 ${w.actualLabel},url=${w.layerUrl}`
|
|
814
|
+
);
|
|
815
|
+
return;
|
|
816
|
+
}
|
|
817
|
+
console.warn(
|
|
818
|
+
`[坐标系校验] ${w.layerTitle} 不一致:期望 ${w.expectedLabel},实际 ${w.actualLabel},url=${w.layerUrl}`
|
|
819
|
+
);
|
|
820
|
+
}).catch((W) => {
|
|
821
|
+
console.error(`业务图层加载失败: ${B.mapServiceName} (${B.mapServiceUrl})`, W);
|
|
822
|
+
try {
|
|
823
|
+
t.findLayerById(I.id) && t.remove(I), I.destroy();
|
|
824
|
+
} catch (R) {
|
|
825
|
+
console.error(`移除失败图层时出错: ${B.mapServiceName}`, R);
|
|
826
|
+
}
|
|
827
|
+
}), I;
|
|
828
|
+
});
|
|
829
|
+
return M.length > 0 && t.addMany(M), r && r.length > 0 && Hl(t, r, { idPrefix: d }), M;
|
|
830
|
+
}, ya = (e, t) => {
|
|
831
|
+
const l = [];
|
|
832
|
+
return e.layers.forEach((n, u) => {
|
|
833
|
+
(n.id || "").startsWith(t) && l.push(u);
|
|
834
|
+
}), l;
|
|
835
|
+
}, fa = (e) => {
|
|
836
|
+
const { map: t, layers: l, reverse: n = !1, idPrefix: u = he } = e, d = [...l].sort((s, A) => {
|
|
837
|
+
const o = Be(s.layerOrder) ?? 0, c = Be(A.layerOrder) ?? 0;
|
|
838
|
+
return o - c;
|
|
839
|
+
}), r = (n ? [...d].reverse() : d).map((s) => t.findLayerById(Qe(s, u))).filter((s) => !!s);
|
|
840
|
+
r.length !== 0 && r.forEach((s, A) => {
|
|
841
|
+
const o = ya(t, u)[A];
|
|
842
|
+
o !== void 0 && t.layers.indexOf(s) !== o && t.layers.reorder(s, o);
|
|
843
|
+
});
|
|
844
|
+
}, ha = /* @__PURE__ */ pe({
|
|
845
|
+
__name: "MapLegend",
|
|
846
|
+
props: {
|
|
847
|
+
view: {},
|
|
848
|
+
idPrefix: { default: he },
|
|
849
|
+
position: { default: "left" },
|
|
850
|
+
offsetX: { default: 12 },
|
|
851
|
+
offsetY: { default: 14 }
|
|
852
|
+
},
|
|
853
|
+
setup(e) {
|
|
854
|
+
const t = e, l = () => ge(t.view), n = T(null);
|
|
855
|
+
let u = null, d = null;
|
|
856
|
+
const b = ee(() => {
|
|
857
|
+
const c = Math.max(0, t.offsetX), y = {
|
|
858
|
+
bottom: `${Math.max(0, t.offsetY)}px`
|
|
859
|
+
};
|
|
860
|
+
return t.position === "right" ? (y.right = `${c}px`, y.left = "auto") : (y.left = `${c}px`, y.right = "auto"), y;
|
|
861
|
+
}), r = () => {
|
|
862
|
+
var y;
|
|
863
|
+
const c = (y = l()) == null ? void 0 : y.map;
|
|
864
|
+
if (!c) return [];
|
|
865
|
+
const D = t.idPrefix;
|
|
866
|
+
return c.layers.filter((p) => (p.id || "").startsWith(D) && p.listMode !== "hide").toArray().reverse();
|
|
867
|
+
}, s = () => r().map((c) => ({
|
|
868
|
+
layer: c,
|
|
869
|
+
title: c.title || c.id
|
|
870
|
+
})), A = () => {
|
|
871
|
+
u && (u.layerInfos = s());
|
|
872
|
+
}, o = () => {
|
|
873
|
+
d == null || d.remove(), d = null, u && (u.destroy(), u = null);
|
|
874
|
+
};
|
|
875
|
+
return fe(() => {
|
|
876
|
+
const c = n.value, D = l();
|
|
877
|
+
if (!c || !D) return;
|
|
878
|
+
u = new ol({
|
|
879
|
+
view: D,
|
|
880
|
+
container: c,
|
|
881
|
+
layerInfos: s()
|
|
882
|
+
});
|
|
883
|
+
const y = D.map;
|
|
884
|
+
y && (d = y.layers.on("change", A));
|
|
885
|
+
}), ue(
|
|
886
|
+
() => t.idPrefix,
|
|
887
|
+
() => {
|
|
888
|
+
A();
|
|
889
|
+
}
|
|
890
|
+
), me(() => {
|
|
891
|
+
o();
|
|
892
|
+
}), (c, D) => (g(), N("section", {
|
|
893
|
+
class: ae(["map-legend", e.position === "right" ? "is-right" : "is-left"]),
|
|
894
|
+
style: Ye(b.value),
|
|
895
|
+
onClick: D[0] || (D[0] = te(() => {
|
|
896
|
+
}, ["stop"])),
|
|
897
|
+
onPointerdown: D[1] || (D[1] = te(() => {
|
|
898
|
+
}, ["stop"]))
|
|
899
|
+
}, [
|
|
900
|
+
a("div", {
|
|
901
|
+
ref_key: "legendContainerRef",
|
|
902
|
+
ref: n,
|
|
903
|
+
class: "map-legend__body"
|
|
904
|
+
}, null, 512)
|
|
905
|
+
], 38));
|
|
906
|
+
}
|
|
907
|
+
}), ba = /* @__PURE__ */ ve(ha, [["__scopeId", "data-v-714cd251"]]), ga = {
|
|
908
|
+
key: 0,
|
|
909
|
+
class: "map-scale-bar__graphic-label"
|
|
910
|
+
}, wa = {
|
|
911
|
+
key: 1,
|
|
912
|
+
class: "map-scale-bar__numeric"
|
|
913
|
+
}, Sa = /* @__PURE__ */ pe({
|
|
914
|
+
__name: "MapScaleBar",
|
|
915
|
+
props: {
|
|
916
|
+
view: {},
|
|
917
|
+
position: { default: "left" },
|
|
918
|
+
offsetX: { default: 12 },
|
|
919
|
+
offsetY: { default: 14 },
|
|
920
|
+
unit: { default: "metric" },
|
|
921
|
+
barStyle: { default: "line" },
|
|
922
|
+
showNumericScale: { type: Boolean, default: !1 },
|
|
923
|
+
numericScaleUseGrouping: { type: Boolean, default: !0 },
|
|
924
|
+
numericScaleFormatter: {},
|
|
925
|
+
panelBackground: {},
|
|
926
|
+
panelBorderColor: {},
|
|
927
|
+
graphicLabelColor: {},
|
|
928
|
+
numericLabelColor: {}
|
|
929
|
+
},
|
|
930
|
+
setup(e) {
|
|
931
|
+
const t = e, l = () => ge(t.view), n = T(null), u = T(""), d = T("");
|
|
932
|
+
let b = null, r = null, s = null, A = 0;
|
|
933
|
+
const o = ee(() => {
|
|
934
|
+
const I = Math.max(0, t.offsetX), R = {
|
|
935
|
+
bottom: `${Math.max(0, t.offsetY)}px`
|
|
936
|
+
};
|
|
937
|
+
return t.position === "right" ? (R.right = `${I}px`, R.left = "auto") : (R.left = `${I}px`, R.right = "auto"), t.panelBackground && (R["--bgl-scalebar-bg"] = t.panelBackground), t.panelBorderColor && (R["--bgl-scalebar-border-color"] = t.panelBorderColor), t.graphicLabelColor && (R["--bgl-scalebar-graphic-label-color"] = t.graphicLabelColor), t.numericLabelColor && (R["--bgl-scalebar-numeric-label-color"] = t.numericLabelColor), R;
|
|
938
|
+
}), c = () => {
|
|
939
|
+
b && (b.destroy(), b = null);
|
|
940
|
+
}, D = () => {
|
|
941
|
+
r == null || r.remove(), r = null;
|
|
942
|
+
}, y = () => {
|
|
943
|
+
s == null || s.disconnect(), s = null;
|
|
944
|
+
}, p = () => {
|
|
945
|
+
var E;
|
|
946
|
+
const I = n.value;
|
|
947
|
+
if (!I) {
|
|
948
|
+
d.value = "";
|
|
949
|
+
return;
|
|
950
|
+
}
|
|
951
|
+
const W = I.querySelector(".esri-scale-bar__label"), R = ((E = W == null ? void 0 : W.textContent) == null ? void 0 : E.trim()) ?? "";
|
|
952
|
+
d.value = R;
|
|
953
|
+
}, M = () => {
|
|
954
|
+
y();
|
|
955
|
+
const I = n.value;
|
|
956
|
+
if (!I) {
|
|
957
|
+
d.value = "";
|
|
958
|
+
return;
|
|
959
|
+
}
|
|
960
|
+
p(), s = new MutationObserver(() => {
|
|
961
|
+
p();
|
|
962
|
+
}), s.observe(I, {
|
|
963
|
+
childList: !0,
|
|
964
|
+
subtree: !0,
|
|
965
|
+
characterData: !0
|
|
966
|
+
});
|
|
967
|
+
}, B = () => {
|
|
968
|
+
var E;
|
|
969
|
+
const I = (E = l()) == null ? void 0 : E.scale;
|
|
970
|
+
if (!I || !Number.isFinite(I)) {
|
|
971
|
+
u.value = "";
|
|
972
|
+
return;
|
|
973
|
+
}
|
|
974
|
+
const W = Math.round(I);
|
|
975
|
+
if (t.numericScaleFormatter) {
|
|
976
|
+
u.value = t.numericScaleFormatter(W);
|
|
977
|
+
return;
|
|
978
|
+
}
|
|
979
|
+
const R = t.numericScaleUseGrouping ? W.toLocaleString() : `${W}`;
|
|
980
|
+
u.value = `1:${R}`;
|
|
981
|
+
}, L = async () => {
|
|
982
|
+
const I = ++A;
|
|
983
|
+
await H(I), I === A && await P();
|
|
984
|
+
}, P = async () => {
|
|
985
|
+
D();
|
|
986
|
+
const I = l();
|
|
987
|
+
if (!t.showNumericScale || !I) {
|
|
988
|
+
u.value = "";
|
|
989
|
+
return;
|
|
990
|
+
}
|
|
991
|
+
await I.when(), I === l() && (B(), r = We.watch(
|
|
992
|
+
() => {
|
|
993
|
+
var W, R;
|
|
994
|
+
return [I.scale, (W = I.center) == null ? void 0 : W.x, (R = I.center) == null ? void 0 : R.y, I.width, I.height];
|
|
995
|
+
},
|
|
996
|
+
B,
|
|
997
|
+
{ initial: !0 }
|
|
998
|
+
));
|
|
999
|
+
}, H = async (I = ++A) => {
|
|
1000
|
+
c(), y(), d.value = "";
|
|
1001
|
+
const W = n.value, R = l();
|
|
1002
|
+
!W || !R || (await R.when(), !(I !== A || R !== l()) && (await new Promise((E) => requestAnimationFrame(() => E())), !(I !== A || R !== l()) && (b = new cl({
|
|
1003
|
+
view: R,
|
|
1004
|
+
container: W,
|
|
1005
|
+
unit: t.unit,
|
|
1006
|
+
style: t.barStyle
|
|
1007
|
+
}), M())));
|
|
1008
|
+
};
|
|
1009
|
+
return fe(() => {
|
|
1010
|
+
L();
|
|
1011
|
+
}), ue(
|
|
1012
|
+
() => t.view,
|
|
1013
|
+
() => {
|
|
1014
|
+
L();
|
|
1015
|
+
}
|
|
1016
|
+
), ue(
|
|
1017
|
+
() => [t.unit, t.barStyle],
|
|
1018
|
+
() => {
|
|
1019
|
+
H();
|
|
1020
|
+
}
|
|
1021
|
+
), ue(
|
|
1022
|
+
() => t.showNumericScale,
|
|
1023
|
+
() => {
|
|
1024
|
+
P();
|
|
1025
|
+
}
|
|
1026
|
+
), ue(
|
|
1027
|
+
() => [t.numericScaleUseGrouping, t.numericScaleFormatter],
|
|
1028
|
+
() => {
|
|
1029
|
+
B();
|
|
1030
|
+
}
|
|
1031
|
+
), me(() => {
|
|
1032
|
+
D(), y(), c();
|
|
1033
|
+
}), (I, W) => (g(), N("div", {
|
|
1034
|
+
class: ae(["map-scale-bar", e.position === "right" ? "is-right" : "is-left"]),
|
|
1035
|
+
style: Ye(o.value),
|
|
1036
|
+
onClick: W[0] || (W[0] = te(() => {
|
|
1037
|
+
}, ["stop"])),
|
|
1038
|
+
onPointerdown: W[1] || (W[1] = te(() => {
|
|
1039
|
+
}, ["stop"]))
|
|
1040
|
+
}, [
|
|
1041
|
+
d.value ? (g(), N("div", ga, U(d.value), 1)) : _("", !0),
|
|
1042
|
+
a("div", {
|
|
1043
|
+
ref_key: "scaleBarContainerRef",
|
|
1044
|
+
ref: n,
|
|
1045
|
+
class: "map-scale-bar__body"
|
|
1046
|
+
}, null, 512),
|
|
1047
|
+
e.showNumericScale && u.value ? (g(), N("div", wa, U(u.value), 1)) : _("", !0)
|
|
1048
|
+
], 38));
|
|
1049
|
+
}
|
|
1050
|
+
}), Ia = /* @__PURE__ */ ve(Sa, [["__scopeId", "data-v-26c169e2"]]), Ea = { class: "coordinate-locate-form" }, La = { class: "coordinate-locate-field" }, ka = ["aria-expanded"], xa = {
|
|
1051
|
+
key: 0,
|
|
1052
|
+
class: "coordinate-system-options",
|
|
1053
|
+
role: "listbox"
|
|
1054
|
+
}, Ca = ["aria-selected", "onClick"], Ma = ["placeholder"], Ra = ["placeholder"], Ta = { class: "coordinate-locate-hint" }, Da = {
|
|
1055
|
+
key: 0,
|
|
1056
|
+
class: "coordinate-locate-error",
|
|
1057
|
+
role: "alert"
|
|
1058
|
+
}, Oa = /* @__PURE__ */ pe({
|
|
1059
|
+
__name: "CoordinateLocatePanel",
|
|
103
1060
|
props: {
|
|
104
1061
|
/** MapView 实例 */
|
|
105
1062
|
view: { type: Object, required: !0 },
|
|
106
|
-
/**
|
|
107
|
-
|
|
1063
|
+
/** 坐标定位面板可用坐标系配置;不传则使用内置默认项 */
|
|
1064
|
+
coordinateSystemConfig: {
|
|
1065
|
+
type: Object,
|
|
1066
|
+
default: null
|
|
1067
|
+
}
|
|
108
1068
|
},
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
1069
|
+
emits: ["close"],
|
|
1070
|
+
setup(e, { emit: t }) {
|
|
1071
|
+
const l = e, n = t, u = () => ge(l.view), d = [
|
|
1072
|
+
{ wkid: 4490, label: "经纬度" },
|
|
1073
|
+
{ wkid: 4548, label: "3度带-不带号" },
|
|
1074
|
+
{ wkid: 4527, label: "3度带-带号" },
|
|
1075
|
+
{ wkid: 4509, label: "6度带-不带号" },
|
|
1076
|
+
{ wkid: 4498, label: "6度带-带号" }
|
|
1077
|
+
], b = ee(() => {
|
|
1078
|
+
var k;
|
|
1079
|
+
const G = ((k = l.coordinateSystemConfig) == null ? void 0 : k.options) ?? [];
|
|
1080
|
+
return G.length > 0 ? G : d;
|
|
1081
|
+
}), r = () => {
|
|
1082
|
+
var Z, m;
|
|
1083
|
+
const G = b.value, k = (Z = l.coordinateSystemConfig) == null ? void 0 : Z.defaultWkid;
|
|
1084
|
+
return typeof k == "number" && Number.isFinite(k) && G.some((i) => i.wkid === k) ? k : ((m = G[0]) == null ? void 0 : m.wkid) ?? 4490;
|
|
1085
|
+
}, s = T(r()), A = T(!1), o = T(null), c = T(""), D = T(""), y = T(""), p = Se(null);
|
|
1086
|
+
let M = null, B = null;
|
|
1087
|
+
const L = (G) => new it({ wkid: G }).isGeographic, P = ee(
|
|
1088
|
+
() => L(s.value)
|
|
1089
|
+
), H = ee(() => P.value ? "经度" : "横坐标"), I = ee(() => P.value ? "纬度" : "纵坐标"), W = ee(() => {
|
|
1090
|
+
var G;
|
|
1091
|
+
return ((G = b.value.find((k) => k.wkid === s.value)) == null ? void 0 : G.label) ?? "";
|
|
1092
|
+
}), R = ee(() => `提示:当前坐标系为 ${W.value},面板打开时按住 Shift + 左键可拾取地图坐标`), E = () => {
|
|
1093
|
+
A.value = !1;
|
|
1094
|
+
}, J = () => {
|
|
1095
|
+
A.value = !A.value;
|
|
1096
|
+
}, x = async (G) => {
|
|
1097
|
+
if (G === s.value) {
|
|
1098
|
+
E();
|
|
1099
|
+
return;
|
|
1100
|
+
}
|
|
1101
|
+
const k = s.value, Z = c.value, m = D.value, i = Number(Z), v = Number(m), f = !!Z && !!m && Number.isFinite(i) && Number.isFinite(v);
|
|
1102
|
+
if (E(), y.value = "", !f) {
|
|
1103
|
+
s.value = G;
|
|
1104
|
+
return;
|
|
1105
|
+
}
|
|
1106
|
+
try {
|
|
1107
|
+
const C = new xe({
|
|
1108
|
+
x: i,
|
|
1109
|
+
y: v,
|
|
1110
|
+
spatialReference: { wkid: k }
|
|
1111
|
+
}), Q = await z(C, G);
|
|
1112
|
+
if (!Q) {
|
|
1113
|
+
y.value = "坐标系转换失败,请检查坐标值";
|
|
1114
|
+
return;
|
|
1115
|
+
}
|
|
1116
|
+
const K = L(G) ? 6 : 3;
|
|
1117
|
+
s.value = G, c.value = Q.x.toFixed(K), D.value = Q.y.toFixed(K);
|
|
1118
|
+
} catch {
|
|
1119
|
+
y.value = "坐标系转换失败,请检查坐标值";
|
|
1120
|
+
}
|
|
1121
|
+
}, w = () => {
|
|
1122
|
+
M == null || M.remove(), M = null;
|
|
1123
|
+
}, z = async (G, k) => {
|
|
1124
|
+
await Ne.load();
|
|
1125
|
+
const Z = typeof k == "number" ? new it({ wkid: k }) : k, m = Ne.execute(G, Z);
|
|
1126
|
+
return m instanceof xe ? m : null;
|
|
1127
|
+
}, h = () => {
|
|
1128
|
+
const G = u(), k = p.value;
|
|
1129
|
+
k && G.graphics.remove(k), p.value = null;
|
|
1130
|
+
}, S = (G) => {
|
|
1131
|
+
const k = u(), Z = new ul({
|
|
1132
|
+
geometry: G,
|
|
1133
|
+
symbol: new tt({
|
|
1134
|
+
color: "#ff4d4f",
|
|
1135
|
+
size: 10,
|
|
1136
|
+
outline: {
|
|
1137
|
+
color: "#ffffff",
|
|
1138
|
+
width: 1
|
|
1139
|
+
}
|
|
1140
|
+
})
|
|
1141
|
+
});
|
|
1142
|
+
h(), p.value = Z, k.graphics.add(Z);
|
|
1143
|
+
}, Y = () => {
|
|
1144
|
+
const G = u();
|
|
1145
|
+
!G || M || (M = G.on("pointer-down", async (k) => {
|
|
1146
|
+
var m;
|
|
1147
|
+
if (k.button !== 0 || !((m = k.native) != null && m.shiftKey)) return;
|
|
1148
|
+
k.stopPropagation();
|
|
1149
|
+
const Z = G.toMap({ x: k.x, y: k.y });
|
|
1150
|
+
if (Z)
|
|
1151
|
+
try {
|
|
1152
|
+
const i = await z(Z, s.value);
|
|
1153
|
+
if (!i) {
|
|
1154
|
+
y.value = "地图坐标转换失败";
|
|
1155
|
+
return;
|
|
1156
|
+
}
|
|
1157
|
+
const v = P.value ? 6 : 3;
|
|
1158
|
+
c.value = i.x.toFixed(v), D.value = i.y.toFixed(v), S(Z), y.value = "";
|
|
1159
|
+
} catch {
|
|
1160
|
+
y.value = "地图坐标转换失败";
|
|
1161
|
+
}
|
|
1162
|
+
}));
|
|
1163
|
+
}, F = async () => {
|
|
1164
|
+
const G = Number(c.value), k = Number(D.value);
|
|
1165
|
+
if (!c.value || !D.value || !Number.isFinite(G) || !Number.isFinite(k)) {
|
|
1166
|
+
y.value = `请输入有效的${H.value}和${I.value}`;
|
|
1167
|
+
return;
|
|
1168
|
+
}
|
|
1169
|
+
if (P.value && (G < -180 || G > 180 || k < -90 || k > 90)) {
|
|
1170
|
+
y.value = "经度范围为 -180~180,纬度范围为 -90~90";
|
|
1171
|
+
return;
|
|
1172
|
+
}
|
|
1173
|
+
y.value = "";
|
|
1174
|
+
const Z = u(), m = new xe({
|
|
1175
|
+
x: G,
|
|
1176
|
+
y: k,
|
|
1177
|
+
spatialReference: { wkid: s.value }
|
|
1178
|
+
});
|
|
1179
|
+
let i = null;
|
|
1180
|
+
try {
|
|
1181
|
+
i = await z(m, Z.spatialReference);
|
|
1182
|
+
} catch {
|
|
1183
|
+
y.value = "坐标转换失败,请检查坐标系和坐标值";
|
|
1184
|
+
return;
|
|
1185
|
+
}
|
|
1186
|
+
if (!i) {
|
|
1187
|
+
y.value = "坐标转换失败,请检查坐标系和坐标值";
|
|
1188
|
+
return;
|
|
1189
|
+
}
|
|
1190
|
+
S(i);
|
|
1191
|
+
try {
|
|
1192
|
+
await Z.goTo({ target: i, scale: 2e3 }, { duration: 2e3, easing: "in-out-expo" });
|
|
1193
|
+
} catch (v) {
|
|
1194
|
+
(!(v instanceof Error) || v.name !== "AbortError") && (y.value = "定位失败,请检查坐标后重试");
|
|
1195
|
+
}
|
|
1196
|
+
};
|
|
1197
|
+
return ue(
|
|
1198
|
+
b,
|
|
1199
|
+
() => {
|
|
1200
|
+
var k;
|
|
1201
|
+
if (!b.value.some((Z) => Z.wkid === s.value)) {
|
|
1202
|
+
s.value = r();
|
|
1203
|
+
return;
|
|
1204
|
+
}
|
|
1205
|
+
const G = (k = l.coordinateSystemConfig) == null ? void 0 : k.defaultWkid;
|
|
1206
|
+
typeof G == "number" && Number.isFinite(G) && G !== s.value && b.value.some((Z) => Z.wkid === G) && (s.value = G);
|
|
1207
|
+
},
|
|
1208
|
+
{ immediate: !0 }
|
|
1209
|
+
), fe(() => {
|
|
1210
|
+
B = ke(
|
|
1211
|
+
() => o.value,
|
|
1212
|
+
E
|
|
1213
|
+
), Y();
|
|
1214
|
+
}), me(() => {
|
|
1215
|
+
B == null || B(), B = null, w(), h();
|
|
1216
|
+
}), (G, k) => (g(), re(Ee, {
|
|
1217
|
+
title: "坐标定位",
|
|
1218
|
+
onClose: k[2] || (k[2] = (Z) => n("close"))
|
|
1219
|
+
}, {
|
|
1220
|
+
default: Ie(() => [
|
|
1221
|
+
a("div", Ea, [
|
|
1222
|
+
a("div", La, [
|
|
1223
|
+
k[4] || (k[4] = a("span", null, "坐标系:", -1)),
|
|
1224
|
+
a("div", {
|
|
1225
|
+
ref_key: "coordinateSystemSelectRef",
|
|
1226
|
+
ref: o,
|
|
1227
|
+
class: "coordinate-system-select"
|
|
1228
|
+
}, [
|
|
1229
|
+
a("button", {
|
|
1230
|
+
type: "button",
|
|
1231
|
+
class: ae(["coordinate-system-trigger", { "is-open": A.value }]),
|
|
1232
|
+
"aria-haspopup": "listbox",
|
|
1233
|
+
"aria-expanded": A.value,
|
|
1234
|
+
onClick: te(J, ["stop"]),
|
|
1235
|
+
onKeydown: Ae(E, ["esc"])
|
|
1236
|
+
}, [
|
|
1237
|
+
a("span", null, U(W.value), 1),
|
|
1238
|
+
k[3] || (k[3] = a("span", {
|
|
1239
|
+
class: "coordinate-system-arrow",
|
|
1240
|
+
"aria-hidden": "true"
|
|
1241
|
+
}, null, -1))
|
|
1242
|
+
], 42, ka),
|
|
1243
|
+
A.value ? (g(), N("ul", xa, [
|
|
1244
|
+
(g(!0), N(ce, null, de(b.value, (Z) => (g(), N("li", {
|
|
1245
|
+
key: Z.wkid
|
|
1246
|
+
}, [
|
|
1247
|
+
a("button", {
|
|
1248
|
+
type: "button",
|
|
1249
|
+
role: "option",
|
|
1250
|
+
"aria-selected": s.value === Z.wkid,
|
|
1251
|
+
onClick: te((m) => x(Z.wkid), ["stop"])
|
|
1252
|
+
}, U(Z.label), 9, Ca)
|
|
1253
|
+
]))), 128))
|
|
1254
|
+
])) : _("", !0)
|
|
1255
|
+
], 512)
|
|
1256
|
+
]),
|
|
1257
|
+
a("label", null, [
|
|
1258
|
+
a("span", null, U(H.value) + ":", 1),
|
|
1259
|
+
Ge(a("input", {
|
|
1260
|
+
"onUpdate:modelValue": k[0] || (k[0] = (Z) => c.value = Z),
|
|
1261
|
+
type: "text",
|
|
1262
|
+
inputmode: "decimal",
|
|
1263
|
+
autocomplete: "off",
|
|
1264
|
+
placeholder: `请输入${H.value}`,
|
|
1265
|
+
onKeydown: Ae(F, ["enter"])
|
|
1266
|
+
}, null, 40, Ma), [
|
|
1267
|
+
[
|
|
1268
|
+
Ze,
|
|
1269
|
+
c.value,
|
|
1270
|
+
void 0,
|
|
1271
|
+
{ trim: !0 }
|
|
1272
|
+
]
|
|
1273
|
+
])
|
|
1274
|
+
]),
|
|
1275
|
+
a("label", null, [
|
|
1276
|
+
a("span", null, U(I.value) + ":", 1),
|
|
1277
|
+
Ge(a("input", {
|
|
1278
|
+
"onUpdate:modelValue": k[1] || (k[1] = (Z) => D.value = Z),
|
|
1279
|
+
type: "text",
|
|
1280
|
+
inputmode: "decimal",
|
|
1281
|
+
autocomplete: "off",
|
|
1282
|
+
placeholder: `请输入${I.value}`,
|
|
1283
|
+
onKeydown: Ae(F, ["enter"])
|
|
1284
|
+
}, null, 40, Ra), [
|
|
1285
|
+
[
|
|
1286
|
+
Ze,
|
|
1287
|
+
D.value,
|
|
1288
|
+
void 0,
|
|
1289
|
+
{ trim: !0 }
|
|
1290
|
+
]
|
|
1291
|
+
])
|
|
1292
|
+
])
|
|
1293
|
+
]),
|
|
1294
|
+
a("p", Ta, U(R.value), 1),
|
|
1295
|
+
y.value ? (g(), N("p", Da, U(y.value), 1)) : _("", !0),
|
|
1296
|
+
a("button", {
|
|
1297
|
+
type: "button",
|
|
1298
|
+
class: "coordinate-locate-submit",
|
|
1299
|
+
onClick: F
|
|
1300
|
+
}, " 定位 ")
|
|
1301
|
+
]),
|
|
1302
|
+
_: 1
|
|
1303
|
+
}));
|
|
1304
|
+
}
|
|
1305
|
+
}), Na = /* @__PURE__ */ ve(Oa, [["__scopeId", "data-v-38ffb4a9"]]), Ba = { class: "distance-measure-actions" }, Ya = { class: "distance-measure-unit" }, Ga = ["aria-expanded"], Za = {
|
|
1306
|
+
key: 0,
|
|
1307
|
+
class: "distance-unit-options",
|
|
1308
|
+
role: "listbox"
|
|
1309
|
+
}, Qa = ["aria-selected", "onClick"], Fa = { class: "distance-measure-result__label" }, Pa = { key: 0 }, Wa = /* @__PURE__ */ pe({
|
|
1310
|
+
__name: "DistanceMeasurePanel",
|
|
1311
|
+
props: {
|
|
1312
|
+
/** MapView 实例 */
|
|
1313
|
+
view: { type: Object, required: !0 }
|
|
1314
|
+
},
|
|
1315
|
+
emits: ["close"],
|
|
1316
|
+
setup(e, { emit: t }) {
|
|
1317
|
+
const l = e, n = t, u = () => ge(l.view), d = [
|
|
1318
|
+
{ value: "meters", label: "米" },
|
|
1319
|
+
{ value: "kilometers", label: "公里" }
|
|
1320
|
+
], b = T("meters"), r = T(!1), s = T(null);
|
|
1321
|
+
let A = null;
|
|
1322
|
+
const o = T(null), c = T("请在地图上绘制线段(双击完成)"), D = Se(null), y = Se(null), p = [];
|
|
1323
|
+
let M = null, B, L;
|
|
1324
|
+
const P = () => new Al({
|
|
1325
|
+
data: {
|
|
1326
|
+
type: "CIMSymbolReference",
|
|
1327
|
+
symbol: {
|
|
1328
|
+
type: "CIMLineSymbol",
|
|
1329
|
+
symbolLayers: [
|
|
1330
|
+
{
|
|
1331
|
+
type: "CIMSolidStroke",
|
|
1332
|
+
enable: !0,
|
|
1333
|
+
capStyle: "Butt",
|
|
1334
|
+
joinStyle: "Round",
|
|
1335
|
+
miterLimit: 10,
|
|
1336
|
+
width: 1.6,
|
|
1337
|
+
color: [255, 234, 0, 255],
|
|
1338
|
+
effects: [
|
|
1339
|
+
{
|
|
1340
|
+
type: "CIMGeometricEffectDashes",
|
|
1341
|
+
dashTemplate: [6, 8],
|
|
1342
|
+
lineDashEnding: "HalfPattern"
|
|
1343
|
+
}
|
|
1344
|
+
]
|
|
1345
|
+
},
|
|
1346
|
+
{
|
|
1347
|
+
type: "CIMSolidStroke",
|
|
1348
|
+
enable: !0,
|
|
1349
|
+
capStyle: "Butt",
|
|
1350
|
+
joinStyle: "Round",
|
|
1351
|
+
miterLimit: 10,
|
|
1352
|
+
width: 2.4,
|
|
1353
|
+
color: [255, 109, 0, 255]
|
|
1354
|
+
}
|
|
1355
|
+
]
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
}), H = ee(() => {
|
|
1359
|
+
var m;
|
|
1360
|
+
return ((m = d.find((i) => i.value === b.value)) == null ? void 0 : m.label) ?? "";
|
|
1361
|
+
}), I = ee(() => o.value === null ? c.value : "测量距离"), W = ee(() => {
|
|
1362
|
+
const m = o.value;
|
|
1363
|
+
return m === null ? "" : b.value === "kilometers" ? `${(m / 1e3).toFixed(3)} 公里` : `${m.toFixed(2)} 米`;
|
|
1364
|
+
}), R = () => {
|
|
1365
|
+
r.value = !1;
|
|
1366
|
+
}, E = () => {
|
|
1367
|
+
r.value = !r.value;
|
|
1368
|
+
}, J = (m) => {
|
|
1369
|
+
b.value = m, R();
|
|
1370
|
+
}, x = () => {
|
|
1371
|
+
const m = y.value, i = D.value;
|
|
1372
|
+
!m || !i || (m.cancel(), i.removeAll(), o.value = null, c.value = "请在地图上绘制线段(双击完成)", m.create("polyline"));
|
|
1373
|
+
}, w = async (m) => {
|
|
1374
|
+
try {
|
|
1375
|
+
rt() || await ct();
|
|
1376
|
+
const i = dl(m, { unit: "meters" });
|
|
1377
|
+
if (!Number.isFinite(i))
|
|
1378
|
+
throw new Error("距离计算结果无效");
|
|
1379
|
+
o.value = Math.abs(i), c.value = "";
|
|
1380
|
+
} catch {
|
|
1381
|
+
o.value = null, c.value = "距离计算失败,请重新测量";
|
|
1382
|
+
}
|
|
1383
|
+
}, z = (m) => {
|
|
1384
|
+
B && (m.symbol = B.clone());
|
|
1385
|
+
}, h = () => {
|
|
1386
|
+
var $;
|
|
1387
|
+
const m = y.value;
|
|
1388
|
+
if (!m || !L) return;
|
|
1389
|
+
const i = m.activeComponent;
|
|
1390
|
+
if (!i || i.type !== "reshape") return;
|
|
1391
|
+
const v = typeof L.size == "number" ? L.size : 6, f = L.clone(), C = L.clone();
|
|
1392
|
+
C.size = v + 2;
|
|
1393
|
+
const Q = L.clone();
|
|
1394
|
+
Q.size = v + 2, i.symbols = {
|
|
1395
|
+
...i.symbols,
|
|
1396
|
+
vertices: {
|
|
1397
|
+
default: f,
|
|
1398
|
+
hover: C,
|
|
1399
|
+
selected: Q
|
|
1400
|
+
}
|
|
1401
|
+
};
|
|
1402
|
+
const K = i.selectedManipulators;
|
|
1403
|
+
($ = i.vertexGraphics) == null || $.forEach((V) => {
|
|
1404
|
+
K != null && K.includes(V) ? V.symbol = Q.clone() : V.symbol = f.clone();
|
|
1405
|
+
});
|
|
1406
|
+
}, S = {
|
|
1407
|
+
tool: "reshape",
|
|
1408
|
+
enableRotation: !1,
|
|
1409
|
+
enableScaling: !1,
|
|
1410
|
+
multipleSelectionEnabled: !1,
|
|
1411
|
+
toggleToolOnClick: !1
|
|
1412
|
+
}, Y = (m) => {
|
|
1413
|
+
const i = y.value;
|
|
1414
|
+
!i || !m || (z(m), queueMicrotask(() => {
|
|
1415
|
+
y.value === i && i.update(m, S);
|
|
1416
|
+
}));
|
|
1417
|
+
}, F = (m, i) => {
|
|
1418
|
+
const v = m.map;
|
|
1419
|
+
return v ? (v.add(i), v.layers.reorder(i, v.layers.length - 1), () => {
|
|
1420
|
+
v.remove(i);
|
|
1421
|
+
}) : () => {
|
|
1422
|
+
};
|
|
1423
|
+
}, G = (m) => {
|
|
1424
|
+
var $;
|
|
1425
|
+
const i = m.map;
|
|
1426
|
+
if (!i) return;
|
|
1427
|
+
const v = (V) => V.type === "graphics" && !!V.internal, f = ($ = i.basemap) == null ? void 0 : $.referenceLayers, C = f == null ? void 0 : f.find(v);
|
|
1428
|
+
C && f && (f.remove(C), i.layers.includes(C) || i.add(C));
|
|
1429
|
+
const Q = i.layers.find(v) ?? C;
|
|
1430
|
+
Q && i.layers.includes(Q) && i.layers.reorder(Q, i.layers.length - 1);
|
|
1431
|
+
const K = D.value;
|
|
1432
|
+
K && i.layers.includes(K) && i.layers.reorder(K, i.layers.length - 1);
|
|
1433
|
+
}, k = (m) => {
|
|
1434
|
+
var f, C;
|
|
1435
|
+
const i = (C = (f = m.map) == null ? void 0 : f.basemap) == null ? void 0 : C.referenceLayers;
|
|
1436
|
+
if (!i) return;
|
|
1437
|
+
const v = i.filter((Q) => Q.type === "graphics" && !!Q.internal).toArray();
|
|
1438
|
+
v.length && i.removeMany(v);
|
|
1439
|
+
}, Z = () => {
|
|
1440
|
+
const m = u(), i = new et({
|
|
1441
|
+
id: "distance-measure-layer",
|
|
1442
|
+
title: "距离测量图层",
|
|
1443
|
+
listMode: "hide"
|
|
1444
|
+
}), v = F(m, i);
|
|
1445
|
+
D.value = i, M = v;
|
|
1446
|
+
const f = [255, 109, 0];
|
|
1447
|
+
B = P(), L = new tt({
|
|
1448
|
+
style: "circle",
|
|
1449
|
+
color: f,
|
|
1450
|
+
size: 6,
|
|
1451
|
+
outline: {
|
|
1452
|
+
color: [255, 255, 255],
|
|
1453
|
+
width: 1.5
|
|
1454
|
+
}
|
|
1455
|
+
});
|
|
1456
|
+
const C = L.clone(), Q = new It({
|
|
1457
|
+
view: m,
|
|
1458
|
+
layer: i,
|
|
1459
|
+
updateOnGraphicClick: !0,
|
|
1460
|
+
polylineSymbol: B.clone(),
|
|
1461
|
+
pointSymbol: L.clone(),
|
|
1462
|
+
defaultUpdateOptions: {
|
|
1463
|
+
tool: "reshape",
|
|
1464
|
+
enableRotation: !1,
|
|
1465
|
+
enableScaling: !1,
|
|
1466
|
+
multipleSelectionEnabled: !1,
|
|
1467
|
+
toggleToolOnClick: !1,
|
|
1468
|
+
highlightOptions: { enabled: !1 }
|
|
1469
|
+
}
|
|
1470
|
+
}), K = Q;
|
|
1471
|
+
K.activeLineSymbol = B.clone(), K.vertexSymbol = L.clone(), K.activeVertexSymbol = C, y.value = Q, rt() || ct(), p.push(Q.on("create", ($) => {
|
|
1472
|
+
if ($.state === "start" || $.state === "active") {
|
|
1473
|
+
G(m);
|
|
1474
|
+
return;
|
|
1475
|
+
}
|
|
1476
|
+
if ($.state === "cancel") {
|
|
1477
|
+
k(m);
|
|
1478
|
+
return;
|
|
1479
|
+
}
|
|
1480
|
+
if ($.state !== "complete") return;
|
|
1481
|
+
k(m);
|
|
1482
|
+
const V = $.graphic;
|
|
1483
|
+
if (!V) return;
|
|
1484
|
+
z(V);
|
|
1485
|
+
const q = V.geometry;
|
|
1486
|
+
q instanceof Ve && w(q), Y(V);
|
|
1487
|
+
})), p.push(Q.on("update", ($) => {
|
|
1488
|
+
const V = $.graphics[0];
|
|
1489
|
+
if (!V) return;
|
|
1490
|
+
if ($.state === "start" || $.state === "active") {
|
|
1491
|
+
G(m), z(V), h();
|
|
1492
|
+
const ne = V.geometry;
|
|
1493
|
+
ne instanceof Ve && w(ne);
|
|
1494
|
+
return;
|
|
1495
|
+
}
|
|
1496
|
+
if ($.state !== "complete") return;
|
|
1497
|
+
k(m), z(V);
|
|
1498
|
+
const q = V.geometry;
|
|
1499
|
+
q instanceof Ve && w(q), $.aborted || Y(V);
|
|
1500
|
+
})), x();
|
|
1501
|
+
};
|
|
1502
|
+
return fe(() => {
|
|
1503
|
+
A = ke(() => s.value, R), Z();
|
|
1504
|
+
}), me(() => {
|
|
1505
|
+
A == null || A(), A = null, p.forEach((v) => v.remove()), p.length = 0;
|
|
1506
|
+
const m = y.value;
|
|
1507
|
+
m == null || m.cancel(), m == null || m.destroy(), y.value = null;
|
|
1508
|
+
const i = D.value;
|
|
1509
|
+
i && (i.removeAll(), M == null || M(), M = null, i.destroy()), D.value = null;
|
|
1510
|
+
}), (m, i) => (g(), re(Ee, {
|
|
1511
|
+
title: "距离测量",
|
|
1512
|
+
width: 360,
|
|
1513
|
+
onClose: i[0] || (i[0] = (v) => n("close"))
|
|
1514
|
+
}, {
|
|
1515
|
+
default: Ie(() => [
|
|
1516
|
+
a("div", Ba, [
|
|
1517
|
+
a("button", {
|
|
1518
|
+
type: "button",
|
|
1519
|
+
class: "distance-measure-button is-primary",
|
|
1520
|
+
onClick: x
|
|
1521
|
+
}, " 重新测量 "),
|
|
1522
|
+
a("div", Ya, [
|
|
1523
|
+
i[2] || (i[2] = a("span", null, "单位", -1)),
|
|
1524
|
+
a("div", {
|
|
1525
|
+
ref_key: "unitSelectRef",
|
|
1526
|
+
ref: s,
|
|
1527
|
+
class: "distance-unit-select"
|
|
1528
|
+
}, [
|
|
1529
|
+
a("button", {
|
|
1530
|
+
type: "button",
|
|
1531
|
+
class: ae(["distance-unit-trigger", { "is-open": r.value }]),
|
|
1532
|
+
"aria-label": "距离单位",
|
|
1533
|
+
"aria-haspopup": "listbox",
|
|
1534
|
+
"aria-expanded": r.value,
|
|
1535
|
+
onClick: te(E, ["stop"]),
|
|
1536
|
+
onKeydown: Ae(R, ["esc"])
|
|
1537
|
+
}, [
|
|
1538
|
+
a("span", null, U(H.value), 1),
|
|
1539
|
+
i[1] || (i[1] = a("span", {
|
|
1540
|
+
class: "distance-unit-arrow",
|
|
1541
|
+
"aria-hidden": "true"
|
|
1542
|
+
}, null, -1))
|
|
1543
|
+
], 42, Ga),
|
|
1544
|
+
r.value ? (g(), N("ul", Za, [
|
|
1545
|
+
(g(), N(ce, null, de(d, (v) => a("li", {
|
|
1546
|
+
key: v.value
|
|
1547
|
+
}, [
|
|
1548
|
+
a("button", {
|
|
1549
|
+
type: "button",
|
|
1550
|
+
role: "option",
|
|
1551
|
+
"aria-selected": b.value === v.value,
|
|
1552
|
+
onClick: te((f) => J(v.value), ["stop"])
|
|
1553
|
+
}, U(v.label), 9, Qa)
|
|
1554
|
+
])), 64))
|
|
1555
|
+
])) : _("", !0)
|
|
1556
|
+
], 512)
|
|
1557
|
+
])
|
|
1558
|
+
]),
|
|
1559
|
+
a("div", {
|
|
1560
|
+
class: ae(["distance-measure-result", { "has-result": o.value !== null }])
|
|
1561
|
+
}, [
|
|
1562
|
+
a("span", Fa, U(I.value), 1),
|
|
1563
|
+
o.value !== null ? (g(), N("strong", Pa, U(W.value), 1)) : _("", !0)
|
|
1564
|
+
], 2)
|
|
1565
|
+
]),
|
|
1566
|
+
_: 1
|
|
1567
|
+
}));
|
|
1568
|
+
}
|
|
1569
|
+
}), Ja = /* @__PURE__ */ ve(Wa, [["__scopeId", "data-v-7dd9f43b"]]), za = { class: "area-measure-actions" }, ja = { class: "area-measure-unit" }, Ka = ["aria-expanded"], Ua = {
|
|
1570
|
+
key: 0,
|
|
1571
|
+
class: "area-unit-options",
|
|
1572
|
+
role: "listbox"
|
|
1573
|
+
}, Va = ["aria-selected", "onClick"], Xa = { class: "area-measure-result__label" }, Ha = { key: 0 }, qa = /* @__PURE__ */ pe({
|
|
1574
|
+
__name: "AreaMeasurePanel",
|
|
1575
|
+
props: {
|
|
1576
|
+
/** MapView 实例 */
|
|
1577
|
+
view: { type: Object, required: !0 }
|
|
1578
|
+
},
|
|
1579
|
+
emits: ["close"],
|
|
1580
|
+
setup(e, { emit: t }) {
|
|
1581
|
+
const l = e, n = t, u = {
|
|
1582
|
+
mu: 2e3 / 3,
|
|
1583
|
+
are: 100,
|
|
1584
|
+
hectare: 1e4,
|
|
1585
|
+
"square-kilometers": 1e6,
|
|
1586
|
+
"square-meters": 1
|
|
1587
|
+
}, d = () => ge(l.view), b = [
|
|
1588
|
+
{ value: "mu", label: "市亩" },
|
|
1589
|
+
{ value: "are", label: "公亩" },
|
|
1590
|
+
{ value: "hectare", label: "公顷" },
|
|
1591
|
+
{ value: "square-kilometers", label: "平方千米" },
|
|
1592
|
+
{ value: "square-meters", label: "平方米" }
|
|
1593
|
+
], r = T("mu"), s = T(!1), A = T(null);
|
|
1594
|
+
let o = null;
|
|
1595
|
+
const c = T(null), D = T("请在地图上绘制多边形(双击完成)"), y = Se(null), p = Se(null), M = [];
|
|
1596
|
+
let B = null, L, P;
|
|
1597
|
+
const H = () => new ml({
|
|
1598
|
+
color: [255, 234, 0, 0.35],
|
|
1599
|
+
outline: {
|
|
1600
|
+
color: [255, 109, 0],
|
|
1601
|
+
width: 2
|
|
1602
|
+
}
|
|
1603
|
+
}), I = ee(() => {
|
|
1604
|
+
var i;
|
|
1605
|
+
return ((i = b.find((v) => v.value === r.value)) == null ? void 0 : i.label) ?? "";
|
|
1606
|
+
}), W = ee(() => c.value === null ? D.value : "测量面积"), R = ee(() => {
|
|
1607
|
+
const i = c.value;
|
|
1608
|
+
if (i === null) return "";
|
|
1609
|
+
const v = r.value, f = I.value;
|
|
1610
|
+
return `${(i / u[v]).toFixed(3)} ${f}`;
|
|
1611
|
+
}), E = () => {
|
|
1612
|
+
s.value = !1;
|
|
1613
|
+
}, J = () => {
|
|
1614
|
+
s.value = !s.value;
|
|
1615
|
+
}, x = (i) => {
|
|
1616
|
+
r.value = i, E();
|
|
1617
|
+
}, w = () => {
|
|
1618
|
+
const i = p.value, v = y.value;
|
|
1619
|
+
!i || !v || (i.cancel(), v.removeAll(), c.value = null, D.value = "请在地图上绘制多边形(双击完成)", i.create("polygon"));
|
|
1620
|
+
}, z = async (i) => {
|
|
1621
|
+
try {
|
|
1622
|
+
ut() || await dt();
|
|
1623
|
+
const v = pl(i, { unit: "square-meters" });
|
|
1624
|
+
if (!Number.isFinite(v))
|
|
1625
|
+
throw new Error("面积计算结果无效");
|
|
1626
|
+
c.value = Math.abs(v), D.value = "";
|
|
1627
|
+
} catch {
|
|
1628
|
+
c.value = null, D.value = "面积计算失败,请重新测量";
|
|
1629
|
+
}
|
|
1630
|
+
}, h = (i) => {
|
|
1631
|
+
L && (i.symbol = L.clone());
|
|
1632
|
+
}, S = () => {
|
|
1633
|
+
var V;
|
|
1634
|
+
const i = p.value;
|
|
1635
|
+
if (!i || !P) return;
|
|
1636
|
+
const v = i.activeComponent;
|
|
1637
|
+
if (!v || v.type !== "reshape") return;
|
|
1638
|
+
const f = typeof P.size == "number" ? P.size : 6, C = P.clone(), Q = P.clone();
|
|
1639
|
+
Q.size = f + 2;
|
|
1640
|
+
const K = P.clone();
|
|
1641
|
+
K.size = f + 2, v.symbols = {
|
|
1642
|
+
...v.symbols,
|
|
1643
|
+
vertices: {
|
|
1644
|
+
default: C,
|
|
1645
|
+
hover: Q,
|
|
1646
|
+
selected: K
|
|
1647
|
+
}
|
|
1648
|
+
};
|
|
1649
|
+
const $ = v.selectedManipulators;
|
|
1650
|
+
(V = v.vertexGraphics) == null || V.forEach((q) => {
|
|
1651
|
+
$ != null && $.includes(q) ? q.symbol = K.clone() : q.symbol = C.clone();
|
|
1652
|
+
});
|
|
1653
|
+
}, Y = {
|
|
1654
|
+
tool: "reshape",
|
|
1655
|
+
enableRotation: !1,
|
|
1656
|
+
enableScaling: !1,
|
|
1657
|
+
multipleSelectionEnabled: !1,
|
|
1658
|
+
toggleToolOnClick: !1
|
|
1659
|
+
}, F = (i) => {
|
|
1660
|
+
const v = p.value;
|
|
1661
|
+
!v || !i || (h(i), queueMicrotask(() => {
|
|
1662
|
+
p.value === v && v.update(i, Y);
|
|
1663
|
+
}));
|
|
1664
|
+
}, G = (i, v) => {
|
|
1665
|
+
const f = i.map;
|
|
1666
|
+
return f ? (f.add(v), f.layers.reorder(v, f.layers.length - 1), () => {
|
|
1667
|
+
f.remove(v);
|
|
1668
|
+
}) : () => {
|
|
1669
|
+
};
|
|
1670
|
+
}, k = (i) => {
|
|
1671
|
+
var V;
|
|
1672
|
+
const v = i.map;
|
|
1673
|
+
if (!v) return;
|
|
1674
|
+
const f = (q) => q.type === "graphics" && !!q.internal, C = (V = v.basemap) == null ? void 0 : V.referenceLayers, Q = C == null ? void 0 : C.find(f);
|
|
1675
|
+
Q && C && (C.remove(Q), v.layers.includes(Q) || v.add(Q));
|
|
1676
|
+
const K = v.layers.find(f) ?? Q;
|
|
1677
|
+
K && v.layers.includes(K) && v.layers.reorder(K, v.layers.length - 1);
|
|
1678
|
+
const $ = y.value;
|
|
1679
|
+
$ && v.layers.includes($) && v.layers.reorder($, v.layers.length - 1);
|
|
1680
|
+
}, Z = (i) => {
|
|
1681
|
+
var C, Q;
|
|
1682
|
+
const v = (Q = (C = i.map) == null ? void 0 : C.basemap) == null ? void 0 : Q.referenceLayers;
|
|
1683
|
+
if (!v) return;
|
|
1684
|
+
const f = v.filter((K) => K.type === "graphics" && !!K.internal).toArray();
|
|
1685
|
+
f.length && v.removeMany(f);
|
|
128
1686
|
}, m = () => {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
1687
|
+
const i = d(), v = new et({
|
|
1688
|
+
id: "area-measure-layer",
|
|
1689
|
+
title: "面积测量图层",
|
|
1690
|
+
listMode: "hide"
|
|
1691
|
+
}), f = G(i, v);
|
|
1692
|
+
y.value = v, B = f;
|
|
1693
|
+
const C = [255, 109, 0];
|
|
1694
|
+
L = H(), P = new tt({
|
|
1695
|
+
style: "circle",
|
|
1696
|
+
color: C,
|
|
1697
|
+
size: 6,
|
|
1698
|
+
outline: {
|
|
1699
|
+
color: [255, 255, 255],
|
|
1700
|
+
width: 1.5
|
|
1701
|
+
}
|
|
1702
|
+
});
|
|
1703
|
+
const Q = P.clone(), K = new It({
|
|
1704
|
+
view: i,
|
|
1705
|
+
layer: v,
|
|
1706
|
+
updateOnGraphicClick: !0,
|
|
1707
|
+
polygonSymbol: L.clone(),
|
|
1708
|
+
pointSymbol: P.clone(),
|
|
1709
|
+
defaultUpdateOptions: {
|
|
1710
|
+
tool: "reshape",
|
|
1711
|
+
enableRotation: !1,
|
|
1712
|
+
enableScaling: !1,
|
|
1713
|
+
multipleSelectionEnabled: !1,
|
|
1714
|
+
toggleToolOnClick: !1,
|
|
1715
|
+
highlightOptions: { enabled: !1 }
|
|
1716
|
+
}
|
|
1717
|
+
}), $ = K;
|
|
1718
|
+
$.vertexSymbol = P.clone(), $.activeVertexSymbol = Q, p.value = K, ut() || dt(), M.push(K.on("create", (V) => {
|
|
1719
|
+
if (V.state === "start" || V.state === "active") {
|
|
1720
|
+
k(i);
|
|
1721
|
+
return;
|
|
1722
|
+
}
|
|
1723
|
+
if (V.state === "cancel") {
|
|
1724
|
+
Z(i);
|
|
1725
|
+
return;
|
|
1726
|
+
}
|
|
1727
|
+
if (V.state !== "complete") return;
|
|
1728
|
+
Z(i);
|
|
1729
|
+
const q = V.graphic;
|
|
1730
|
+
if (!q) return;
|
|
1731
|
+
h(q);
|
|
1732
|
+
const ne = q.geometry;
|
|
1733
|
+
ne instanceof Xe && z(ne), F(q);
|
|
1734
|
+
})), M.push(K.on("update", (V) => {
|
|
1735
|
+
const q = V.graphics[0];
|
|
1736
|
+
if (!q) return;
|
|
1737
|
+
if (V.state === "start" || V.state === "active") {
|
|
1738
|
+
k(i), h(q), S();
|
|
1739
|
+
const Ce = q.geometry;
|
|
1740
|
+
Ce instanceof Xe && z(Ce);
|
|
1741
|
+
return;
|
|
1742
|
+
}
|
|
1743
|
+
if (V.state !== "complete") return;
|
|
1744
|
+
Z(i), h(q);
|
|
1745
|
+
const ne = q.geometry;
|
|
1746
|
+
ne instanceof Xe && z(ne), V.aborted || F(q);
|
|
1747
|
+
})), w();
|
|
1748
|
+
};
|
|
1749
|
+
return fe(() => {
|
|
1750
|
+
o = ke(() => A.value, E), m();
|
|
1751
|
+
}), me(() => {
|
|
1752
|
+
o == null || o(), o = null, M.forEach((f) => f.remove()), M.length = 0;
|
|
1753
|
+
const i = p.value;
|
|
1754
|
+
i == null || i.cancel(), i == null || i.destroy(), p.value = null;
|
|
1755
|
+
const v = y.value;
|
|
1756
|
+
v && (v.removeAll(), B == null || B(), B = null, v.destroy()), y.value = null;
|
|
1757
|
+
}), (i, v) => (g(), re(Ee, {
|
|
1758
|
+
title: "面积测量",
|
|
1759
|
+
width: 360,
|
|
1760
|
+
onClose: v[0] || (v[0] = (f) => n("close"))
|
|
1761
|
+
}, {
|
|
1762
|
+
default: Ie(() => [
|
|
1763
|
+
a("div", za, [
|
|
1764
|
+
a("button", {
|
|
1765
|
+
type: "button",
|
|
1766
|
+
class: "area-measure-button is-primary",
|
|
1767
|
+
onClick: w
|
|
1768
|
+
}, " 重新测量 "),
|
|
1769
|
+
a("div", ja, [
|
|
1770
|
+
v[2] || (v[2] = a("span", null, "单位", -1)),
|
|
1771
|
+
a("div", {
|
|
1772
|
+
ref_key: "unitSelectRef",
|
|
1773
|
+
ref: A,
|
|
1774
|
+
class: "area-unit-select"
|
|
1775
|
+
}, [
|
|
1776
|
+
a("button", {
|
|
1777
|
+
type: "button",
|
|
1778
|
+
class: ae(["area-unit-trigger", { "is-open": s.value }]),
|
|
1779
|
+
"aria-label": "面积单位",
|
|
1780
|
+
"aria-haspopup": "listbox",
|
|
1781
|
+
"aria-expanded": s.value,
|
|
1782
|
+
onClick: te(J, ["stop"]),
|
|
1783
|
+
onKeydown: Ae(E, ["esc"])
|
|
1784
|
+
}, [
|
|
1785
|
+
a("span", null, U(I.value), 1),
|
|
1786
|
+
v[1] || (v[1] = a("span", {
|
|
1787
|
+
class: "area-unit-arrow",
|
|
1788
|
+
"aria-hidden": "true"
|
|
1789
|
+
}, null, -1))
|
|
1790
|
+
], 42, Ka),
|
|
1791
|
+
s.value ? (g(), N("ul", Ua, [
|
|
1792
|
+
(g(), N(ce, null, de(b, (f) => a("li", {
|
|
1793
|
+
key: f.value
|
|
1794
|
+
}, [
|
|
1795
|
+
a("button", {
|
|
1796
|
+
type: "button",
|
|
1797
|
+
role: "option",
|
|
1798
|
+
"aria-selected": r.value === f.value,
|
|
1799
|
+
onClick: te((C) => x(f.value), ["stop"])
|
|
1800
|
+
}, U(f.label), 9, Va)
|
|
1801
|
+
])), 64))
|
|
1802
|
+
])) : _("", !0)
|
|
1803
|
+
], 512)
|
|
1804
|
+
])
|
|
1805
|
+
]),
|
|
1806
|
+
a("div", {
|
|
1807
|
+
class: ae(["area-measure-result", { "has-result": c.value !== null }])
|
|
1808
|
+
}, [
|
|
1809
|
+
a("span", Xa, U(W.value), 1),
|
|
1810
|
+
c.value !== null ? (g(), N("strong", Ha, U(R.value), 1)) : _("", !0)
|
|
1811
|
+
], 2)
|
|
1812
|
+
]),
|
|
1813
|
+
_: 1
|
|
1814
|
+
}));
|
|
1815
|
+
}
|
|
1816
|
+
}), _a = /* @__PURE__ */ ve(qa, [["__scopeId", "data-v-01b97e95"]]), ye = {
|
|
1817
|
+
byId: new globalThis.Map(),
|
|
1818
|
+
createOptions: null,
|
|
1819
|
+
listeners: /* @__PURE__ */ new Set()
|
|
1820
|
+
}, at = () => {
|
|
1821
|
+
ye.listeners.forEach((e) => e());
|
|
1822
|
+
}, $a = (e) => {
|
|
1823
|
+
if (e == null || e === "") return 0;
|
|
1824
|
+
const t = Number(e);
|
|
1825
|
+
return Number.isFinite(t) ? t : 0;
|
|
1826
|
+
}, Zs = (e, t) => {
|
|
1827
|
+
const l = t.idPrefix ?? he;
|
|
1828
|
+
ye.byId.clear(), e.forEach((n) => {
|
|
1829
|
+
ye.byId.set(Qe(n, l), n);
|
|
1830
|
+
}), ye.createOptions = { ...t, idPrefix: l }, at();
|
|
1831
|
+
}, Qs = () => {
|
|
1832
|
+
ye.byId.clear(), ye.createOptions = null, at();
|
|
1833
|
+
}, en = () => ye.createOptions, tn = (e = he) => {
|
|
1834
|
+
const t = [];
|
|
1835
|
+
return ye.byId.forEach((l, n) => {
|
|
1836
|
+
n.startsWith(e) && t.push({
|
|
1837
|
+
id: n,
|
|
1838
|
+
title: l.mapServiceName,
|
|
1839
|
+
layerOrder: $a(l.layerOrder),
|
|
1840
|
+
config: l
|
|
1841
|
+
});
|
|
1842
|
+
}), t;
|
|
1843
|
+
}, ln = (e) => (ye.listeners.add(e), () => {
|
|
1844
|
+
ye.listeners.delete(e);
|
|
1845
|
+
}), an = (e, t) => {
|
|
1846
|
+
const l = ye.byId.get(t), n = ye.createOptions;
|
|
1847
|
+
if (!l || !n) return null;
|
|
1848
|
+
const u = n.idPrefix ?? he, d = n.reverse ?? !0, b = va({
|
|
1849
|
+
map: e,
|
|
1850
|
+
layers: [l],
|
|
1851
|
+
reverse: d,
|
|
1852
|
+
idPrefix: u,
|
|
1853
|
+
accessToken: n.accessToken,
|
|
1854
|
+
labelConfigs: n.labelConfigs,
|
|
1855
|
+
expectedSpatialReferenceWkid: n.expectedSpatialReferenceWkid,
|
|
1856
|
+
onSpatialReferenceMismatch: n.onSpatialReferenceMismatch
|
|
1857
|
+
});
|
|
1858
|
+
return ye.byId.delete(t), at(), fa({
|
|
1859
|
+
map: e,
|
|
1860
|
+
layers: n.allConfigs,
|
|
1861
|
+
reverse: d,
|
|
1862
|
+
idPrefix: u
|
|
1863
|
+
}), b[0] ?? null;
|
|
1864
|
+
}, nn = {
|
|
1865
|
+
key: 0,
|
|
1866
|
+
class: "layer-manage-tip",
|
|
1867
|
+
role: "status"
|
|
1868
|
+
}, on = {
|
|
1869
|
+
key: 1,
|
|
1870
|
+
class: "layer-manage-sr-summary",
|
|
1871
|
+
role: "status"
|
|
1872
|
+
}, sn = {
|
|
1873
|
+
key: 2,
|
|
1874
|
+
class: "layer-manage-empty"
|
|
1875
|
+
}, rn = {
|
|
1876
|
+
key: 3,
|
|
1877
|
+
class: "layer-manage-list",
|
|
1878
|
+
role: "list"
|
|
1879
|
+
}, cn = { class: "layer-manage-row" }, un = { class: "layer-manage-check" }, dn = ["checked", "onChange"], An = { class: "layer-manage-title-wrap" }, pn = ["title"], mn = ["title"], vn = { class: "layer-manage-actions" }, yn = ["onClick"], fn = ["onClick"], hn = ["onClick"], bn = ["onClick"], gn = ["onClick"], wn = { class: "layer-manage-opacity" }, Sn = ["value", "onInput"], In = /* @__PURE__ */ pe({
|
|
1880
|
+
__name: "LayerManagePanel",
|
|
1881
|
+
props: {
|
|
1882
|
+
view: {},
|
|
1883
|
+
idPrefix: { default: he }
|
|
1884
|
+
},
|
|
1885
|
+
emits: ["close"],
|
|
1886
|
+
setup(e, { emit: t }) {
|
|
1887
|
+
const l = e, n = t, u = () => ge(l.view), d = T([]), b = T("");
|
|
1888
|
+
let r = null, s = null, A = null;
|
|
1889
|
+
const o = ee(() => {
|
|
1890
|
+
const E = d.value.filter((J) => J.spatialReferenceMismatch).length;
|
|
1891
|
+
return E <= 0 ? "" : `有 ${E} 个图层与系统坐标系不一致`;
|
|
1892
|
+
}), c = (E) => `期望 ${E.expectedLabel || `WKID ${E.expectedWkid}`},实际 ${E.actualLabel || E.actualWkid || "未知"}`, D = (E) => {
|
|
1893
|
+
b.value = E, r && clearTimeout(r), r = setTimeout(() => {
|
|
1894
|
+
b.value = "", r = null;
|
|
1895
|
+
}, 3e3);
|
|
1896
|
+
};
|
|
1897
|
+
let y = null;
|
|
1898
|
+
const p = [], M = () => {
|
|
1899
|
+
p.forEach((E) => E.remove()), p.length = 0;
|
|
1900
|
+
}, B = (E) => {
|
|
1901
|
+
if (E == null || E === "") return 0;
|
|
1902
|
+
const J = Number(E);
|
|
1903
|
+
return Number.isFinite(J) ? J : 0;
|
|
1904
|
+
}, L = (E) => {
|
|
1905
|
+
p.push(
|
|
1906
|
+
We.watch(
|
|
1907
|
+
() => E.visible,
|
|
1908
|
+
(J) => {
|
|
1909
|
+
const x = d.value.find((w) => w.id === E.id);
|
|
1910
|
+
x && (x.visible = J);
|
|
1911
|
+
}
|
|
1912
|
+
)
|
|
1913
|
+
), p.push(
|
|
1914
|
+
We.watch(
|
|
1915
|
+
() => E.opacity,
|
|
1916
|
+
(J) => {
|
|
1917
|
+
const x = d.value.find((w) => w.id === E.id);
|
|
1918
|
+
x && (x.opacity = Math.round((J ?? 1) * 100));
|
|
1919
|
+
}
|
|
1920
|
+
)
|
|
1921
|
+
);
|
|
1922
|
+
}, P = () => {
|
|
1923
|
+
var S, Y;
|
|
1924
|
+
M();
|
|
1925
|
+
const E = (S = u()) == null ? void 0 : S.map;
|
|
1926
|
+
if (!E) {
|
|
1927
|
+
d.value = [];
|
|
1928
|
+
return;
|
|
1929
|
+
}
|
|
1930
|
+
const J = l.idPrefix, x = en(), w = tn(J), z = new Map(w.map((F) => [F.id, F]));
|
|
1931
|
+
if ((Y = x == null ? void 0 : x.allConfigs) != null && Y.length) {
|
|
1932
|
+
const F = [...x.allConfigs].sort(
|
|
1933
|
+
(k, Z) => B(k.layerOrder) - B(Z.layerOrder)
|
|
1934
|
+
), G = [];
|
|
1935
|
+
F.forEach((k) => {
|
|
1936
|
+
const Z = Qe(k, J), m = E.findLayerById(Z);
|
|
1937
|
+
if (m && m.listMode !== "hide") {
|
|
1938
|
+
G.push({
|
|
1939
|
+
id: m.id,
|
|
1940
|
+
title: m.title || k.mapServiceName || m.id,
|
|
1941
|
+
visible: m.visible,
|
|
1942
|
+
opacity: Math.round((m.opacity ?? 1) * 100),
|
|
1943
|
+
pending: !1,
|
|
1944
|
+
spatialReferenceMismatch: He(m.id)
|
|
1945
|
+
}), L(m);
|
|
1946
|
+
return;
|
|
1947
|
+
}
|
|
1948
|
+
const i = z.get(Z);
|
|
1949
|
+
i && G.push({
|
|
1950
|
+
id: i.id,
|
|
1951
|
+
title: i.title,
|
|
1952
|
+
visible: !1,
|
|
1953
|
+
opacity: 100,
|
|
1954
|
+
pending: !0,
|
|
1955
|
+
spatialReferenceMismatch: null
|
|
1956
|
+
});
|
|
1957
|
+
}), d.value = G;
|
|
1958
|
+
return;
|
|
1959
|
+
}
|
|
1960
|
+
const h = E.layers.filter((F) => (F.id || "").startsWith(J) && F.listMode !== "hide").toArray().reverse();
|
|
1961
|
+
d.value = h.map((F) => ({
|
|
1962
|
+
id: F.id,
|
|
1963
|
+
title: F.title || F.id,
|
|
1964
|
+
visible: F.visible,
|
|
1965
|
+
opacity: Math.round((F.opacity ?? 1) * 100),
|
|
1966
|
+
pending: !1,
|
|
1967
|
+
spatialReferenceMismatch: He(F.id)
|
|
1968
|
+
})), h.forEach((F) => L(F));
|
|
1969
|
+
}, H = (E, J) => {
|
|
1970
|
+
var h;
|
|
1971
|
+
const x = (h = u()) == null ? void 0 : h.map;
|
|
1972
|
+
if (!x) return;
|
|
1973
|
+
let w = x.findLayerById(E);
|
|
1974
|
+
if (!w) {
|
|
1975
|
+
if (!J) return;
|
|
1976
|
+
D("正在加载图层…");
|
|
1977
|
+
const S = an(x, E);
|
|
1978
|
+
if (!S) {
|
|
1979
|
+
D("图层加载失败,请稍后重试");
|
|
1980
|
+
return;
|
|
1981
|
+
}
|
|
1982
|
+
S.visible = !0, b.value = "", P();
|
|
1983
|
+
return;
|
|
1984
|
+
}
|
|
1985
|
+
w.visible = J;
|
|
1986
|
+
const z = d.value.find((S) => S.id === E);
|
|
1987
|
+
z && (z.visible = J, z.pending = !1);
|
|
1988
|
+
}, I = (E, J) => {
|
|
1989
|
+
var h, S;
|
|
1990
|
+
const x = (S = (h = u()) == null ? void 0 : h.map) == null ? void 0 : S.findLayerById(E);
|
|
1991
|
+
if (!x) {
|
|
1992
|
+
D("请先勾选显示该图层");
|
|
1993
|
+
return;
|
|
1994
|
+
}
|
|
1995
|
+
const w = Math.min(100, Math.max(0, J));
|
|
1996
|
+
x.opacity = w / 100;
|
|
1997
|
+
const z = d.value.find((Y) => Y.id === E);
|
|
1998
|
+
z && (z.opacity = w);
|
|
1999
|
+
}, W = async (E) => {
|
|
2000
|
+
var z;
|
|
2001
|
+
const J = u(), x = (z = J == null ? void 0 : J.map) == null ? void 0 : z.findLayerById(E);
|
|
2002
|
+
if (!J || !x) {
|
|
2003
|
+
D("请先勾选显示该图层后再定位");
|
|
2004
|
+
return;
|
|
2005
|
+
}
|
|
2006
|
+
const w = x.title || E;
|
|
2007
|
+
try {
|
|
2008
|
+
await x.when();
|
|
2009
|
+
const h = x.fullExtent;
|
|
2010
|
+
if (!h) {
|
|
2011
|
+
D(`「${w}」暂无有效范围,请稍后再试或检查服务`), console.warn(`定位图层失败(无 fullExtent): ${E}`);
|
|
2012
|
+
return;
|
|
2013
|
+
}
|
|
2014
|
+
await J.goTo(h), b.value = "";
|
|
2015
|
+
} catch (h) {
|
|
2016
|
+
D(`「${w}」定位失败`), console.error(`定位图层失败: ${E}`, h);
|
|
2017
|
+
}
|
|
2018
|
+
}, R = (E, J) => {
|
|
2019
|
+
var G;
|
|
2020
|
+
const x = (G = u()) == null ? void 0 : G.map;
|
|
2021
|
+
if (!x) return;
|
|
2022
|
+
const w = x.findLayerById(E);
|
|
2023
|
+
if (!w) {
|
|
2024
|
+
D("请先勾选显示该图层后再调整顺序");
|
|
2025
|
+
return;
|
|
2026
|
+
}
|
|
2027
|
+
const z = l.idPrefix, h = x.layers.filter((k) => (k.id || "").startsWith(z) && k.listMode !== "hide").toArray(), S = h.findIndex((k) => k.id === E);
|
|
2028
|
+
if (S < 0) return;
|
|
2029
|
+
const Y = x.layers.findIndex((k) => k.id === E);
|
|
2030
|
+
if (Y < 0) return;
|
|
2031
|
+
let F = Y;
|
|
2032
|
+
if (J === "top")
|
|
2033
|
+
F = Math.max(
|
|
2034
|
+
...h.map((Z) => x.layers.findIndex((m) => m.id === Z.id))
|
|
2035
|
+
);
|
|
2036
|
+
else if (J === "bottom")
|
|
2037
|
+
F = Math.min(
|
|
2038
|
+
...h.map((Z) => x.layers.findIndex((m) => m.id === Z.id))
|
|
2039
|
+
);
|
|
2040
|
+
else if (J === "up") {
|
|
2041
|
+
if (S >= h.length - 1) return;
|
|
2042
|
+
const k = h[S + 1];
|
|
2043
|
+
F = x.layers.findIndex((Z) => Z.id === k.id);
|
|
2044
|
+
} else if (J === "down") {
|
|
2045
|
+
if (S <= 0) return;
|
|
2046
|
+
const k = h[S - 1];
|
|
2047
|
+
F = x.layers.findIndex((Z) => Z.id === k.id);
|
|
2048
|
+
}
|
|
2049
|
+
F !== Y && (x.layers.reorder(w, F), P());
|
|
2050
|
+
};
|
|
2051
|
+
return fe(() => {
|
|
2052
|
+
var J;
|
|
2053
|
+
const E = (J = u()) == null ? void 0 : J.map;
|
|
2054
|
+
P(), E && (y = E.layers.on("change", P)), s = na(() => {
|
|
2055
|
+
d.value = d.value.map((x) => ({
|
|
2056
|
+
...x,
|
|
2057
|
+
spatialReferenceMismatch: He(x.id)
|
|
2058
|
+
}));
|
|
2059
|
+
}), A = ln(() => {
|
|
2060
|
+
P();
|
|
2061
|
+
});
|
|
2062
|
+
}), me(() => {
|
|
2063
|
+
y == null || y.remove(), y = null, s == null || s(), s = null, A == null || A(), A = null, M(), r && (clearTimeout(r), r = null);
|
|
2064
|
+
}), (E, J) => (g(), re(Ee, {
|
|
2065
|
+
title: "图层管理",
|
|
2066
|
+
width: 360,
|
|
2067
|
+
onClose: J[0] || (J[0] = (x) => n("close"))
|
|
2068
|
+
}, {
|
|
2069
|
+
default: Ie(() => [
|
|
2070
|
+
b.value ? (g(), N("p", nn, U(b.value), 1)) : _("", !0),
|
|
2071
|
+
o.value ? (g(), N("p", on, U(o.value), 1)) : _("", !0),
|
|
2072
|
+
d.value.length === 0 ? (g(), N("p", sn, "暂无业务图层")) : (g(), N("ul", rn, [
|
|
2073
|
+
(g(!0), N(ce, null, de(d.value, (x) => (g(), N("li", {
|
|
2074
|
+
key: x.id,
|
|
2075
|
+
class: "layer-manage-item"
|
|
2076
|
+
}, [
|
|
2077
|
+
a("div", cn, [
|
|
2078
|
+
a("label", un, [
|
|
2079
|
+
a("input", {
|
|
2080
|
+
type: "checkbox",
|
|
2081
|
+
checked: x.visible,
|
|
2082
|
+
onChange: (w) => H(x.id, w.target.checked)
|
|
2083
|
+
}, null, 40, dn),
|
|
2084
|
+
a("span", An, [
|
|
2085
|
+
a("span", {
|
|
2086
|
+
class: "layer-manage-title",
|
|
2087
|
+
title: x.title
|
|
2088
|
+
}, U(x.title), 9, pn),
|
|
2089
|
+
x.spatialReferenceMismatch ? (g(), N("span", {
|
|
2090
|
+
key: 0,
|
|
2091
|
+
class: "layer-manage-sr-badge",
|
|
2092
|
+
title: c(x.spatialReferenceMismatch)
|
|
2093
|
+
}, " 坐标系不一致 ", 8, mn)) : _("", !0)
|
|
2094
|
+
])
|
|
2095
|
+
]),
|
|
2096
|
+
a("div", vn, [
|
|
2097
|
+
a("button", {
|
|
2098
|
+
type: "button",
|
|
2099
|
+
title: "移至顶层",
|
|
2100
|
+
onClick: (w) => R(x.id, "top")
|
|
2101
|
+
}, "顶", 8, yn),
|
|
2102
|
+
a("button", {
|
|
2103
|
+
type: "button",
|
|
2104
|
+
title: "上移一层",
|
|
2105
|
+
onClick: (w) => R(x.id, "up")
|
|
2106
|
+
}, "上", 8, fn),
|
|
2107
|
+
a("button", {
|
|
2108
|
+
type: "button",
|
|
2109
|
+
title: "下移一层",
|
|
2110
|
+
onClick: (w) => R(x.id, "down")
|
|
2111
|
+
}, "下", 8, hn),
|
|
2112
|
+
a("button", {
|
|
2113
|
+
type: "button",
|
|
2114
|
+
title: "移至底层",
|
|
2115
|
+
onClick: (w) => R(x.id, "bottom")
|
|
2116
|
+
}, "底", 8, bn),
|
|
2117
|
+
a("button", {
|
|
2118
|
+
type: "button",
|
|
2119
|
+
title: "定位到图层",
|
|
2120
|
+
onClick: (w) => W(x.id)
|
|
2121
|
+
}, "定位", 8, gn)
|
|
2122
|
+
])
|
|
2123
|
+
]),
|
|
2124
|
+
a("label", wn, [
|
|
2125
|
+
J[1] || (J[1] = a("span", null, "透明度", -1)),
|
|
2126
|
+
a("input", {
|
|
2127
|
+
type: "range",
|
|
2128
|
+
min: "0",
|
|
2129
|
+
max: "100",
|
|
2130
|
+
step: "1",
|
|
2131
|
+
value: x.opacity,
|
|
2132
|
+
onInput: (w) => I(x.id, Number(w.target.value))
|
|
2133
|
+
}, null, 40, Sn),
|
|
2134
|
+
a("em", null, U(x.opacity) + "%", 1)
|
|
2135
|
+
])
|
|
2136
|
+
]))), 128))
|
|
2137
|
+
]))
|
|
2138
|
+
]),
|
|
2139
|
+
_: 1
|
|
2140
|
+
}));
|
|
2141
|
+
}
|
|
2142
|
+
}), En = /* @__PURE__ */ ve(In, [["__scopeId", "data-v-958541bd"]]), Oe = /* @__PURE__ */ new Map(), Zt = (e, t) => (Oe.set(e, t), () => {
|
|
2143
|
+
Oe.get(e) === t && Oe.delete(e);
|
|
2144
|
+
}), Qt = (e) => {
|
|
2145
|
+
var l;
|
|
2146
|
+
const t = e === "basemap" ? "layer" : "basemap";
|
|
2147
|
+
(l = Oe.get(t)) == null || l();
|
|
2148
|
+
}, Fs = () => {
|
|
2149
|
+
var e, t;
|
|
2150
|
+
(e = Oe.get("basemap")) == null || e(), (t = Oe.get("layer")) == null || t();
|
|
2151
|
+
}, Ln = {
|
|
2152
|
+
key: 0,
|
|
2153
|
+
class: "layer-swipe-empty"
|
|
2154
|
+
}, kn = { class: "layer-swipe-form" }, xn = { class: "layer-swipe-field" }, Cn = ["aria-expanded"], Mn = {
|
|
2155
|
+
key: 0,
|
|
2156
|
+
class: "layer-swipe-options",
|
|
2157
|
+
role: "listbox"
|
|
2158
|
+
}, Rn = ["aria-selected", "onClick"], Tn = { class: "layer-swipe-field" }, Dn = ["aria-expanded"], On = {
|
|
2159
|
+
key: 0,
|
|
2160
|
+
class: "layer-swipe-options",
|
|
2161
|
+
role: "listbox"
|
|
2162
|
+
}, Nn = ["aria-selected", "onClick"], Bn = {
|
|
2163
|
+
key: 0,
|
|
2164
|
+
class: "layer-swipe-message",
|
|
2165
|
+
role: "status"
|
|
2166
|
+
}, Yn = /* @__PURE__ */ pe({
|
|
2167
|
+
__name: "LayerSwipePanel",
|
|
2168
|
+
props: {
|
|
2169
|
+
view: {},
|
|
2170
|
+
visible: { type: Boolean, default: !1 },
|
|
2171
|
+
idPrefix: { default: he }
|
|
2172
|
+
},
|
|
2173
|
+
emits: ["close"],
|
|
2174
|
+
setup(e, { expose: t, emit: l }) {
|
|
2175
|
+
const n = e, u = l, d = () => ge(n.view), b = T([]), r = T(""), s = T(""), A = T(!1), o = T(!1), c = T(null), D = T(null);
|
|
2176
|
+
let y = null;
|
|
2177
|
+
const p = T(""), M = Se(null);
|
|
2178
|
+
let B = null, L = null;
|
|
2179
|
+
const P = ee(() => {
|
|
2180
|
+
var S;
|
|
2181
|
+
return r.value ? ((S = b.value.find((Y) => Y.id === r.value)) == null ? void 0 : S.title) ?? "请选择" : "请选择";
|
|
2182
|
+
}), H = ee(() => {
|
|
2183
|
+
var S;
|
|
2184
|
+
return s.value ? ((S = b.value.find((Y) => Y.id === s.value)) == null ? void 0 : S.title) ?? "请选择" : "请选择";
|
|
2185
|
+
}), I = () => {
|
|
2186
|
+
A.value = !1, o.value = !1;
|
|
2187
|
+
}, W = () => {
|
|
2188
|
+
o.value = !1, A.value = !A.value;
|
|
2189
|
+
}, R = () => {
|
|
2190
|
+
A.value = !1, o.value = !o.value;
|
|
2191
|
+
}, E = (S) => {
|
|
2192
|
+
r.value = S, I();
|
|
2193
|
+
}, J = (S) => {
|
|
2194
|
+
s.value = S, I();
|
|
2195
|
+
}, x = () => {
|
|
2196
|
+
var k;
|
|
2197
|
+
const S = (k = d()) == null ? void 0 : k.map;
|
|
2198
|
+
if (!S) {
|
|
2199
|
+
b.value = [];
|
|
2200
|
+
return;
|
|
2201
|
+
}
|
|
2202
|
+
const Y = n.idPrefix, F = S.layers.filter((Z) => (Z.id || "").startsWith(Y) && Z.listMode !== "hide").toArray().reverse();
|
|
2203
|
+
b.value = F.map((Z) => ({
|
|
2204
|
+
id: Z.id,
|
|
2205
|
+
title: Z.title || Z.id
|
|
2206
|
+
}));
|
|
2207
|
+
const G = new Set(b.value.map((Z) => Z.id));
|
|
2208
|
+
r.value && !G.has(r.value) && (r.value = ""), s.value && !G.has(s.value) && (s.value = "");
|
|
2209
|
+
}, w = () => {
|
|
2210
|
+
const S = d(), Y = M.value;
|
|
2211
|
+
Y && S && (S.ui.remove(Y), Y.destroy()), M.value = null;
|
|
2212
|
+
}, z = () => {
|
|
2213
|
+
if (p.value = "", I(), !r.value || !s.value) {
|
|
2214
|
+
p.value = "请先选择左侧和右侧图层";
|
|
2215
|
+
return;
|
|
2216
|
+
}
|
|
2217
|
+
if (r.value === s.value) {
|
|
2218
|
+
p.value = "左右图层不能相同";
|
|
2219
|
+
return;
|
|
2220
|
+
}
|
|
2221
|
+
const S = d(), Y = S == null ? void 0 : S.map;
|
|
2222
|
+
if (!S || !Y) {
|
|
2223
|
+
p.value = "地图未就绪";
|
|
2224
|
+
return;
|
|
2225
|
+
}
|
|
2226
|
+
const F = Y.findLayerById(r.value), G = Y.findLayerById(s.value);
|
|
2227
|
+
if (!F || !G) {
|
|
2228
|
+
p.value = "所选图层不存在,请刷新后重试", x();
|
|
2229
|
+
return;
|
|
2230
|
+
}
|
|
2231
|
+
F.visible = !0, G.visible = !0, Qt("layer"), w();
|
|
2232
|
+
const k = new Et({
|
|
2233
|
+
view: S,
|
|
2234
|
+
leadingLayers: [F],
|
|
2235
|
+
trailingLayers: [G],
|
|
2236
|
+
position: 50
|
|
2237
|
+
});
|
|
2238
|
+
S.ui.add(k), M.value = k, p.value = "", u("close");
|
|
2239
|
+
}, h = () => {
|
|
2240
|
+
w(), p.value = "", I();
|
|
2241
|
+
};
|
|
2242
|
+
return ue(
|
|
2243
|
+
() => n.visible,
|
|
2244
|
+
(S) => {
|
|
2245
|
+
S && (x(), p.value = ""), I();
|
|
2246
|
+
}
|
|
2247
|
+
), fe(() => {
|
|
2248
|
+
var Y;
|
|
2249
|
+
y = ke(
|
|
2250
|
+
() => [c.value, D.value],
|
|
2251
|
+
I
|
|
2252
|
+
), L = Zt("layer", w), x();
|
|
2253
|
+
const S = (Y = d()) == null ? void 0 : Y.map;
|
|
2254
|
+
S && (B = S.layers.on("change", x));
|
|
2255
|
+
}), me(() => {
|
|
2256
|
+
y == null || y(), y = null, B == null || B.remove(), B = null, L == null || L(), L = null, w();
|
|
2257
|
+
}), t({
|
|
2258
|
+
destroySwipe: w,
|
|
2259
|
+
/** 当前是否已激活卷帘 */
|
|
2260
|
+
isSwipeActive: () => M.value !== null
|
|
2261
|
+
}), (S, Y) => e.visible ? (g(), re(Ee, {
|
|
2262
|
+
key: 0,
|
|
2263
|
+
title: "图层卷帘对比",
|
|
2264
|
+
width: 320,
|
|
2265
|
+
onClose: Y[0] || (Y[0] = (F) => u("close"))
|
|
2266
|
+
}, {
|
|
2267
|
+
default: Ie(() => [
|
|
2268
|
+
b.value.length === 0 ? (g(), N("p", Ln, "暂无业务图层,请先加载图层")) : (g(), N(ce, { key: 1 }, [
|
|
2269
|
+
a("div", kn, [
|
|
2270
|
+
a("div", xn, [
|
|
2271
|
+
Y[2] || (Y[2] = a("span", null, "左侧图层", -1)),
|
|
2272
|
+
a("div", {
|
|
2273
|
+
ref_key: "leftSelectRef",
|
|
2274
|
+
ref: c,
|
|
2275
|
+
class: "layer-swipe-select"
|
|
2276
|
+
}, [
|
|
2277
|
+
a("button", {
|
|
2278
|
+
type: "button",
|
|
2279
|
+
class: ae(["layer-swipe-trigger", { "is-open": A.value }]),
|
|
2280
|
+
"aria-label": "左侧图层",
|
|
2281
|
+
"aria-haspopup": "listbox",
|
|
2282
|
+
"aria-expanded": A.value,
|
|
2283
|
+
onClick: te(W, ["stop"]),
|
|
2284
|
+
onKeydown: Ae(I, ["esc"])
|
|
2285
|
+
}, [
|
|
2286
|
+
a("span", null, U(P.value), 1),
|
|
2287
|
+
Y[1] || (Y[1] = a("span", {
|
|
2288
|
+
class: "layer-swipe-arrow",
|
|
2289
|
+
"aria-hidden": "true"
|
|
2290
|
+
}, null, -1))
|
|
2291
|
+
], 42, Cn),
|
|
2292
|
+
A.value ? (g(), N("ul", Mn, [
|
|
2293
|
+
(g(!0), N(ce, null, de(b.value, (F) => (g(), N("li", {
|
|
2294
|
+
key: `L-${F.id}`
|
|
2295
|
+
}, [
|
|
2296
|
+
a("button", {
|
|
2297
|
+
type: "button",
|
|
2298
|
+
role: "option",
|
|
2299
|
+
"aria-selected": r.value === F.id,
|
|
2300
|
+
onClick: te((G) => E(F.id), ["stop"])
|
|
2301
|
+
}, U(F.title), 9, Rn)
|
|
2302
|
+
]))), 128))
|
|
2303
|
+
])) : _("", !0)
|
|
2304
|
+
], 512)
|
|
2305
|
+
]),
|
|
2306
|
+
a("div", Tn, [
|
|
2307
|
+
Y[4] || (Y[4] = a("span", null, "右侧图层", -1)),
|
|
2308
|
+
a("div", {
|
|
2309
|
+
ref_key: "rightSelectRef",
|
|
2310
|
+
ref: D,
|
|
2311
|
+
class: "layer-swipe-select"
|
|
2312
|
+
}, [
|
|
2313
|
+
a("button", {
|
|
2314
|
+
type: "button",
|
|
2315
|
+
class: ae(["layer-swipe-trigger", { "is-open": o.value }]),
|
|
2316
|
+
"aria-label": "右侧图层",
|
|
2317
|
+
"aria-haspopup": "listbox",
|
|
2318
|
+
"aria-expanded": o.value,
|
|
2319
|
+
onClick: te(R, ["stop"]),
|
|
2320
|
+
onKeydown: Ae(I, ["esc"])
|
|
2321
|
+
}, [
|
|
2322
|
+
a("span", null, U(H.value), 1),
|
|
2323
|
+
Y[3] || (Y[3] = a("span", {
|
|
2324
|
+
class: "layer-swipe-arrow",
|
|
2325
|
+
"aria-hidden": "true"
|
|
2326
|
+
}, null, -1))
|
|
2327
|
+
], 42, Dn),
|
|
2328
|
+
o.value ? (g(), N("ul", On, [
|
|
2329
|
+
(g(!0), N(ce, null, de(b.value, (F) => (g(), N("li", {
|
|
2330
|
+
key: `R-${F.id}`
|
|
2331
|
+
}, [
|
|
2332
|
+
a("button", {
|
|
2333
|
+
type: "button",
|
|
2334
|
+
role: "option",
|
|
2335
|
+
"aria-selected": s.value === F.id,
|
|
2336
|
+
onClick: te((G) => J(F.id), ["stop"])
|
|
2337
|
+
}, U(F.title), 9, Nn)
|
|
2338
|
+
]))), 128))
|
|
2339
|
+
])) : _("", !0)
|
|
2340
|
+
], 512)
|
|
2341
|
+
])
|
|
2342
|
+
]),
|
|
2343
|
+
a("div", { class: "layer-swipe-actions" }, [
|
|
2344
|
+
a("button", {
|
|
2345
|
+
type: "button",
|
|
2346
|
+
class: "layer-swipe-btn is-primary",
|
|
2347
|
+
onClick: z
|
|
2348
|
+
}, " 应用卷帘 "),
|
|
2349
|
+
a("button", {
|
|
2350
|
+
type: "button",
|
|
2351
|
+
class: "layer-swipe-btn",
|
|
2352
|
+
onClick: h
|
|
2353
|
+
}, " 取消应用 ")
|
|
2354
|
+
]),
|
|
2355
|
+
p.value ? (g(), N("p", Bn, U(p.value), 1)) : _("", !0)
|
|
2356
|
+
], 64))
|
|
2357
|
+
]),
|
|
2358
|
+
_: 1
|
|
2359
|
+
})) : _("", !0);
|
|
2360
|
+
}
|
|
2361
|
+
}), Gn = /* @__PURE__ */ ve(Yn, [["__scopeId", "data-v-3263e69a"]]), Zn = {
|
|
2362
|
+
key: 0,
|
|
2363
|
+
class: "map-label-empty"
|
|
2364
|
+
}, Qn = { class: "map-label-form" }, Fn = { class: "map-label-field" }, Pn = ["aria-expanded"], Wn = {
|
|
2365
|
+
key: 0,
|
|
2366
|
+
class: "map-label-options",
|
|
2367
|
+
role: "listbox"
|
|
2368
|
+
}, Jn = ["aria-selected", "onClick"], zn = { class: "map-label-field" }, jn = ["aria-expanded", "disabled"], Kn = {
|
|
2369
|
+
key: 0,
|
|
2370
|
+
class: "map-label-options",
|
|
2371
|
+
role: "listbox"
|
|
2372
|
+
}, Un = ["aria-selected", "onClick"], Vn = { class: "map-label-field" }, Xn = { class: "map-label-field" }, Hn = { class: "map-label-actions" }, qn = {
|
|
2373
|
+
key: 0,
|
|
2374
|
+
class: "map-label-message",
|
|
2375
|
+
role: "status"
|
|
2376
|
+
}, _n = /* @__PURE__ */ pe({
|
|
2377
|
+
__name: "MapLabelPanel",
|
|
2378
|
+
props: {
|
|
2379
|
+
view: {},
|
|
2380
|
+
idPrefix: { default: he }
|
|
2381
|
+
},
|
|
2382
|
+
emits: ["close"],
|
|
2383
|
+
setup(e, { emit: t }) {
|
|
2384
|
+
const l = /* @__PURE__ */ new Set([
|
|
2385
|
+
"shape",
|
|
2386
|
+
"st_area(shape)",
|
|
2387
|
+
"st_length(shape)",
|
|
2388
|
+
"shape_length",
|
|
2389
|
+
"shape_area",
|
|
2390
|
+
"shape.len",
|
|
2391
|
+
"shape.area"
|
|
2392
|
+
]), n = e, u = t, d = () => ge(n.view), b = T([]), r = T([]), s = T(""), A = T(""), o = T(!1), c = T(!1), D = T(null), y = T(null);
|
|
2393
|
+
let p = null;
|
|
2394
|
+
const M = T("#CF2E06"), B = T(12), L = T(""), P = T(!1);
|
|
2395
|
+
let H = null, I = 0, W = !1;
|
|
2396
|
+
const R = ee(
|
|
2397
|
+
() => !!s.value && r.value.length > 0
|
|
2398
|
+
), E = ee(() => {
|
|
2399
|
+
var f;
|
|
2400
|
+
return s.value ? ((f = b.value.find((C) => C.id === s.value)) == null ? void 0 : f.title) ?? "请选择" : "请选择";
|
|
2401
|
+
}), J = ee(() => {
|
|
2402
|
+
var f;
|
|
2403
|
+
return A.value ? ((f = r.value.find((C) => C.name === A.value)) == null ? void 0 : f.alias) ?? "请选择" : "请选择";
|
|
2404
|
+
}), x = ee(() => P.value ? "当前业务图层多为 MapImage/影像整图,要素级标注仅支持 FeatureLayer(FeatureServer 或 MapServer/图层索引)" : "暂无可标注的要素图层,请先加载 FeatureLayer 业务图层"), w = () => {
|
|
2405
|
+
o.value = !1, c.value = !1;
|
|
2406
|
+
}, z = () => {
|
|
2407
|
+
c.value = !1, o.value = !o.value;
|
|
2408
|
+
}, h = () => {
|
|
2409
|
+
R.value && (o.value = !1, c.value = !c.value);
|
|
2410
|
+
}, S = (f) => f.type === "feature", Y = (f) => {
|
|
2411
|
+
const C = f.geometryType;
|
|
2412
|
+
return C === "polygon" ? "always-horizontal" : C === "polyline" ? "center-along" : "above-center";
|
|
2413
|
+
}, F = async (f) => {
|
|
2414
|
+
var K, $;
|
|
2415
|
+
const C = ++I;
|
|
2416
|
+
if (L.value = "", A.value = "", r.value = [], !f) return;
|
|
2417
|
+
const Q = ($ = (K = d()) == null ? void 0 : K.map) == null ? void 0 : $.findLayerById(f);
|
|
2418
|
+
if (!Q || !S(Q)) {
|
|
2419
|
+
C === I && (L.value = "所选图层不支持字段标注");
|
|
2420
|
+
return;
|
|
2421
|
+
}
|
|
2422
|
+
try {
|
|
2423
|
+
if (Q.loadStatus !== "loaded" && await Q.load(), C !== I || s.value !== f) return;
|
|
2424
|
+
const V = (Q.fields ?? []).filter((q) => {
|
|
2425
|
+
const ne = (q.name || "").toLowerCase();
|
|
2426
|
+
return !l.has(ne) && q.type !== "geometry";
|
|
140
2427
|
});
|
|
141
|
-
|
|
2428
|
+
r.value = V.map((q) => ({
|
|
2429
|
+
name: q.name,
|
|
2430
|
+
alias: q.alias || q.name
|
|
2431
|
+
})), r.value.length === 0 && (L.value = "该图层没有可用字段");
|
|
2432
|
+
} catch (V) {
|
|
2433
|
+
if (C !== I || s.value !== f) return;
|
|
2434
|
+
console.error("加载标注字段失败:", V), L.value = "加载图层字段失败";
|
|
142
2435
|
}
|
|
143
|
-
},
|
|
144
|
-
|
|
145
|
-
|
|
2436
|
+
}, G = (f) => {
|
|
2437
|
+
s.value = f, w(), F(f);
|
|
2438
|
+
}, k = (f) => {
|
|
2439
|
+
A.value = f, w();
|
|
2440
|
+
}, Z = () => {
|
|
2441
|
+
var V;
|
|
2442
|
+
const f = (V = d()) == null ? void 0 : V.map;
|
|
2443
|
+
if (!f) {
|
|
2444
|
+
b.value = [], P.value = !1;
|
|
2445
|
+
return;
|
|
2446
|
+
}
|
|
2447
|
+
const C = n.idPrefix, Q = f.layers.filter((q) => (q.id || "").startsWith(C) && q.listMode !== "hide").toArray(), K = Q.filter((q) => S(q)).reverse();
|
|
2448
|
+
P.value = Q.length > 0 && K.length === 0, b.value = K.map((q) => ({
|
|
2449
|
+
id: q.id,
|
|
2450
|
+
title: q.title || q.id
|
|
2451
|
+
}));
|
|
2452
|
+
const $ = new Set(b.value.map((q) => q.id));
|
|
2453
|
+
Jl($), s.value && !$.has(s.value) && (I += 1, s.value = "", r.value = [], A.value = "");
|
|
2454
|
+
}, m = (f, C) => {
|
|
2455
|
+
const Q = C.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
2456
|
+
return new wt({
|
|
2457
|
+
labelPlacement: Y(f),
|
|
2458
|
+
labelExpressionInfo: {
|
|
2459
|
+
expression: `$feature["${Q}"]`
|
|
2460
|
+
},
|
|
2461
|
+
symbol: new St({
|
|
2462
|
+
color: M.value,
|
|
2463
|
+
haloColor: [255, 255, 255, 1],
|
|
2464
|
+
haloSize: 1.5,
|
|
2465
|
+
font: {
|
|
2466
|
+
size: B.value,
|
|
2467
|
+
weight: "bold"
|
|
2468
|
+
}
|
|
2469
|
+
})
|
|
2470
|
+
});
|
|
2471
|
+
}, i = (f) => {
|
|
2472
|
+
var $, V, q;
|
|
2473
|
+
const C = (f == null ? void 0 : f.silent) === !0 || W;
|
|
2474
|
+
if (C || (L.value = ""), w(), !s.value || !A.value) {
|
|
2475
|
+
C || (L.value = "请先选择图层和标注字段");
|
|
2476
|
+
return;
|
|
2477
|
+
}
|
|
2478
|
+
const Q = s.value, K = (V = ($ = d()) == null ? void 0 : $.map) == null ? void 0 : V.findLayerById(Q);
|
|
2479
|
+
if (!K || !S(K)) {
|
|
2480
|
+
C || (L.value = "指定图层不存在或不支持标注", Z());
|
|
2481
|
+
return;
|
|
2482
|
+
}
|
|
2483
|
+
if (!Le.has(Q)) {
|
|
2484
|
+
const ne = K.labelingInfo;
|
|
2485
|
+
Le.set(Q, ne && ne.length > 0 ? [...ne] : []);
|
|
2486
|
+
}
|
|
2487
|
+
if (Ot(K, [A.value]), K.labelsVisible = !0, K.labelingInfo = [m(K, A.value)], De.add(Q), !C) {
|
|
2488
|
+
const ne = (((q = Le.get(Q)) == null ? void 0 : q.length) ?? 0) > 0;
|
|
2489
|
+
L.value = ne ? "已应用标注(已覆盖该层默认注记;移除可恢复)" : "已应用标注";
|
|
2490
|
+
}
|
|
2491
|
+
}, v = () => {
|
|
2492
|
+
var K, $;
|
|
2493
|
+
if (L.value = "", w(), !s.value) {
|
|
2494
|
+
L.value = "请先选择图层";
|
|
2495
|
+
return;
|
|
2496
|
+
}
|
|
2497
|
+
const f = s.value;
|
|
2498
|
+
if (!De.has(f) && !Le.has(f)) {
|
|
2499
|
+
L.value = "当前图层没有手动标注可移除";
|
|
2500
|
+
return;
|
|
2501
|
+
}
|
|
2502
|
+
const C = ($ = (K = d()) == null ? void 0 : K.map) == null ? void 0 : $.findLayerById(f);
|
|
2503
|
+
if (!C || !S(C)) {
|
|
2504
|
+
L.value = "指定图层不存在或不支持标注", qe(f), Z();
|
|
2505
|
+
return;
|
|
2506
|
+
}
|
|
2507
|
+
const Q = Le.get(f);
|
|
2508
|
+
Q !== void 0 ? (C.labelingInfo = Q, C.labelsVisible = Q.length > 0, L.value = Q.length > 0 ? "已移除手动标注,并恢复默认注记" : "已移除标注") : (C.labelingInfo = [], C.labelsVisible = !1, L.value = "已移除标注"), qe(f);
|
|
146
2509
|
};
|
|
147
|
-
return
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
2510
|
+
return ue(
|
|
2511
|
+
() => n.idPrefix,
|
|
2512
|
+
() => {
|
|
2513
|
+
Z();
|
|
2514
|
+
}
|
|
2515
|
+
), ue([M, B, A], () => {
|
|
2516
|
+
const f = s.value;
|
|
2517
|
+
if (!(!f || !A.value) && De.has(f)) {
|
|
2518
|
+
W = !0;
|
|
2519
|
+
try {
|
|
2520
|
+
i({ silent: !0 });
|
|
2521
|
+
} finally {
|
|
2522
|
+
W = !1;
|
|
2523
|
+
}
|
|
2524
|
+
}
|
|
2525
|
+
}), fe(() => {
|
|
2526
|
+
var C;
|
|
2527
|
+
p = ke(
|
|
2528
|
+
() => [D.value, y.value],
|
|
2529
|
+
w
|
|
2530
|
+
), Z();
|
|
2531
|
+
const f = (C = d()) == null ? void 0 : C.map;
|
|
2532
|
+
f && (H = f.layers.on("change", Z));
|
|
2533
|
+
}), me(() => {
|
|
2534
|
+
I += 1, p == null || p(), p = null, H == null || H.remove(), H = null;
|
|
2535
|
+
}), (f, C) => (g(), re(Ee, {
|
|
2536
|
+
title: "地图标注",
|
|
2537
|
+
width: 320,
|
|
2538
|
+
onClose: C[3] || (C[3] = (Q) => u("close"))
|
|
2539
|
+
}, {
|
|
2540
|
+
default: Ie(() => [
|
|
2541
|
+
b.value.length === 0 ? (g(), N("p", Zn, U(x.value), 1)) : (g(), N(ce, { key: 1 }, [
|
|
2542
|
+
a("div", Qn, [
|
|
2543
|
+
a("div", Fn, [
|
|
2544
|
+
C[5] || (C[5] = a("span", null, "标注图层", -1)),
|
|
2545
|
+
a("div", {
|
|
2546
|
+
ref_key: "layerSelectRef",
|
|
2547
|
+
ref: D,
|
|
2548
|
+
class: "map-label-select"
|
|
2549
|
+
}, [
|
|
2550
|
+
a("button", {
|
|
2551
|
+
type: "button",
|
|
2552
|
+
class: ae(["map-label-trigger", { "is-open": o.value }]),
|
|
2553
|
+
"aria-label": "标注图层",
|
|
2554
|
+
"aria-haspopup": "listbox",
|
|
2555
|
+
"aria-expanded": o.value,
|
|
2556
|
+
onClick: te(z, ["stop"]),
|
|
2557
|
+
onKeydown: Ae(w, ["esc"])
|
|
2558
|
+
}, [
|
|
2559
|
+
a("span", null, U(E.value), 1),
|
|
2560
|
+
C[4] || (C[4] = a("span", {
|
|
2561
|
+
class: "map-label-arrow",
|
|
2562
|
+
"aria-hidden": "true"
|
|
2563
|
+
}, null, -1))
|
|
2564
|
+
], 42, Pn),
|
|
2565
|
+
o.value ? (g(), N("ul", Wn, [
|
|
2566
|
+
(g(!0), N(ce, null, de(b.value, (Q) => (g(), N("li", {
|
|
2567
|
+
key: Q.id
|
|
2568
|
+
}, [
|
|
2569
|
+
a("button", {
|
|
2570
|
+
type: "button",
|
|
2571
|
+
role: "option",
|
|
2572
|
+
"aria-selected": s.value === Q.id,
|
|
2573
|
+
onClick: te((K) => G(Q.id), ["stop"])
|
|
2574
|
+
}, U(Q.title), 9, Jn)
|
|
2575
|
+
]))), 128))
|
|
2576
|
+
])) : _("", !0)
|
|
2577
|
+
], 512)
|
|
2578
|
+
]),
|
|
2579
|
+
a("div", zn, [
|
|
2580
|
+
C[7] || (C[7] = a("span", null, "标注字段", -1)),
|
|
2581
|
+
a("div", {
|
|
2582
|
+
ref_key: "fieldSelectRef",
|
|
2583
|
+
ref: y,
|
|
2584
|
+
class: "map-label-select"
|
|
2585
|
+
}, [
|
|
2586
|
+
a("button", {
|
|
2587
|
+
type: "button",
|
|
2588
|
+
class: ae(["map-label-trigger", { "is-open": c.value, "is-disabled": !R.value }]),
|
|
2589
|
+
"aria-label": "标注字段",
|
|
2590
|
+
"aria-haspopup": "listbox",
|
|
2591
|
+
"aria-expanded": c.value,
|
|
2592
|
+
disabled: !R.value,
|
|
2593
|
+
onClick: te(h, ["stop"]),
|
|
2594
|
+
onKeydown: Ae(w, ["esc"])
|
|
2595
|
+
}, [
|
|
2596
|
+
a("span", null, U(J.value), 1),
|
|
2597
|
+
C[6] || (C[6] = a("span", {
|
|
2598
|
+
class: "map-label-arrow",
|
|
2599
|
+
"aria-hidden": "true"
|
|
2600
|
+
}, null, -1))
|
|
2601
|
+
], 42, jn),
|
|
2602
|
+
c.value && R.value ? (g(), N("ul", Kn, [
|
|
2603
|
+
(g(!0), N(ce, null, de(r.value, (Q) => (g(), N("li", {
|
|
2604
|
+
key: Q.name
|
|
2605
|
+
}, [
|
|
2606
|
+
a("button", {
|
|
2607
|
+
type: "button",
|
|
2608
|
+
role: "option",
|
|
2609
|
+
"aria-selected": A.value === Q.name,
|
|
2610
|
+
onClick: te((K) => k(Q.name), ["stop"])
|
|
2611
|
+
}, U(Q.alias), 9, Un)
|
|
2612
|
+
]))), 128))
|
|
2613
|
+
])) : _("", !0)
|
|
2614
|
+
], 512)
|
|
2615
|
+
]),
|
|
2616
|
+
a("div", Vn, [
|
|
2617
|
+
C[8] || (C[8] = a("span", null, "字体颜色", -1)),
|
|
2618
|
+
Ge(a("input", {
|
|
2619
|
+
"onUpdate:modelValue": C[0] || (C[0] = (Q) => M.value = Q),
|
|
2620
|
+
type: "color",
|
|
2621
|
+
"aria-label": "字体颜色",
|
|
2622
|
+
class: "map-label-color"
|
|
2623
|
+
}, null, 512), [
|
|
2624
|
+
[Ze, M.value]
|
|
2625
|
+
])
|
|
2626
|
+
]),
|
|
2627
|
+
a("div", Xn, [
|
|
2628
|
+
a("span", null, "字体大小:" + U(B.value), 1),
|
|
2629
|
+
Ge(a("input", {
|
|
2630
|
+
"onUpdate:modelValue": C[1] || (C[1] = (Q) => B.value = Q),
|
|
2631
|
+
type: "range",
|
|
2632
|
+
min: "8",
|
|
2633
|
+
max: "36",
|
|
2634
|
+
step: "1",
|
|
2635
|
+
"aria-label": "字体大小"
|
|
2636
|
+
}, null, 512), [
|
|
2637
|
+
[
|
|
2638
|
+
Ze,
|
|
2639
|
+
B.value,
|
|
2640
|
+
void 0,
|
|
2641
|
+
{ number: !0 }
|
|
2642
|
+
]
|
|
2643
|
+
])
|
|
2644
|
+
])
|
|
2645
|
+
]),
|
|
2646
|
+
a("div", Hn, [
|
|
2647
|
+
a("button", {
|
|
2648
|
+
type: "button",
|
|
2649
|
+
class: "map-label-btn is-primary",
|
|
2650
|
+
onClick: C[2] || (C[2] = (Q) => i())
|
|
2651
|
+
}, "标注"),
|
|
2652
|
+
a("button", {
|
|
2653
|
+
type: "button",
|
|
2654
|
+
class: "map-label-btn",
|
|
2655
|
+
onClick: v
|
|
2656
|
+
}, "移除标注")
|
|
2657
|
+
]),
|
|
2658
|
+
L.value ? (g(), N("p", qn, U(L.value), 1)) : _("", !0)
|
|
2659
|
+
], 64))
|
|
2660
|
+
]),
|
|
2661
|
+
_: 1
|
|
2662
|
+
}));
|
|
2663
|
+
}
|
|
2664
|
+
}), $n = /* @__PURE__ */ ve(_n, [["__scopeId", "data-v-a032d54c"]]), eo = {
|
|
2665
|
+
key: 0,
|
|
2666
|
+
class: "condition-query-empty"
|
|
2667
|
+
}, to = { class: "condition-query-field" }, lo = ["aria-expanded", "disabled"], ao = {
|
|
2668
|
+
key: 0,
|
|
2669
|
+
class: "condition-query-options",
|
|
2670
|
+
role: "listbox"
|
|
2671
|
+
}, no = ["aria-selected", "onClick"], oo = { class: "condition-query-field" }, so = ["aria-expanded", "disabled"], io = {
|
|
2672
|
+
key: 0,
|
|
2673
|
+
class: "condition-query-options",
|
|
2674
|
+
role: "listbox"
|
|
2675
|
+
}, ro = ["aria-selected", "onClick"], co = {
|
|
2676
|
+
class: "condition-query-ops",
|
|
2677
|
+
role: "group",
|
|
2678
|
+
"aria-label": "关系运算符"
|
|
2679
|
+
}, uo = ["disabled", "onClick"], Ao = { class: "condition-query-field" }, po = ["aria-expanded", "disabled"], mo = {
|
|
2680
|
+
key: 0,
|
|
2681
|
+
class: "condition-query-options",
|
|
2682
|
+
role: "listbox"
|
|
2683
|
+
}, vo = ["aria-selected", "onClick"], yo = { class: "condition-query-field" }, fo = ["disabled"], ho = { class: "condition-query-actions" }, bo = ["disabled"], go = ["disabled"], wo = /* @__PURE__ */ pe({
|
|
2684
|
+
__name: "ConditionQueryPanel",
|
|
2685
|
+
props: {
|
|
2686
|
+
view: {},
|
|
2687
|
+
idPrefix: { default: he }
|
|
2688
|
+
},
|
|
2689
|
+
emits: ["close"],
|
|
2690
|
+
setup(e, { emit: t }) {
|
|
2691
|
+
const l = /* @__PURE__ */ new Set([
|
|
2692
|
+
"shape",
|
|
2693
|
+
"st_area(shape)",
|
|
2694
|
+
"st_length(shape)",
|
|
2695
|
+
"shape_length",
|
|
2696
|
+
"shape_area",
|
|
2697
|
+
"shape.len",
|
|
2698
|
+
"shape.area"
|
|
2699
|
+
]), n = [
|
|
2700
|
+
{ label: "=", value: "= " },
|
|
2701
|
+
{ label: "!=", value: "!= " },
|
|
2702
|
+
{ label: "LIKE", value: "LIKE " },
|
|
2703
|
+
{ label: ">", value: "> " },
|
|
2704
|
+
{ label: ">=", value: ">= " },
|
|
2705
|
+
{ label: "AND", value: "AND " },
|
|
2706
|
+
{ label: "<", value: "< " },
|
|
2707
|
+
{ label: "<=", value: "<= " },
|
|
2708
|
+
{ label: "OR", value: "OR " },
|
|
2709
|
+
{ label: "%", value: "% " },
|
|
2710
|
+
{ label: "(", value: "( " },
|
|
2711
|
+
{ label: ")", value: ") " },
|
|
2712
|
+
{ label: "NOT", value: "NOT " },
|
|
2713
|
+
{ label: "IS", value: "IS " },
|
|
2714
|
+
{ label: "IN", value: "IN " },
|
|
2715
|
+
{ label: "NULL", value: "NULL " }
|
|
2716
|
+
], u = e, d = t, b = () => ge(u.view), r = T([]), s = T([]), A = T([]), o = T(""), c = T(""), D = T(""), y = T(""), p = T(!1), M = T(""), B = T(!1), L = T(""), P = T(!1), H = T(!1), I = T(!1), W = T(null), R = T(null), E = T(null);
|
|
2717
|
+
let J = null, x = null, w = null, z = 0, h = !1;
|
|
2718
|
+
const S = ee(
|
|
2719
|
+
() => !!o.value && s.value.length > 0
|
|
2720
|
+
), Y = ee(
|
|
2721
|
+
() => !!c.value && A.value.length > 0
|
|
2722
|
+
), F = ee(() => {
|
|
2723
|
+
var O;
|
|
2724
|
+
return o.value ? ((O = r.value.find((j) => j.id === o.value)) == null ? void 0 : O.title) ?? "请选择图层" : "请选择图层";
|
|
2725
|
+
}), G = ee(() => {
|
|
2726
|
+
if (!c.value) return "请选择字段";
|
|
2727
|
+
const O = s.value.find((j) => j.name === c.value);
|
|
2728
|
+
return O ? `${O.alias}(${O.name})` : "请选择字段";
|
|
2729
|
+
}), k = ee(() => D.value ? D.value === "__EMPTY__" ? "(空)" : D.value : "请选择字段值"), Z = (O) => O.type === "feature", m = (O, j = !1) => {
|
|
2730
|
+
M.value = O, B.value = j;
|
|
2731
|
+
}, i = () => {
|
|
2732
|
+
w == null || w.remove(), w = null;
|
|
2733
|
+
}, v = (O, j) => !!(h || O !== z || j !== void 0 && o.value !== j), f = () => {
|
|
2734
|
+
P.value = !1, H.value = !1, I.value = !1;
|
|
2735
|
+
}, C = () => {
|
|
2736
|
+
p.value || (P.value = !P.value, H.value = !1, I.value = !1);
|
|
2737
|
+
}, Q = () => {
|
|
2738
|
+
p.value || !S.value || (H.value = !H.value, P.value = !1, I.value = !1);
|
|
2739
|
+
}, K = () => {
|
|
2740
|
+
p.value || !Y.value || (I.value = !I.value, P.value = !1, H.value = !1);
|
|
2741
|
+
}, $ = (O) => O == null || O === "" ? "(空)" : String(O), V = (O) => O == null || O === "" ? "__EMPTY__" : String(O), q = (O) => D.value === V(O), ne = () => {
|
|
2742
|
+
var le;
|
|
2743
|
+
const O = (le = b()) == null ? void 0 : le.map;
|
|
2744
|
+
if (!O) {
|
|
2745
|
+
r.value = [];
|
|
2746
|
+
return;
|
|
2747
|
+
}
|
|
2748
|
+
const j = u.idPrefix, X = O.layers.filter((ie) => (ie.id || "").startsWith(j) && ie.listMode !== "hide" && Z(ie)).toArray().reverse();
|
|
2749
|
+
r.value = X.map((ie) => ({
|
|
2750
|
+
id: ie.id,
|
|
2751
|
+
title: ie.title || ie.id
|
|
2752
|
+
}));
|
|
2753
|
+
const oe = new Set(r.value.map((ie) => ie.id));
|
|
2754
|
+
o.value && !oe.has(o.value) && ot(!1);
|
|
2755
|
+
}, Ce = () => {
|
|
2756
|
+
var j, X;
|
|
2757
|
+
if (!o.value) return null;
|
|
2758
|
+
const O = (X = (j = b()) == null ? void 0 : j.map) == null ? void 0 : X.findLayerById(o.value);
|
|
2759
|
+
return !O || !Z(O) ? null : O;
|
|
2760
|
+
}, Ft = () => s.value.find((O) => O.name === c.value), nt = (O) => O === "string" || O === "guid" || O === "global-id" || O === "date" || O === "date-only" || O === "time-only" || O === "timestamp-offset" || O === "xml", Pt = (O, j) => O === "" || O === "__EMPTY__" ? nt(j) ? "''" : "NULL" : nt(j) ? `'${O.replace(/'/g, "''")}'` : O, Wt = async () => {
|
|
2761
|
+
const O = ++z, j = o.value;
|
|
2762
|
+
m(""), c.value = "", D.value = "", s.value = [], A.value = [], y.value = "", L.value = "", i();
|
|
2763
|
+
const X = Ce();
|
|
2764
|
+
if (!X) {
|
|
2765
|
+
v(O, j) || m("所选图层不存在或不支持条件查询", !0);
|
|
2766
|
+
return;
|
|
2767
|
+
}
|
|
2768
|
+
p.value = !0;
|
|
2769
|
+
try {
|
|
2770
|
+
if (X.loadStatus !== "loaded" && await X.load(), v(O, j)) return;
|
|
2771
|
+
const oe = (X.fields ?? []).filter((le) => {
|
|
2772
|
+
const ie = (le.name || "").toLowerCase();
|
|
2773
|
+
return !l.has(ie) && le.type !== "geometry";
|
|
2774
|
+
});
|
|
2775
|
+
s.value = oe.map((le) => ({
|
|
2776
|
+
name: le.name,
|
|
2777
|
+
alias: le.alias || le.name,
|
|
2778
|
+
type: le.type
|
|
2779
|
+
})), s.value.length === 0 && m("该图层没有可用查询字段", !0);
|
|
2780
|
+
} catch (oe) {
|
|
2781
|
+
if (v(O, j)) return;
|
|
2782
|
+
console.error("加载查询字段失败:", oe), m("加载图层字段失败", !0);
|
|
2783
|
+
} finally {
|
|
2784
|
+
O === z && (p.value = !1);
|
|
2785
|
+
}
|
|
2786
|
+
}, Jt = async () => {
|
|
2787
|
+
const O = ++z, j = o.value, X = c.value;
|
|
2788
|
+
m(""), D.value = "", A.value = [], L.value = "", i();
|
|
2789
|
+
const oe = Ce();
|
|
2790
|
+
if (!(!X || !oe)) {
|
|
2791
|
+
y.value = `${X} `, p.value = !0;
|
|
2792
|
+
try {
|
|
2793
|
+
const le = oe.createQuery();
|
|
2794
|
+
le.where = "1=1", le.returnGeometry = !1, le.returnDistinctValues = !0, le.outFields = [X], le.num = 1e3;
|
|
2795
|
+
const ie = await oe.queryFeatures(le);
|
|
2796
|
+
if (v(O, j) || c.value !== X) return;
|
|
2797
|
+
const we = ie.features.map((Me) => {
|
|
2798
|
+
var Re;
|
|
2799
|
+
return (Re = Me.attributes) == null ? void 0 : Re[X];
|
|
2800
|
+
}).filter((Me, Re, Ue) => Ue.indexOf(Me) === Re);
|
|
2801
|
+
A.value = we, we.length === 0 ? m("该字段未查询到可选值,仍可手动编辑条件") : we.length >= 1e3 && m("字段值较多,仅展示前 1000 个去重结果");
|
|
2802
|
+
} catch (le) {
|
|
2803
|
+
if (v(O, j) || c.value !== X) return;
|
|
2804
|
+
console.error("加载字段去重值失败:", le), m("加载字段值失败,仍可手动编辑条件", !0);
|
|
2805
|
+
} finally {
|
|
2806
|
+
O === z && (p.value = !1);
|
|
2807
|
+
}
|
|
2808
|
+
}
|
|
2809
|
+
}, zt = (O) => {
|
|
2810
|
+
o.value = O, f(), Wt();
|
|
2811
|
+
}, jt = (O) => {
|
|
2812
|
+
c.value = O, f(), Jt();
|
|
2813
|
+
}, Kt = (O) => {
|
|
2814
|
+
if (f(), m(""), !o.value || !c.value) {
|
|
2815
|
+
m("请先选择图层和字段", !0);
|
|
2816
|
+
return;
|
|
2817
|
+
}
|
|
2818
|
+
L.value = O.trim(), y.value += O;
|
|
2819
|
+
}, Ut = (O) => {
|
|
2820
|
+
if (m(""), !L.value) {
|
|
2821
|
+
m("请先选择关系符号", !0), D.value = "", f();
|
|
2822
|
+
return;
|
|
2823
|
+
}
|
|
2824
|
+
const j = Ft();
|
|
2825
|
+
if (!j) {
|
|
2826
|
+
m("字段信息无效,请重新选择字段", !0), f();
|
|
2827
|
+
return;
|
|
2828
|
+
}
|
|
2829
|
+
const X = V(O);
|
|
2830
|
+
D.value = X, y.value += Pt(X, j.type), f();
|
|
2831
|
+
}, Vt = async () => {
|
|
2832
|
+
const O = ++z, j = o.value;
|
|
2833
|
+
if (f(), m(""), !o.value || !c.value) {
|
|
2834
|
+
m("请先选择图层和字段", !0);
|
|
2835
|
+
return;
|
|
2836
|
+
}
|
|
2837
|
+
if (!y.value.trim()) {
|
|
2838
|
+
m("请输入查询条件", !0);
|
|
2839
|
+
return;
|
|
2840
|
+
}
|
|
2841
|
+
const X = Ce(), oe = b();
|
|
2842
|
+
if (!X || !oe) {
|
|
2843
|
+
m("图层或地图未就绪", !0);
|
|
2844
|
+
return;
|
|
2845
|
+
}
|
|
2846
|
+
p.value = !0, i();
|
|
2847
|
+
try {
|
|
2848
|
+
const le = X.createQuery();
|
|
2849
|
+
le.where = y.value.trim(), le.returnGeometry = !0, le.outFields = ["*"];
|
|
2850
|
+
const ie = await X.queryFeatures(le);
|
|
2851
|
+
if (v(O, j)) return;
|
|
2852
|
+
const we = ie.features ?? [];
|
|
2853
|
+
if (we.length === 0) {
|
|
2854
|
+
m("未查询到符合条件的要素", !0);
|
|
2855
|
+
return;
|
|
2856
|
+
}
|
|
2857
|
+
const Me = we.filter((Ue) => Ue.geometry);
|
|
2858
|
+
if (Me.length === 0) {
|
|
2859
|
+
m(`查询到 ${we.length} 条,但无有效几何,无法定位`, !0);
|
|
2860
|
+
return;
|
|
2861
|
+
}
|
|
2862
|
+
if (await oe.goTo(Me, { duration: 1200 }), v(O, j)) return;
|
|
2863
|
+
const Re = await oe.whenLayerView(X);
|
|
2864
|
+
if (v(O, j)) return;
|
|
2865
|
+
w = Re.highlight(we), m(`查询成功,共 ${we.length} 条,已定位并高亮`);
|
|
2866
|
+
} catch (le) {
|
|
2867
|
+
if (v(O, j)) return;
|
|
2868
|
+
console.error("条件查询失败:", le);
|
|
2869
|
+
const ie = le instanceof Error && le.message ? `:${le.message}` : "";
|
|
2870
|
+
m(`查询失败,请检查条件${ie}`, !0);
|
|
2871
|
+
} finally {
|
|
2872
|
+
O === z && (p.value = !1);
|
|
2873
|
+
}
|
|
2874
|
+
}, ot = (O = !0) => {
|
|
2875
|
+
z += 1, f(), o.value = "", c.value = "", D.value = "", s.value = [], A.value = [], y.value = "", L.value = "", p.value = !1, i(), m(O ? "已清空查询条件与高亮" : "");
|
|
2876
|
+
};
|
|
2877
|
+
return fe(() => {
|
|
2878
|
+
var j;
|
|
2879
|
+
h = !1, J = ke(
|
|
2880
|
+
() => [W.value, R.value, E.value],
|
|
2881
|
+
f
|
|
2882
|
+
), ne();
|
|
2883
|
+
const O = (j = b()) == null ? void 0 : j.map;
|
|
2884
|
+
O && (x = O.layers.on("change", ne));
|
|
2885
|
+
}), me(() => {
|
|
2886
|
+
h = !0, z += 1, J == null || J(), J = null, x == null || x.remove(), x = null, i();
|
|
2887
|
+
}), (O, j) => (g(), re(Ee, {
|
|
2888
|
+
title: "条件查询",
|
|
2889
|
+
width: 400,
|
|
2890
|
+
onClose: j[2] || (j[2] = (X) => d("close"))
|
|
2891
|
+
}, {
|
|
2892
|
+
default: Ie(() => [
|
|
2893
|
+
r.value.length === 0 ? (g(), N("p", eo, " 暂无可查询的要素图层,请先加载业务图层 ")) : (g(), N(ce, { key: 1 }, [
|
|
2894
|
+
a("div", {
|
|
2895
|
+
class: ae(["condition-query-form", { "is-loading": p.value }])
|
|
2896
|
+
}, [
|
|
2897
|
+
a("div", to, [
|
|
2898
|
+
j[4] || (j[4] = a("span", null, "图层", -1)),
|
|
2899
|
+
a("div", {
|
|
2900
|
+
ref_key: "layerSelectRef",
|
|
2901
|
+
ref: W,
|
|
2902
|
+
class: "condition-query-select"
|
|
2903
|
+
}, [
|
|
2904
|
+
a("button", {
|
|
2905
|
+
type: "button",
|
|
2906
|
+
class: ae(["condition-query-trigger", { "is-open": P.value }]),
|
|
2907
|
+
"aria-label": "查询图层",
|
|
2908
|
+
"aria-haspopup": "listbox",
|
|
2909
|
+
"aria-expanded": P.value,
|
|
2910
|
+
disabled: p.value,
|
|
2911
|
+
onClick: te(C, ["stop"]),
|
|
2912
|
+
onKeydown: Ae(f, ["esc"])
|
|
2913
|
+
}, [
|
|
2914
|
+
a("span", null, U(F.value), 1),
|
|
2915
|
+
j[3] || (j[3] = a("span", {
|
|
2916
|
+
class: "condition-query-arrow",
|
|
2917
|
+
"aria-hidden": "true"
|
|
2918
|
+
}, null, -1))
|
|
2919
|
+
], 42, lo),
|
|
2920
|
+
P.value ? (g(), N("ul", ao, [
|
|
2921
|
+
(g(!0), N(ce, null, de(r.value, (X) => (g(), N("li", {
|
|
2922
|
+
key: X.id
|
|
2923
|
+
}, [
|
|
2924
|
+
a("button", {
|
|
2925
|
+
type: "button",
|
|
2926
|
+
role: "option",
|
|
2927
|
+
"aria-selected": o.value === X.id,
|
|
2928
|
+
onClick: te((oe) => zt(X.id), ["stop"])
|
|
2929
|
+
}, U(X.title), 9, no)
|
|
2930
|
+
]))), 128))
|
|
2931
|
+
])) : _("", !0)
|
|
2932
|
+
], 512)
|
|
2933
|
+
]),
|
|
2934
|
+
a("div", oo, [
|
|
2935
|
+
j[6] || (j[6] = a("span", null, "字段", -1)),
|
|
2936
|
+
a("div", {
|
|
2937
|
+
ref_key: "fieldSelectRef",
|
|
2938
|
+
ref: R,
|
|
2939
|
+
class: "condition-query-select"
|
|
2940
|
+
}, [
|
|
2941
|
+
a("button", {
|
|
2942
|
+
type: "button",
|
|
2943
|
+
class: ae(["condition-query-trigger", { "is-open": H.value, "is-disabled": !S.value }]),
|
|
2944
|
+
"aria-label": "查询字段",
|
|
2945
|
+
"aria-haspopup": "listbox",
|
|
2946
|
+
"aria-expanded": H.value,
|
|
2947
|
+
disabled: p.value || !S.value,
|
|
2948
|
+
onClick: te(Q, ["stop"]),
|
|
2949
|
+
onKeydown: Ae(f, ["esc"])
|
|
2950
|
+
}, [
|
|
2951
|
+
a("span", null, U(G.value), 1),
|
|
2952
|
+
j[5] || (j[5] = a("span", {
|
|
2953
|
+
class: "condition-query-arrow",
|
|
2954
|
+
"aria-hidden": "true"
|
|
2955
|
+
}, null, -1))
|
|
2956
|
+
], 42, so),
|
|
2957
|
+
H.value && S.value ? (g(), N("ul", io, [
|
|
2958
|
+
(g(!0), N(ce, null, de(s.value, (X) => (g(), N("li", {
|
|
2959
|
+
key: X.name
|
|
2960
|
+
}, [
|
|
2961
|
+
a("button", {
|
|
2962
|
+
type: "button",
|
|
2963
|
+
role: "option",
|
|
2964
|
+
"aria-selected": c.value === X.name,
|
|
2965
|
+
onClick: te((oe) => jt(X.name), ["stop"])
|
|
2966
|
+
}, U(X.alias) + "(" + U(X.name) + ") ", 9, ro)
|
|
2967
|
+
]))), 128))
|
|
2968
|
+
])) : _("", !0)
|
|
2969
|
+
], 512)
|
|
2970
|
+
]),
|
|
2971
|
+
a("div", co, [
|
|
2972
|
+
(g(), N(ce, null, de(n, (X) => a("button", {
|
|
2973
|
+
key: X.value,
|
|
2974
|
+
type: "button",
|
|
2975
|
+
class: "condition-query-op",
|
|
2976
|
+
disabled: p.value || !o.value || !c.value,
|
|
2977
|
+
onClick: (oe) => Kt(X.value)
|
|
2978
|
+
}, U(X.label), 9, uo)), 64))
|
|
2979
|
+
]),
|
|
2980
|
+
a("div", Ao, [
|
|
2981
|
+
j[8] || (j[8] = a("span", null, "字段的值", -1)),
|
|
2982
|
+
a("div", {
|
|
2983
|
+
ref_key: "valueSelectRef",
|
|
2984
|
+
ref: E,
|
|
2985
|
+
class: "condition-query-select"
|
|
2986
|
+
}, [
|
|
2987
|
+
a("button", {
|
|
2988
|
+
type: "button",
|
|
2989
|
+
class: ae(["condition-query-trigger", { "is-open": I.value, "is-disabled": !Y.value }]),
|
|
2990
|
+
"aria-label": "字段的值",
|
|
2991
|
+
"aria-haspopup": "listbox",
|
|
2992
|
+
"aria-expanded": I.value,
|
|
2993
|
+
disabled: p.value || !Y.value,
|
|
2994
|
+
onClick: te(K, ["stop"]),
|
|
2995
|
+
onKeydown: Ae(f, ["esc"])
|
|
2996
|
+
}, [
|
|
2997
|
+
a("span", null, U(k.value), 1),
|
|
2998
|
+
j[7] || (j[7] = a("span", {
|
|
2999
|
+
class: "condition-query-arrow",
|
|
3000
|
+
"aria-hidden": "true"
|
|
3001
|
+
}, null, -1))
|
|
3002
|
+
], 42, po),
|
|
3003
|
+
I.value && Y.value ? (g(), N("ul", mo, [
|
|
3004
|
+
(g(!0), N(ce, null, de(A.value, (X, oe) => (g(), N("li", {
|
|
3005
|
+
key: `${oe}-${String(X)}`
|
|
3006
|
+
}, [
|
|
3007
|
+
a("button", {
|
|
3008
|
+
type: "button",
|
|
3009
|
+
role: "option",
|
|
3010
|
+
"aria-selected": q(X),
|
|
3011
|
+
onClick: te((le) => Ut(X), ["stop"])
|
|
3012
|
+
}, U($(X)), 9, vo)
|
|
3013
|
+
]))), 128))
|
|
3014
|
+
])) : _("", !0)
|
|
3015
|
+
], 512)
|
|
3016
|
+
]),
|
|
3017
|
+
a("label", yo, [
|
|
3018
|
+
j[9] || (j[9] = a("span", null, "查询条件(WHERE)", -1)),
|
|
3019
|
+
Ge(a("textarea", {
|
|
3020
|
+
"onUpdate:modelValue": j[0] || (j[0] = (X) => y.value = X),
|
|
3021
|
+
rows: "3",
|
|
3022
|
+
placeholder: "可通过上方控件拼接,也可直接编辑",
|
|
3023
|
+
disabled: p.value,
|
|
3024
|
+
"aria-label": "查询条件",
|
|
3025
|
+
onFocus: f
|
|
3026
|
+
}, null, 40, fo), [
|
|
3027
|
+
[Ze, y.value]
|
|
3028
|
+
])
|
|
3029
|
+
])
|
|
3030
|
+
], 2),
|
|
3031
|
+
a("div", ho, [
|
|
3032
|
+
a("button", {
|
|
3033
|
+
type: "button",
|
|
3034
|
+
class: "condition-query-btn is-primary",
|
|
3035
|
+
disabled: p.value,
|
|
3036
|
+
onClick: Vt
|
|
3037
|
+
}, U(p.value ? "查询中…" : "查询"), 9, bo),
|
|
3038
|
+
a("button", {
|
|
3039
|
+
type: "button",
|
|
3040
|
+
class: "condition-query-btn",
|
|
3041
|
+
disabled: p.value,
|
|
3042
|
+
onClick: j[1] || (j[1] = (X) => ot())
|
|
3043
|
+
}, " 清空 ", 8, go)
|
|
3044
|
+
]),
|
|
3045
|
+
M.value ? (g(), N("p", {
|
|
3046
|
+
key: 0,
|
|
3047
|
+
class: ae(["condition-query-message", { "is-error": B.value }]),
|
|
3048
|
+
role: "status"
|
|
3049
|
+
}, U(M.value), 3)) : _("", !0)
|
|
3050
|
+
], 64))
|
|
3051
|
+
]),
|
|
3052
|
+
_: 1
|
|
3053
|
+
}));
|
|
3054
|
+
}
|
|
3055
|
+
}), So = /* @__PURE__ */ ve(wo, [["__scopeId", "data-v-01a8130c"]]), Io = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJ/mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDI2LTA1LTA2VDExOjQ1OjE0KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNi0wNy0yN1QxNjoxNTo0MCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNi0wNy0yN1QxNjoxNTo0MCswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphYzM5NWNlYS1kY2Q5LTRhMDQtYjkyYS1kYjY2M2E0MjVkNjMiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0Y2YxN2U0NC03OWFhLTU2NGQtYmI2Zi01ZTA0ZjY5MjExNzUiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMmRkNDc1MS1hMDE3LTQ4MjgtYjUwNC1lNzg2ZGZmZjlhODkiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIgc3RFdnQ6d2hlbj0iMjAyNi0wNS0wNlQxMTo0NToxNCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6N2UyNTc5NGQtNzJjYS00YzdmLWEzMzUtZDdkMDQzYjFjOGM2IiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjEyOjUzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NzQ5ZWEyMDktYzY4My00YTJlLTkzOWYtOTE3YTgwOTFiM2JiIiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjE1OjQwKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YWMzOTVjZWEtZGNkOS00YTA0LWI5MmEtZGI2NjNhNDI1ZDYzIiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjE1OjQwKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzQ5ZWEyMDktYzY4My00YTJlLTkzOWYtOTE3YTgwOTFiM2JiIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjpFdkMAAA+3SURBVFjDpZl5lF1VlcZ/+9x731hzJZVKIBMhIzOSBBGQXoBpIwGFoAlNA4J2WppWlF4YldUiAZUGGhoZFBuQIQwSdCEgMzQL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", Eo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJ/mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDI2LTA1LTA2VDExOjQ1OjE0KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNi0wNy0yN1QxNjoxNjoxMiswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNi0wNy0yN1QxNjoxNjoxMiswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiNTRmMDg1ZC0wMjEwLTQ4Y2EtYWYzZC1kZWVhYzg0NDNjMzEiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4N2Q5Y2QxMy1iMjlkLTUxNDMtYmI1Ni1jZDg1YzgwYzYzOWIiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMmRkNDc1MS1hMDE3LTQ4MjgtYjUwNC1lNzg2ZGZmZjlhODkiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIgc3RFdnQ6d2hlbj0iMjAyNi0wNS0wNlQxMTo0NToxNCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6N2UyNTc5NGQtNzJjYS00YzdmLWEzMzUtZDdkMDQzYjFjOGM2IiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjEyOjUzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ODY3YTlkMmYtZTA4Zi00MGM0LTk2YzktYWFiZDk0NThhZWU0IiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjE2OjEyKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YjU0ZjA4NWQtMDIxMC00OGNhLWFmM2QtZGVlYWM4NDQzYzMxIiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjE2OjEyKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ODY3YTlkMmYtZTA4Zi00MGM0LTk2YzktYWFiZDk0NThhZWU0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlUQsBsAAAmDSURBVFjDzZl/jFxVFcc/57735vfMtqW7/bG0pWBrqwgWEhFpRYKAAiIGKCSAvwBJAKNojAYxgNEQTQwhmGhMCIhR/EGQKj+a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", Lo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAAD3ElEQVRYCe2ZzWsTQRTA5+2m8aNpkbaC1FbaIigiWCp6lID9A/wE7960J8VDexDsQU96UPEm/gGKCl4VxKN6UBBRkKTYWoTWIknVmmbn+d7uTrK73d1k0+wmAfeQzLx5s/PbtzNv9r0B4bhGML91WcJ5gXhGAB5EAf1UBodK/EUAGhB/CIQPAuDRgIb352B0TQ1cgenF+aOGXH8oUOxRjW3xD+KrrnWdLcDwa+YxgS3Y8kuy5jYnJIAokIrhlMVfRh1R9LrGAfija6ksQwNPgyWJn5VlCXKVlGfSWvrJCgwtuDomVOnDhaGSLJ2k4a4TfMYcliy9U4N9kDHmphDlHRYyLGhwpAijn0ylFv/0YH4/SnyjoAG0qRRNg9NVLm26CCOxwQ7i4vZfYn1XdbyNJV3oJfVm2XAZIzdDWrdNTXIGZOHcEj3BAAu26OlhpWwqNPEng/mskPhMWSvs1rSwXqymxiZZh6fHX6M0z2WaAcua6bqsSiEuWB5MSHGsHlhWRSGOMyiXmcla/CyHfp4StmuL1xvQIn5AC+kAwexlEMfF448Th+aQCUMY6Wqd2agnsaaqwnhLK7CbX+s57yg9Ru6mRDHhlQfVXU8VpBSX3Ia9VLk/gKyUAwotA/bCaiBuEeO7AM6KuCXAfrBFfewyUdFEDb8SBw6BDSe1WxMF3iwsMycG3AzYxIDrhSWH/IWh+JumW3R957L3it0P08fVBYmy4rrYG9gLzMsiaHO5QpvLR3rvrxZh8PcGBRLEDky706QaOAyWdezNZVbp+/3HDpzS8VrZoJcN8Lyoj9zzg4giix34J4y9J6BTUaDCdBPzEmEQUdr+A0exViO6TbEwu65MOf94B+YONQIRpc+mF521KVh+1vQGTVxgfg8SaGGOwTJG/moffhv268gy7w7GritIt1lyXwtzdFuQa2bAyGENDRYUKXh2sM372VoP5mthDsVVwOgTg22wbK0drBZElHZf4LAbeKdBkrDMFQm41bCRgNsBtl5gaBdYBvb1EtzguMadeYOk56yDwyzWnsOOjEyrYZm4HgtbD0lJDspyZLuN/FtLYIsprOFIwf74djbFUk7R7oRWfg11NQKnPMuU3XJdlqUnXDKqkJ8+bIY1Qsx625pXt9mIld4yHYDwwJSmd2UMKeVZz4AcMHIMVo9uIzrMxGzcl1kpe0mnNQKzLCBLcZrezMZzfpaV3VlE1nJfHN0GBYxuzcZqNpPVmVj5yOAiHRncZQlbq92PDMD/UEabTmupp7EmuEMMzm+2JMsnKAt+Q33T0HywDmW4X0cde6kH7aiDRQXdCUe3/wAlqeR47KAVTQAAAABJRU5ErkJggg==", ko = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAADsElEQVRYCe2ZO28TQRCAd3aNFYiTiEeEiAJKQgEStFDTIhoiwi+gTQURKBEFBQTxCA2i5BcQKVTUtEBJCiiIDURBKDyU2EBkvDvMnG/M2dzl7Nh3TiROsnd3vLvz3Xhudm8WVOAawXzPFweXFOKEAjyJCvZTHQJdkq8CkEL8qhAWFcD8AY2PCzC6IYprMP348bR1v58oVEfkx21Rgvpg9K6L63D4JfN4wFXYynOy5u4gJIBapy42KEu+jgZR9dfpAfhldOYMQwO7warDt2JZgixR55mszi58g+HluoEpNfbh8nDZlcdJ3SzB5zy1ZOlBDccgZwuTiO4hCxkWNJwqwugbr1OXv/owfxwdvhJoAD2pyQ0u/OXS092GHcKVPcLjs8xIm4OB5mgggqzOPJV6N8qcXbq55ja+5yr5BdHPril1ZoVem3ccuvgBK5mxgdqPKVf67NKcQ3XZUwuqPKB79q7A0E9u042seQ8ihTx2CT+0JRMN+rFwjhS+7rWFu1E2qIOlTgR0T2CrY3w2YtVRk3RK7ixOkXXI7XAqh58GG+dthNWgHtA/fb2xn7QTB6b/r89TRtYxqlyt+9rDYItm7IrAhZWJA4cpZdlWYHlcV4C3CtsV4HZgGTjDX2ld1to7qNSE6OMHLM5npa+UqbpEu7AMnaqFxUoUZ+e1No8G8P2YyKzKFktwaFXaUWWqFhYItnTF2nfBD7qNz5stLjI2eWBUsVbzYHh7oNxZAYsqE3cJY9QNa8kJQP2zygWhAFVRa7gflIXVEwdeh9EXpDjWcmFwYbLkXSJMaxuy/8BtGK+pobE+zPtZb4sou66oaSka8APm+2xUr7blscDOIS2neILeqmMvLxp08AELUxjrw5T9eUav003g0vQxoSsMoFVZLPAPM3IVdM/BjDFHgx9eXltV1on+sS7BSvw1vrZi8RYxuJHpBEizc8RauHGixv1s2pZuCbgRlvezxphrjTeVZLtp4DDYVjffnbiRpoC3CyzfcCzwdoKNBW4Glt8UJE5TtKZ8crJXpIU5MVfLdRFD1AtjNeTBfdp9L2oDc8ni0toUlgzklCdnEWk5zjJAFGzScDJ/XTLQOwChXzg7yJlv7sSJODoaoSVZlclyt7oRDQSWmbzMJQmYlbKXdFrjX36a3muVMqPjnPLcLDEn45Isg0zMSgltCO4JZjlNLwD1KU+Rplf6LLM1jcQacSijpzkb391Dmcp5pdxtcoecByyHMtzYUcdeYu4ddbAo0Dvh6PYPmJ3UMHrbxZsAAAAASUVORK5CYII=", xo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGAGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjYtMDUtMDZUMTE6NDU6MTQrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTA3LTIxVDE0OjE0OjA0KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI2LTA3LTIxVDE0OjE0OjA0KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmZjNmJmZmEzLWJhOGYtNDc5MS04MDhmLTg0ZjE2NjU0NjdiNiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmRiN2U1MjNkLTQyM2MtNWY0Yy05ODA3LTJhNTMwNzM1YTkyMiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjZlMTFiYjk5LWM3ZTEtNGQzOC04ZThkLWE3MzgzZDAzZjRjNSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NmUxMWJiOTktYzdlMS00ZDM4LThlOGQtYTczODNkMDNmNGM1IiBzdEV2dDp3aGVuPSIyMDI2LTA1LTA2VDExOjQ1OjE0KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZmM2YmZmYTMtYmE4Zi00NzkxLTgwOGYtODRmMTY2NTQ2N2I2IiBzdEV2dDp3aGVuPSIyMDI2LTA3LTIxVDE0OjE0OjA0KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6LAbEEAAALM0lEQVRYw7WZfZBdZX3HP7/fc+69+5rsJtm8SggBKUNwNGmxkJaqaGVaK6XWllSwg85AzZTKCFIdcTqMWGwZtDXFoqWIoFPtMMoAjRanyItCgdZWhFrlJZBIAiGb7G72bva+nPP79o97drNksiE3lufOM+f88dxzvs/3+f5ej0nicGM5uzEgBxq0cAoCyOiniDbJCgL1nGQjI9sY/bV2FGcj1pppBdgIaBrZThkvIT1S877vtNV4QaYxE5glInIwI2Rk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", Co = "data:image/png;base64,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", Mo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAAEx0lEQVRYCdVZzYscRRR/r2bICjPrRoMfBwm7q8GPmySgoGAOEWHxsoIiCdE9eAnEg+Jlb4IgQmIIEm9C8OPgwRAhIAg57EFFEPMHaJidCBIygeiuIxjs7ufv9XTVdle6e7o7k521YLeqXr169etXr96resOdcP0tInqPRDqo8wuzsMgPu1pzSzd4z2Y+UzNqV648QVH4tQjtK5PATNeN4dcMmMrBqhQBXqJn/g03XyoT2mgsCo+NAzuCQPdFIa2aUs16CIS5eBc83qpdoeoyhanTzghmc5IN/ZihRfKJiOzO0CbbYSeO+RIbft/1tRHKESFZtrQMYAU75PlzdlBr2PgZ2xeKPuyGvQ9sfxI1wNzl5IhcHfKCv/5+gj3akgFsiYW10AzmzhSOb8OAHrr/VamlYcP0BQlfLPvCiOgVuJUlx8McMcm7cIy/OVqqAZN4A7v2bIpU2uRO0HMWwsx/ovOPN+N+eJJ4J5jN8WFr/mNv3HU7Qf8IsXxm+QlgWyIrm+3Fzx2T18AZOQv+lZjMdJOI//BYZp0nY/65DaH4SDgMlArewH2cJ5QSsJ9CyMjMKoCdk/5CEEWHnCycEaB40PX9BgAajWA+PbevAHyXlzCmwLZiUnWwa/AAD+Wul0OEBXzP98iNuSDcWLZBAa7rFITsUn61WSGjflkU7AbPX/LlNDGDRLMKdm9K3gWY3LfYoZex5c8pHeH4MlCcjnkkGhxoLZxP8Y+a8LN/qV3r32yw/votDCmCgoUNBpYf7fDuoHc0xXJLU8F2wt4VNwfrdIPeVwdFYgfQDfsf2bFusL7mC2js1m7TDJxmcXjOQXOvrjEHPri8fiPA0wKrH1Ab8DTB1gY8bbC1AO8EsAq4UmhOwNaKYHmuq9oBQyQvKWNtOKXZEW+9oFDLG+yW/pPwvodL8JZrOL7IsLwAZ94kgtUGG0RyEdH33saAEeCW3OX5Dmu2Clj9kLEmEX/tDgFbDfA2g8X9YSNWUsG/cg1vP1h9PxbencdqWF8KZZfvpq5LvYFvs9DsmWFr8U1YaeGdezzggmeNTrwzYFVyeSk3iYK50wKrcGoDnibY2oCnDbYW4J0AtjLgnQJWAXOSnz22lUWUowjH8S0O16bv8Dj9FSH6edDc67bKravcdenSo/KIyMy1qP827i1xfhiyn8Z94nEdhau7BlzfJKwDY2ZOMh6dv1TJzyaTaJJgVeZsuL4aiWQzlnYxr8Yz/0tTByzmXxj3YKyqWYvFatb2y2pElH3ZCzzys7hKXs1MYjoEc4gzlpo3KHvd1gWbrINNGxWYwAAK/Mn2tYZWH4OJPGxpGcCaTM7Jz+IDkvQRkhzIGzxqJ2friBFuD6fvs/Yio7mGLG+6J0/ZWKxg/24vvpgeRa5DzWXV0jKALbGojjMyMsrK5PPYpUejADCH1nEibPyESu1IN6F1G4uppWFs8WXkh39vvFreRBbYKD2QN5RHywLGDyCwmf0e4+xW35wetovzw1t81VtY7yzOyIrO0AOW2KwTgGTwwbShZQDDRpfhEba7uBUTb+AOmAJxgwkqg22+XhkhUp6Veasz1lifBm39OVR/YdQf7QrXwKdrMvmAmT+/VsjUbADh9oREN/dCk6U/3ULVA26Zd/4DruePRtb0DlQAAAAASUVORK5CYII=", Ro = "data:image/png;base64,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", To = "data:image/png;base64,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", Do = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAwCAYAAABqkJjhAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAAMAAAAABZfp0gAAAEuElEQVRoBe1ZXWgcVRQ+58zGZMluGqVKKA07W61FYy3YgmhV4osY/2so+JLHWl+KiC1EDPjYl0YEnwIq+NCHthSlqDEasFCC9kFbLPWp7E8SQ5uqtNltk+7u3OO5rLOZWfdndvdmbaQXhnvOd8+959szZ87cuYsgLcqpPUrxBwA8AAwhjf3XDRGuAOCxXgqNzmP/sssHo5x+SSl1CpjRBW+nHgFPZUPxV11OxI5673Ylq0ky8CsRTj/sEg4B8lZBVxviTVEWV4G2S10SwD6vV7n194v+m8ZCwHhRfsegVoqNLSQ6mEX7pIu0q4/ywkblrEyKv1XCiEwAwrHYCC0aA4ScC0i0O1nx8aiTfLOEtUHo5USM1cqMuNrldSfRnbiOsYSLUQZjMxbRa1BMhSLOTIp5IuIkxlzDtewlRwfyCmeY4UGfH8TPd5F9wIuVKoOUticksl8z890+A6SPMxR7G+XWeHFTcjW/hDC+RPFD5X4lPYotg/aPQPS0RHrBxXTPrA5EVeroTuYOL25C7uHUC1L/p8uDRIijGWvLwXKy2mcpwi6BXk7aBcXfye3Z6mLFHqciVnj4Cvbd8OPNaT2FxIiD8JnvRYXoEOP+TMj+tNqq/yKsDSN8+T5Wy5MS3sf8E/EsWR0vZnDzn368Ma3bSb4jM8Z99R/hFhG+kcH4l7VWK6WE1yiLfYthigzKW+YHLy4J8jir/Jl7+Pd+Px5cE7KHheiHXrLyGl5CwufrkdVeKhLWA3/gvZk+yx4S0l9o3W2Sbw/lVO77Aea7XCxoL6VyVIiOeu2F7GKIaDCL8dNevJpclbCecAnx1pBl75VFP/EuIKS3zcHcDi8WRJZS+brPDjFF1LH7GtrnfHgNpSZhPe+EPAhZa8s+eT6nvOsoKIS9eiAZcdq1kyBcCJO1ewn7L7lYkD74VlJv91qsxFmy35e0OC9P+oYodR1dwE1639JQC064oWUrG/9TV4/r0Uxlk7po3ZSou0KbDdYd4TVJCdkfPCn7khEG7DZ1AxDUrEXWuHHCG3l207JypqXeShVp8Sn1/Fq9UsFxdhgnvAKFB4Rn4yXPQ66qiLjdeA7HIP6T1OyzVZ02O1Dc3n5kPMIXEXODzE+dg/SjCshYDlvgzF3DeMo4YR3A04gF6X5pNpi15hlPiVrOTIytO8JrkhLdTupdBN4nhyDN5LBMwwudVsf+v3DzfPldMU44wrOPsFM40loF5v68yh0WsiPlhI2nhAXcWe6kGV2+KbsqzTNOWA49fgakI7LfzcgXuNP4BQWZcx4tGKtE2HhKaCc3LPuQdPoy3oxH2DjDsgXXHeE1SQkdFH22QZDvKQuQT0VwnOcgNqu/G30DNRTjhPcyW5NO8hg7N4eDsPgGU+kNnHr2OtrJGjxLQ8ZTYgrmd0oNHi55qCcwx+Ro7K16Zu64ccJypL8gJ3Z68xO4yWFNOqix8ZTQr9MeTr6sHJCzDK6Zw/IJ5ciX9Jkhik2cCMjYOGHtdwnj30qnr0AtKFm9mPGUCMSwBaM7hFsIXqCp/+cIc94bAgJc/avMO7DGcuAIy3H+VyUuCHMR6Py1pLdRqPgfRzX/EU48A4q2h4lPXsX45Wp2d3BPBP4GFfyUGGtGJtsAAAAASUVORK5CYII=", Oo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALgAAAACGrrTDAAAC90lEQVRYCe1ZPW8TQRCd2T2nsI2TQCKUBuLwIVEQBIJAS4EQ/AAKkKCjS0WFRANBQMlviESVGpGKBglchAKJFHzIuQiUBIISJzix4nh3mEMZ30UWxnZsZU/yStaMn2f23u097Y7nENo8DtDCgLVb87umVcmRDTz8YxfW4hevxbx/phEgAlEyGpCETdyIAnvw1R5y9yU1doS9dCX/BgBblwbSTFGPjDey3CnjTyLRCYlVGh6uY3Y6bfLjQHhTcEB4VdTZRxmau2gNPBecgH55hDDGmusRsFmLhJuN59AoX/RMNd7AYOAjwFELdKmKA37e8fs4PsQRF2MnidgRrtEub0pPkMAPH099DzUu1I8If0WFE2joYBXRiVzgMz6lDH0SnBR8CXwPErME5buCW5Yfpkx+CwiqGva0d2ENj8xIULM2TYuDZEo/o3lJjUPLmF2KYq36NSvc6kSdyMvQt+PWmjsyN59Iv50mDFA5RkQPhDB1dwlZig5apyWhgJYswFTk/ledJlzAkQ9M9kaEMG91Do9emu83YE4LRQVYdpowgR0jA9NC2CB0awlZjI5ZpyVhAbe5tilE7r7gNOEiDr9msv0RwhD/8jJ6N/vtp2j+CljzMuSBC05LQoPlMhkSVcIIPbGTROwIOy0JDzLvUBfPiyQqoLadJryCh9aZ7HshHFinCfeSf65iaEIIK6QVpwlzE4UbLXRdCPPJ1y1+ZDE6Zp2WBHKPTSHcl7vn3rPbf/PXcHiOyT4TwoGN3cERO8I1GjbWXk1V/JPRx1DPRw1LO3VrvbC/v2XIv2ZMWN8mNL0tYNbvI//stoFTMoHWlOdGd26A/KGSgcuCcwO8VEOYyD6WgIaswaDIDj7/HcbSU95Xqw1t7q7f5iSfF+kW23sygbE4yX6uDDTK8S8Et7a7D8tadM6yJHAWkcIiuclr8fEZbD0NDX4h85VfaGgJJqVXA9+CWkS0HwVnGXwPfAJVRDQhTrDM70PaOzrd0I7dttYl3F6B1c72B2uH9rWxT5BBAAAAAElFTkSuQmCC", No = { class: "toolbar-wrap" }, Bo = {
|
|
3056
|
+
key: 7,
|
|
3057
|
+
class: "coordinate-display"
|
|
3058
|
+
}, Yo = { class: "toolbar-box" }, Go = ["src"], Zo = ["data-tip", "aria-label"], Qo = ["src"], Fo = ["src"], Po = ["src"], Wo = ["src"], Jo = ["src"], zo = ["src"], jo = ["src"], Ko = ["src"], Uo = ["src"], Vo = ["src"], Xo = /* @__PURE__ */ pe({
|
|
3059
|
+
__name: "MapToolbar",
|
|
3060
|
+
props: {
|
|
3061
|
+
/** MapView 实例 */
|
|
3062
|
+
view: { type: Object, required: !0 },
|
|
3063
|
+
/**
|
|
3064
|
+
* 绘图图层(由 ArcgisMap 注入);测量等工具自建图层,此处保留以兼容既有接入方式。
|
|
3065
|
+
*/
|
|
3066
|
+
sketchLayer: { type: Object, required: !0 },
|
|
3067
|
+
/**
|
|
3068
|
+
* 图层管理 / 业务卷帘 / 地图标注 / 条件查询识别的业务图层 id 前缀,需与 loadBusinessLayers 的 idPrefix 一致。
|
|
3069
|
+
*/
|
|
3070
|
+
layerIdPrefix: { type: String, default: he },
|
|
3071
|
+
/**
|
|
3072
|
+
* 白名单:仅显示这些工具。不传则显示全部(再减去 hiddenTools)。
|
|
3073
|
+
*/
|
|
3074
|
+
tools: {
|
|
3075
|
+
type: Array,
|
|
3076
|
+
default: void 0
|
|
3077
|
+
},
|
|
3078
|
+
/**
|
|
3079
|
+
* 黑名单:从默认全量中隐藏。与 tools 同时传时以 tools 为准。
|
|
3080
|
+
*/
|
|
3081
|
+
hiddenTools: {
|
|
3082
|
+
type: Array,
|
|
3083
|
+
default: () => []
|
|
3084
|
+
},
|
|
3085
|
+
/** 是否显示底部经纬度条,默认 true */
|
|
3086
|
+
showCoordinate: { type: Boolean, default: !0 },
|
|
3087
|
+
/**
|
|
3088
|
+
* 全图定位中心 [经度, 纬度]。传入后点击全图会同时回到该中心与 minZoom。
|
|
3089
|
+
* 若同时传入 homeExtent,优先使用 homeExtent(与平移边界一致)。
|
|
3090
|
+
*/
|
|
3091
|
+
homeCenter: {
|
|
3092
|
+
type: Array,
|
|
3093
|
+
default: void 0
|
|
3094
|
+
},
|
|
3095
|
+
/**
|
|
3096
|
+
* 全图经纬度范围。传入后点击全图走 goToFullExtent(minZoom + 范围中心)。
|
|
3097
|
+
*/
|
|
3098
|
+
homeExtent: {
|
|
3099
|
+
type: Object,
|
|
3100
|
+
default: null
|
|
3101
|
+
},
|
|
3102
|
+
/**
|
|
3103
|
+
* 为 true 时全图点击只抛 fullExtent,由业务侧自行完成定位。
|
|
3104
|
+
*/
|
|
3105
|
+
delegateFullExtent: { type: Boolean, default: !1 },
|
|
3106
|
+
/** 坐标定位面板的动态坐标系配置;不传则走内置默认项 */
|
|
3107
|
+
coordinateSystemConfig: {
|
|
3108
|
+
type: Object,
|
|
3109
|
+
default: null
|
|
3110
|
+
}
|
|
3111
|
+
},
|
|
3112
|
+
emits: ["layerManage", "conditionQuery", "swipeCompare", "fullExtent"],
|
|
3113
|
+
setup(e, { expose: t, emit: l }) {
|
|
3114
|
+
const n = e, u = l, d = () => ge(n.view), b = T(null), r = T(null), s = T(null);
|
|
3115
|
+
let A = null;
|
|
3116
|
+
const o = T(null), c = T(!1), D = ee(() => new Set(n.hiddenTools ?? [])), y = (h) => n.tools && n.tools.length > 0 ? n.tools.includes(h) : !D.value.has(h), p = (h) => h === null ? "--" : h.toFixed(6), M = () => {
|
|
3117
|
+
o.value = null;
|
|
3118
|
+
}, B = (h) => {
|
|
3119
|
+
if (o.value === h) {
|
|
3120
|
+
o.value = null;
|
|
3121
|
+
return;
|
|
3122
|
+
}
|
|
3123
|
+
o.value = h;
|
|
3124
|
+
}, L = () => {
|
|
3125
|
+
const h = o.value !== "layerManage";
|
|
3126
|
+
B("layerManage"), h && u("layerManage");
|
|
3127
|
+
}, P = () => {
|
|
3128
|
+
const h = o.value !== "layerSwipe";
|
|
3129
|
+
B("layerSwipe"), h && u("swipeCompare");
|
|
3130
|
+
}, H = () => {
|
|
3131
|
+
const h = o.value !== "conditionQuery";
|
|
3132
|
+
B("conditionQuery"), h && u("conditionQuery");
|
|
3133
|
+
}, I = () => {
|
|
3134
|
+
var h;
|
|
3135
|
+
(h = b.value) == null || h.destroySwipe();
|
|
3136
|
+
};
|
|
3137
|
+
t({
|
|
3138
|
+
destroySwipe: I
|
|
3139
|
+
});
|
|
3140
|
+
const W = () => {
|
|
3141
|
+
const h = d();
|
|
3142
|
+
h && (h.zoom += 1);
|
|
3143
|
+
}, R = () => {
|
|
3144
|
+
const h = d();
|
|
3145
|
+
h && (h.zoom -= 1);
|
|
3146
|
+
}, E = () => {
|
|
3147
|
+
if (u("fullExtent"), n.delegateFullExtent) return;
|
|
3148
|
+
const h = d();
|
|
3149
|
+
if (!h) return;
|
|
3150
|
+
const S = n.homeExtent;
|
|
3151
|
+
if (S && Number.isFinite(S.xmin) && Number.isFinite(S.ymin) && Number.isFinite(S.xmax) && Number.isFinite(S.ymax)) {
|
|
3152
|
+
Ll(h, S);
|
|
3153
|
+
return;
|
|
3154
|
+
}
|
|
3155
|
+
const Y = h.constraints.minZoom, F = n.homeCenter, G = Array.isArray(F) && F.length === 2 && Number.isFinite(F[0]) && Number.isFinite(F[1]);
|
|
3156
|
+
G && Y != null && Number.isFinite(Y) ? h.goTo({ center: F, zoom: Y }) : G ? h.goTo({ center: F }) : Y != null && Number.isFinite(Y) && h.goTo({ zoom: Y });
|
|
3157
|
+
}, J = () => {
|
|
3158
|
+
window.dispatchEvent(new Event("resize"));
|
|
3159
|
+
}, x = () => {
|
|
3160
|
+
c.value = !!document.fullscreenElement, J();
|
|
3161
|
+
}, w = async () => {
|
|
3162
|
+
try {
|
|
3163
|
+
if (document.fullscreenElement) {
|
|
3164
|
+
await document.exitFullscreen();
|
|
3165
|
+
return;
|
|
3166
|
+
}
|
|
3167
|
+
await document.documentElement.requestFullscreen();
|
|
3168
|
+
} catch (h) {
|
|
3169
|
+
console.error("切换整页全屏失败:", h);
|
|
3170
|
+
}
|
|
3171
|
+
}, z = () => {
|
|
3172
|
+
if (A == null || A.remove(), A = null, !n.showCoordinate) return;
|
|
3173
|
+
const h = d();
|
|
3174
|
+
A = h.on("pointer-move", (S) => {
|
|
3175
|
+
const Y = h.toMap({ x: S.x, y: S.y }), F = Y == null ? void 0 : Y.longitude, G = Y == null ? void 0 : Y.latitude;
|
|
3176
|
+
typeof F != "number" || typeof G != "number" || !Number.isFinite(F) || !Number.isFinite(G) || (r.value = F, s.value = G);
|
|
3177
|
+
});
|
|
3178
|
+
};
|
|
3179
|
+
return ue(
|
|
3180
|
+
() => [n.tools, n.hiddenTools],
|
|
3181
|
+
() => {
|
|
3182
|
+
const h = o.value;
|
|
3183
|
+
h && !y(h) && (M(), h === "layerSwipe" && I());
|
|
3184
|
+
},
|
|
3185
|
+
{ deep: !0 }
|
|
3186
|
+
), ue(
|
|
3187
|
+
() => n.showCoordinate,
|
|
3188
|
+
() => {
|
|
3189
|
+
z();
|
|
3190
|
+
}
|
|
3191
|
+
), fe(() => {
|
|
3192
|
+
z(), document.addEventListener("fullscreenchange", x);
|
|
3193
|
+
}), me(() => {
|
|
3194
|
+
document.removeEventListener("fullscreenchange", x), A == null || A.remove(), A = null;
|
|
3195
|
+
}), (h, S) => (g(), N("div", No, [
|
|
3196
|
+
y("coordinateLocate") && o.value === "coordinateLocate" ? (g(), re(Na, {
|
|
3197
|
+
key: 0,
|
|
3198
|
+
view: e.view,
|
|
3199
|
+
"coordinate-system-config": e.coordinateSystemConfig,
|
|
3200
|
+
onClose: M
|
|
3201
|
+
}, null, 8, ["view", "coordinate-system-config"])) : _("", !0),
|
|
3202
|
+
y("distanceMeasure") && o.value === "distanceMeasure" ? (g(), re(Ja, {
|
|
3203
|
+
key: 1,
|
|
3204
|
+
view: e.view,
|
|
3205
|
+
onClose: M
|
|
3206
|
+
}, null, 8, ["view"])) : _("", !0),
|
|
3207
|
+
y("areaMeasure") && o.value === "areaMeasure" ? (g(), re(_a, {
|
|
3208
|
+
key: 2,
|
|
3209
|
+
view: e.view,
|
|
3210
|
+
onClose: M
|
|
3211
|
+
}, null, 8, ["view"])) : _("", !0),
|
|
3212
|
+
y("layerManage") && o.value === "layerManage" ? (g(), re(En, {
|
|
3213
|
+
key: 3,
|
|
3214
|
+
view: e.view,
|
|
3215
|
+
"id-prefix": e.layerIdPrefix,
|
|
3216
|
+
onClose: M
|
|
3217
|
+
}, null, 8, ["view", "id-prefix"])) : _("", !0),
|
|
3218
|
+
y("layerSwipe") ? (g(), re(Gn, {
|
|
3219
|
+
key: 4,
|
|
3220
|
+
ref_key: "layerSwipeRef",
|
|
3221
|
+
ref: b,
|
|
3222
|
+
view: e.view,
|
|
3223
|
+
"id-prefix": e.layerIdPrefix,
|
|
3224
|
+
visible: o.value === "layerSwipe",
|
|
3225
|
+
onClose: M
|
|
3226
|
+
}, null, 8, ["view", "id-prefix", "visible"])) : _("", !0),
|
|
3227
|
+
y("mapLabel") && o.value === "mapLabel" ? (g(), re($n, {
|
|
3228
|
+
key: 5,
|
|
3229
|
+
view: e.view,
|
|
3230
|
+
"id-prefix": e.layerIdPrefix,
|
|
3231
|
+
onClose: M
|
|
3232
|
+
}, null, 8, ["view", "id-prefix"])) : _("", !0),
|
|
3233
|
+
y("conditionQuery") && o.value === "conditionQuery" ? (g(), re(So, {
|
|
3234
|
+
key: 6,
|
|
3235
|
+
view: e.view,
|
|
3236
|
+
"id-prefix": e.layerIdPrefix,
|
|
3237
|
+
onClose: M
|
|
3238
|
+
}, null, 8, ["view", "id-prefix"])) : _("", !0),
|
|
3239
|
+
e.showCoordinate ? (g(), N("div", Bo, [
|
|
3240
|
+
a("span", null, "经度:" + U(p(r.value)), 1),
|
|
3241
|
+
a("span", null, "纬度:" + U(p(s.value)), 1)
|
|
3242
|
+
])) : _("", !0),
|
|
3243
|
+
a("div", Yo, [
|
|
3244
|
+
y("fullExtent") ? (g(), N("button", {
|
|
3245
|
+
key: 0,
|
|
3246
|
+
type: "button",
|
|
3247
|
+
"data-tip": "全图",
|
|
3248
|
+
"aria-label": "全图",
|
|
3249
|
+
onClick: E
|
|
3250
|
+
}, [
|
|
3251
|
+
a("img", {
|
|
3252
|
+
src: se(Io),
|
|
3253
|
+
alt: "",
|
|
3254
|
+
width: "20",
|
|
3255
|
+
height: "20"
|
|
3256
|
+
}, null, 8, Go)
|
|
3257
|
+
])) : _("", !0),
|
|
3258
|
+
y("fullscreen") ? (g(), N("button", {
|
|
3259
|
+
key: 1,
|
|
3260
|
+
type: "button",
|
|
3261
|
+
"data-tip": c.value ? "退出全屏" : "全屏",
|
|
3262
|
+
"aria-label": c.value ? "退出全屏" : "全屏",
|
|
3263
|
+
class: ae({ "is-active": c.value }),
|
|
3264
|
+
onClick: w
|
|
3265
|
+
}, [
|
|
3266
|
+
a("img", {
|
|
3267
|
+
src: se(Eo),
|
|
3268
|
+
alt: "",
|
|
3269
|
+
width: "20",
|
|
3270
|
+
height: "20"
|
|
3271
|
+
}, null, 8, Qo)
|
|
3272
|
+
], 10, Zo)) : _("", !0),
|
|
3273
|
+
y("zoomIn") ? (g(), N("button", {
|
|
3274
|
+
key: 2,
|
|
3275
|
+
type: "button",
|
|
3276
|
+
"data-tip": "放大",
|
|
3277
|
+
"aria-label": "放大",
|
|
3278
|
+
onClick: W
|
|
3279
|
+
}, [
|
|
3280
|
+
a("img", {
|
|
3281
|
+
src: se(Lo),
|
|
3282
|
+
alt: "",
|
|
3283
|
+
width: "20",
|
|
3284
|
+
height: "20"
|
|
3285
|
+
}, null, 8, Fo)
|
|
3286
|
+
])) : _("", !0),
|
|
3287
|
+
y("zoomOut") ? (g(), N("button", {
|
|
3288
|
+
key: 3,
|
|
3289
|
+
type: "button",
|
|
3290
|
+
"data-tip": "缩小",
|
|
3291
|
+
"aria-label": "缩小",
|
|
3292
|
+
onClick: R
|
|
3293
|
+
}, [
|
|
3294
|
+
a("img", {
|
|
3295
|
+
src: se(ko),
|
|
3296
|
+
alt: "",
|
|
3297
|
+
width: "20",
|
|
3298
|
+
height: "20"
|
|
3299
|
+
}, null, 8, Po)
|
|
3300
|
+
])) : _("", !0),
|
|
3301
|
+
y("coordinateLocate") ? (g(), N("button", {
|
|
3302
|
+
key: 4,
|
|
3303
|
+
type: "button",
|
|
3304
|
+
"data-tip": "坐标定位",
|
|
3305
|
+
"aria-label": "坐标定位",
|
|
3306
|
+
class: ae({ "is-active": o.value === "coordinateLocate" }),
|
|
3307
|
+
onClick: S[0] || (S[0] = (Y) => B("coordinateLocate"))
|
|
3308
|
+
}, [
|
|
3309
|
+
a("img", {
|
|
3310
|
+
src: se(xo),
|
|
3311
|
+
alt: "",
|
|
3312
|
+
width: "20",
|
|
3313
|
+
height: "20"
|
|
3314
|
+
}, null, 8, Wo)
|
|
3315
|
+
], 2)) : _("", !0),
|
|
3316
|
+
y("distanceMeasure") ? (g(), N("button", {
|
|
3317
|
+
key: 5,
|
|
3318
|
+
type: "button",
|
|
3319
|
+
"data-tip": "距离测量",
|
|
3320
|
+
"aria-label": "距离测量",
|
|
3321
|
+
class: ae({ "is-active": o.value === "distanceMeasure" }),
|
|
3322
|
+
onClick: S[1] || (S[1] = (Y) => B("distanceMeasure"))
|
|
3323
|
+
}, [
|
|
3324
|
+
a("img", {
|
|
3325
|
+
src: se(Co),
|
|
3326
|
+
alt: "",
|
|
3327
|
+
width: "20",
|
|
3328
|
+
height: "20"
|
|
3329
|
+
}, null, 8, Jo)
|
|
3330
|
+
], 2)) : _("", !0),
|
|
3331
|
+
y("areaMeasure") ? (g(), N("button", {
|
|
3332
|
+
key: 6,
|
|
3333
|
+
type: "button",
|
|
3334
|
+
"data-tip": "面积测量",
|
|
3335
|
+
"aria-label": "面积测量",
|
|
3336
|
+
class: ae({ "is-active": o.value === "areaMeasure" }),
|
|
3337
|
+
onClick: S[2] || (S[2] = (Y) => B("areaMeasure"))
|
|
3338
|
+
}, [
|
|
3339
|
+
a("img", {
|
|
3340
|
+
src: se(Mo),
|
|
3341
|
+
alt: "",
|
|
3342
|
+
width: "20",
|
|
3343
|
+
height: "20"
|
|
3344
|
+
}, null, 8, zo)
|
|
3345
|
+
], 2)) : _("", !0),
|
|
3346
|
+
y("layerManage") ? (g(), N("button", {
|
|
3347
|
+
key: 7,
|
|
3348
|
+
type: "button",
|
|
3349
|
+
"data-tip": "图层管理",
|
|
3350
|
+
"aria-label": "图层管理",
|
|
3351
|
+
class: ae({ "is-active": o.value === "layerManage" }),
|
|
3352
|
+
onClick: L
|
|
3353
|
+
}, [
|
|
3354
|
+
a("img", {
|
|
3355
|
+
src: se(To),
|
|
3356
|
+
alt: "",
|
|
3357
|
+
width: "20",
|
|
3358
|
+
height: "20"
|
|
3359
|
+
}, null, 8, jo)
|
|
3360
|
+
], 2)) : _("", !0),
|
|
3361
|
+
y("layerSwipe") ? (g(), N("button", {
|
|
3362
|
+
key: 8,
|
|
3363
|
+
type: "button",
|
|
3364
|
+
"data-tip": "卷帘对比",
|
|
3365
|
+
"aria-label": "卷帘对比",
|
|
3366
|
+
class: ae({ "is-active": o.value === "layerSwipe" }),
|
|
3367
|
+
onClick: P
|
|
3368
|
+
}, [
|
|
3369
|
+
a("img", {
|
|
3370
|
+
src: se(Oo),
|
|
3371
|
+
alt: "",
|
|
3372
|
+
width: "20",
|
|
3373
|
+
height: "20"
|
|
3374
|
+
}, null, 8, Ko)
|
|
3375
|
+
], 2)) : _("", !0),
|
|
3376
|
+
y("mapLabel") ? (g(), N("button", {
|
|
3377
|
+
key: 9,
|
|
3378
|
+
type: "button",
|
|
3379
|
+
"data-tip": "地图标注",
|
|
3380
|
+
"aria-label": "地图标注",
|
|
3381
|
+
class: ae({ "is-active": o.value === "mapLabel" }),
|
|
3382
|
+
onClick: S[3] || (S[3] = (Y) => B("mapLabel"))
|
|
3383
|
+
}, [
|
|
3384
|
+
a("img", {
|
|
3385
|
+
src: se(Ro),
|
|
3386
|
+
alt: "",
|
|
3387
|
+
width: "20",
|
|
3388
|
+
height: "20"
|
|
3389
|
+
}, null, 8, Uo)
|
|
3390
|
+
], 2)) : _("", !0),
|
|
3391
|
+
y("conditionQuery") ? (g(), N("button", {
|
|
3392
|
+
key: 10,
|
|
3393
|
+
type: "button",
|
|
3394
|
+
"data-tip": "条件查询",
|
|
3395
|
+
"aria-label": "条件查询",
|
|
3396
|
+
class: ae({ "is-active": o.value === "conditionQuery" }),
|
|
3397
|
+
onClick: H
|
|
3398
|
+
}, [
|
|
3399
|
+
a("img", {
|
|
3400
|
+
src: se(Do),
|
|
3401
|
+
alt: "",
|
|
3402
|
+
width: "20",
|
|
3403
|
+
height: "20"
|
|
3404
|
+
}, null, 8, Vo)
|
|
3405
|
+
], 2)) : _("", !0),
|
|
3406
|
+
bt(h.$slots, "extra", {}, void 0, !0)
|
|
3407
|
+
])
|
|
3408
|
+
]));
|
|
3409
|
+
}
|
|
3410
|
+
}), Ho = /* @__PURE__ */ ve(Xo, [["__scopeId", "data-v-dedd3217"]]), qo = "data:image/png;base64,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", _o = { class: "swipe-compare-wrap" }, $o = { class: "swipe-compare-form" }, es = ["aria-expanded"], ts = {
|
|
3411
|
+
key: 0,
|
|
3412
|
+
class: "swipe-unit-options",
|
|
3413
|
+
role: "listbox"
|
|
3414
|
+
}, ls = ["aria-selected", "onClick"], as = {
|
|
3415
|
+
key: 0,
|
|
3416
|
+
class: "swipe-compare-message"
|
|
3417
|
+
}, ns = /* @__PURE__ */ pe({
|
|
3418
|
+
__name: "SwipeCompare",
|
|
3419
|
+
props: {
|
|
3420
|
+
/** MapView 实例 */
|
|
3421
|
+
view: { type: Object, required: !0 },
|
|
3422
|
+
/** 底图密钥;未传时尝试 inject(BASEMAP_KEYS_KEY) */
|
|
3423
|
+
keys: { type: Object, default: null }
|
|
3424
|
+
},
|
|
3425
|
+
setup(e, { expose: t }) {
|
|
3426
|
+
const l = e, n = () => ge(l.view), u = lt(() => l.keys), d = T(!1), b = T(!1), r = T(null), s = T(""), A = T(null), o = T([]), c = Se(null), D = Se(null), y = ee(() => c.value !== null);
|
|
3427
|
+
let p = null, M = null;
|
|
3428
|
+
const B = ee(() => {
|
|
3429
|
+
var w;
|
|
3430
|
+
return A.value ? ((w = o.value.find((z) => z.value === A.value)) == null ? void 0 : w.label) ?? "请选择图层" : "请选择图层";
|
|
3431
|
+
}), L = () => {
|
|
3432
|
+
var z, h, S;
|
|
3433
|
+
const w = kt(((h = (z = n()) == null ? void 0 : z.map) == null ? void 0 : h.basemap) ?? null);
|
|
3434
|
+
o.value = Je.filter((Y) => Y.value !== w), (!A.value || !o.value.some((Y) => Y.value === A.value)) && (A.value = ((S = o.value[0]) == null ? void 0 : S.value) ?? null);
|
|
3435
|
+
}, P = () => {
|
|
3436
|
+
const w = n(), z = c.value;
|
|
3437
|
+
z && w && (w.ui.remove(z), z.destroy()), c.value = null;
|
|
3438
|
+
const h = D.value;
|
|
3439
|
+
h && (w != null && w.map) && (w.map.remove(h), h.destroy()), D.value = null;
|
|
3440
|
+
}, H = () => {
|
|
3441
|
+
if (d.value) {
|
|
3442
|
+
I();
|
|
3443
|
+
return;
|
|
3444
|
+
}
|
|
3445
|
+
d.value = !0, L(), s.value = "";
|
|
3446
|
+
}, I = () => {
|
|
3447
|
+
P(), d.value = !1, W(), s.value = "";
|
|
3448
|
+
}, W = () => {
|
|
3449
|
+
b.value = !1;
|
|
3450
|
+
}, R = () => {
|
|
3451
|
+
b.value = !b.value;
|
|
3452
|
+
}, E = (w) => {
|
|
3453
|
+
A.value = w, W(), s.value = "";
|
|
3454
|
+
}, J = () => {
|
|
3455
|
+
var k, Z, m, i;
|
|
3456
|
+
W();
|
|
3457
|
+
const w = A.value;
|
|
3458
|
+
if (!w) {
|
|
3459
|
+
s.value = "请选择对比图层";
|
|
3460
|
+
return;
|
|
3461
|
+
}
|
|
3462
|
+
const z = Lt(w, u.value);
|
|
3463
|
+
if (z) {
|
|
3464
|
+
s.value = z.replace("无法切换", "无法应用卷帘");
|
|
3465
|
+
return;
|
|
3466
|
+
}
|
|
3467
|
+
const h = n(), S = h == null ? void 0 : h.map, Y = ((m = (Z = (k = S == null ? void 0 : S.basemap) == null ? void 0 : k.baseLayers) == null ? void 0 : Z.toArray) == null ? void 0 : m.call(Z)) ?? [];
|
|
3468
|
+
if (!h || !S || Y.length === 0) {
|
|
3469
|
+
s.value = "当前底图不可用,无法应用卷帘";
|
|
3470
|
+
return;
|
|
3471
|
+
}
|
|
3472
|
+
P(), Qt("basemap");
|
|
3473
|
+
const F = wl(w, u.value);
|
|
3474
|
+
F.id = `swipe-leading-${w}`, F.title = ((i = Je.find((v) => v.value === w)) == null ? void 0 : i.label) ?? F.title, S.add(F, 0), D.value = F;
|
|
3475
|
+
const G = new Et({
|
|
3476
|
+
view: h,
|
|
3477
|
+
leadingLayers: [F],
|
|
3478
|
+
trailingLayers: Y,
|
|
3479
|
+
position: 50
|
|
3480
|
+
});
|
|
3481
|
+
h.ui.add(G), c.value = G, s.value = "", d.value = !1;
|
|
3482
|
+
}, x = () => {
|
|
3483
|
+
P(), s.value = "", d.value = !1, W();
|
|
3484
|
+
};
|
|
3485
|
+
return fe(() => {
|
|
3486
|
+
M = ke(() => r.value, W), p = Zt("basemap", P);
|
|
3487
|
+
}), me(() => {
|
|
3488
|
+
M == null || M(), M = null, p == null || p(), p = null, P();
|
|
3489
|
+
}), t({
|
|
3490
|
+
destroySwipe: P
|
|
3491
|
+
}), (w, z) => (g(), N("div", _o, [
|
|
3492
|
+
d.value ? (g(), re(Ee, {
|
|
3493
|
+
key: 0,
|
|
3494
|
+
title: "卷帘分析",
|
|
3495
|
+
width: 300,
|
|
3496
|
+
anchor: "start",
|
|
3497
|
+
onClose: I
|
|
3498
|
+
}, {
|
|
3499
|
+
default: Ie(() => [
|
|
3500
|
+
a("div", $o, [
|
|
3501
|
+
z[1] || (z[1] = a("span", { class: "swipe-compare-label" }, "选择图层", -1)),
|
|
3502
|
+
a("div", {
|
|
3503
|
+
ref_key: "swipeSelectRef",
|
|
3504
|
+
ref: r,
|
|
3505
|
+
class: "swipe-unit-select"
|
|
3506
|
+
}, [
|
|
3507
|
+
a("button", {
|
|
3508
|
+
type: "button",
|
|
3509
|
+
class: ae(["swipe-unit-trigger", { "is-open": b.value }]),
|
|
3510
|
+
"aria-label": "卷帘对比图层",
|
|
3511
|
+
"aria-haspopup": "listbox",
|
|
3512
|
+
"aria-expanded": b.value,
|
|
3513
|
+
onClick: te(R, ["stop"]),
|
|
3514
|
+
onKeydown: Ae(W, ["esc"])
|
|
3515
|
+
}, [
|
|
3516
|
+
a("span", null, U(B.value), 1),
|
|
3517
|
+
z[0] || (z[0] = a("span", {
|
|
3518
|
+
class: "swipe-unit-arrow",
|
|
3519
|
+
"aria-hidden": "true"
|
|
3520
|
+
}, null, -1))
|
|
3521
|
+
], 42, es),
|
|
3522
|
+
b.value ? (g(), N("ul", ts, [
|
|
3523
|
+
(g(!0), N(ce, null, de(o.value, (h) => (g(), N("li", {
|
|
3524
|
+
key: h.value
|
|
3525
|
+
}, [
|
|
3526
|
+
a("button", {
|
|
3527
|
+
type: "button",
|
|
3528
|
+
role: "option",
|
|
3529
|
+
"aria-selected": A.value === h.value,
|
|
3530
|
+
onClick: te((S) => E(h.value), ["stop"])
|
|
3531
|
+
}, U(h.label), 9, ls)
|
|
3532
|
+
]))), 128))
|
|
3533
|
+
])) : _("", !0)
|
|
3534
|
+
], 512)
|
|
3535
|
+
]),
|
|
3536
|
+
a("div", { class: "swipe-compare-actions" }, [
|
|
3537
|
+
a("button", {
|
|
3538
|
+
type: "button",
|
|
3539
|
+
class: "swipe-compare-button is-primary",
|
|
3540
|
+
onClick: J
|
|
3541
|
+
}, " 应用卷帘 "),
|
|
3542
|
+
a("button", {
|
|
3543
|
+
type: "button",
|
|
3544
|
+
class: "swipe-compare-button is-muted",
|
|
3545
|
+
onClick: x
|
|
3546
|
+
}, " 取消应用 ")
|
|
3547
|
+
]),
|
|
3548
|
+
s.value ? (g(), N("p", as, U(s.value), 1)) : _("", !0)
|
|
3549
|
+
]),
|
|
3550
|
+
_: 1
|
|
3551
|
+
})) : _("", !0),
|
|
3552
|
+
a("button", {
|
|
177
3553
|
type: "button",
|
|
178
|
-
|
|
179
|
-
|
|
3554
|
+
class: ae(["swipe-compare-trigger", { "is-active": d.value || y.value }]),
|
|
3555
|
+
style: Ye({ backgroundImage: `url(${se(qo)})` }),
|
|
3556
|
+
"aria-label": "卷帘分析",
|
|
3557
|
+
onClick: H
|
|
3558
|
+
}, " 卷帘 ", 6)
|
|
180
3559
|
]));
|
|
181
3560
|
}
|
|
182
|
-
},
|
|
183
|
-
|
|
184
|
-
|
|
3561
|
+
}), os = /* @__PURE__ */ ve(ns, [["__scopeId", "data-v-b6e565eb"]]), Ps = [
|
|
3562
|
+
"fullExtent",
|
|
3563
|
+
"fullscreen",
|
|
3564
|
+
"zoomIn",
|
|
3565
|
+
"zoomOut",
|
|
3566
|
+
"coordinateLocate",
|
|
3567
|
+
"distanceMeasure",
|
|
3568
|
+
"areaMeasure",
|
|
3569
|
+
"layerManage",
|
|
3570
|
+
"layerSwipe",
|
|
3571
|
+
"mapLabel",
|
|
3572
|
+
"conditionQuery"
|
|
3573
|
+
], Ws = {
|
|
3574
|
+
install(e) {
|
|
3575
|
+
e.component("ArcgisMap", Cl), e.component("BasemapSwitch", Pl), e.component("MapLegend", ba), e.component("MapScaleBar", Ia), e.component("MapToolbar", Ho), e.component("SwipeCompare", os);
|
|
185
3576
|
}
|
|
186
3577
|
};
|
|
187
3578
|
export {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
3579
|
+
Cl as ArcgisMap,
|
|
3580
|
+
Mt as BASEMAP_KEYS_KEY,
|
|
3581
|
+
Je as BASEMAP_OPTIONS,
|
|
3582
|
+
he as BUSINESS_LAYER_ID_PREFIX,
|
|
3583
|
+
Pl as BasemapSwitch,
|
|
3584
|
+
_l as CGCS2000_ALBERS_WKT,
|
|
3585
|
+
Ps as DEFAULT_TOOLBAR_TOOLS,
|
|
3586
|
+
ba as MapLegend,
|
|
3587
|
+
Ia as MapScaleBar,
|
|
3588
|
+
Ho as MapToolbar,
|
|
3589
|
+
ql as SYSTEM_COORDINATE_ALBERS_CODE,
|
|
3590
|
+
os as SwipeCompare,
|
|
3591
|
+
Hl as applyBusinessLayerLabels,
|
|
3592
|
+
kl as applyPanBoundsConstraint,
|
|
3593
|
+
zl as buildLabelExpression,
|
|
3594
|
+
jl as buildLabelExpressionFromTemplate,
|
|
3595
|
+
la as checkSpatialReferenceMatch,
|
|
3596
|
+
Qs as clearPendingBusinessLayers,
|
|
3597
|
+
Ul as createBusinessLabelClass,
|
|
3598
|
+
Ws as default,
|
|
3599
|
+
Fs as destroyAllSwipes,
|
|
3600
|
+
Qt as destroyOtherSwipe,
|
|
3601
|
+
aa as formatSpatialReferenceLabel,
|
|
3602
|
+
en as getPendingBusinessLayerOptions,
|
|
3603
|
+
tn as getPendingBusinessLayers,
|
|
3604
|
+
He as getSpatialReferenceMismatch,
|
|
3605
|
+
Bs as getSpatialReferenceMismatches,
|
|
3606
|
+
Ll as goToFullExtent,
|
|
3607
|
+
va as loadBusinessLayers,
|
|
3608
|
+
an as materializePendingBusinessLayer,
|
|
3609
|
+
Ot as mergeOutFields,
|
|
3610
|
+
$l as normalizeWkt,
|
|
3611
|
+
Il as provideBasemapKeys,
|
|
3612
|
+
ht as registerPortalToken,
|
|
3613
|
+
fa as reorderBusinessLayers,
|
|
3614
|
+
ea as resolveExpectedSpatialReference,
|
|
3615
|
+
Kl as resolveLabelExpression,
|
|
3616
|
+
ia as resolveLayerVisible,
|
|
3617
|
+
Zs as setPendingBusinessLayers,
|
|
3618
|
+
Yt as shouldUseMapImageLayer,
|
|
3619
|
+
Gs as startPortalTokenRenewal,
|
|
3620
|
+
ln as subscribePendingBusinessLayers,
|
|
3621
|
+
na as subscribeSpatialReferenceMismatches,
|
|
3622
|
+
Qe as toBusinessLayerId,
|
|
3623
|
+
Ys as toFeatureLayerProps,
|
|
3624
|
+
Gt as toLayerProps,
|
|
3625
|
+
lt as useBasemapKeys
|
|
192
3626
|
};
|