zhihao-ui 1.3.37 → 1.3.39

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.
@@ -1,2172 +0,0 @@
1
- import { defineComponent as Ye, openBlock as Be, createElementBlock as qe, createElementVNode as De, ref as I, computed as Te, h as ne, createVNode as Ae, render as Pt, reactive as St, onMounted as Nt, onUnmounted as Vt } from "vue";
2
- import { S as $t, M as Ue, T as me, X as we, p as ee, V as zt, q as Ot, t as Rt, h as lt, r as He, s as Zt, u as ge, F as j, v as X, O as ce, P as le, w as ke, x as Ne, L as Pe, y as Gt, z as Ie, A as ie, B as ye, C as de, D as ve, i as Dt, G as Ve, H as At, I as Oe, J as Wt, K as Yt, N as st, Q as Se, R as We, U as et, W as Bt, Y as qt, Z as Ht } from "./vendor-D2mv9LHk.js";
3
- import { _ as Xe } from "./Button-CGndQwez.js";
4
- import { w as Xt } from "./utils-D2wHR1YB.js";
5
- const jt = { id: "scale-line-container" }, Qt = /* @__PURE__ */ Ye({
6
- __name: "scaleLine",
7
- setup(e, { expose: r }) {
8
- return r({
9
- setScaleLine: (s, i) => {
10
- i || (i = "metric");
11
- const o = new $t({
12
- units: i
13
- }), u = document.getElementById("scale-line-container");
14
- u && (o.setTarget(u), s.addControl(o));
15
- }
16
- }), (s, i) => (Be(), qe("div", jt));
17
- }
18
- }), Jt = /* @__PURE__ */ Xe(Qt, [["__scopeId", "data-v-2bc5dee8"]]), Kt = { class: "zoom" }, _t = /* @__PURE__ */ Ye({
19
- __name: "zoomControl",
20
- props: {
21
- mapInstance: {
22
- type: Object,
23
- default: () => null
24
- }
25
- },
26
- setup(e) {
27
- const r = e;
28
- console.log("props", r);
29
- const l = () => {
30
- console.log("props");
31
- const { setZoom: i, getZoom: o, getInstall: u } = r.mapInstance.methods;
32
- if (!u()) return;
33
- const t = o();
34
- t && i(t + 1);
35
- }, s = () => {
36
- const { setZoom: i, getZoom: o, getInstall: u } = r.mapInstance.methods;
37
- if (!u()) return;
38
- const t = o();
39
- t && i(t - 1);
40
- };
41
- return (i, o) => (Be(), qe("div", Kt, [
42
- De("div", {
43
- class: "button big-button",
44
- onClick: l
45
- }, " + "),
46
- De("div", {
47
- class: "button small-button",
48
- onClick: s
49
- }, " - ")
50
- ]));
51
- }
52
- }), Ut = /* @__PURE__ */ Xe(_t, [["__scopeId", "data-v-c39c3075"]]), Fe = "a6e8f78974f2581f2ca00485b40c948f", te = {
53
- // 地图默认层级
54
- default: 13,
55
- // 地图缩放最小层级
56
- min: 3,
57
- // 地图缩放最大层级
58
- max: 18,
59
- // 船形图标最小渲染层级
60
- shipModelMin: 13,
61
- // 船形图标最小渲染层级
62
- shipTriggleMin: 16,
63
- // 船形图标最大渲染层级
64
- shipModelMax: 18,
65
- //根据原系统canvas图片转换svg长宽比例计算缩放值
66
- scaleNum: 0.555
67
- }, K = {
68
- // 经纬度 源数据 地理坐标 WGS84
69
- data: "EPSG:4326",
70
- // 墨卡托投影坐标 渲染坐标
71
- mercator: "EPSG:3857"
72
- }, It = [114.84, 30.52], it = "https://static.zhihaoscm.cn/", $e = 2003750834e-2;
73
- var ue = ((e) => (e.vectorTile = `https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${Fe}`, e.vectorTileMark = `https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${Fe}`, e.satelliteImgTile = `https://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${Fe}`, e.satelliteImgTileMark = `https://t0.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${Fe}`, e.greenTile = `${it}/map/tile/{z}/{x}/{y}.png`, e))(ue || {}), xe = /* @__PURE__ */ ((e) => (e[e.M = 1] = "M", e[e.KM = 2] = "KM", e[e.NM = 3] = "NM", e))(xe || {});
74
- function eo() {
75
- const e = I(), r = () => e.value, l = () => r().getView(), s = () => {
76
- var y;
77
- return (y = l()) == null ? void 0 : y.getZoom();
78
- }, i = (y) => {
79
- var k;
80
- (k = l()) == null || k.setZoom(y);
81
- }, o = (y, k) => {
82
- var P;
83
- (P = l()) == null || P.setCenter(ee([y, k]));
84
- }, u = () => {
85
- var k;
86
- const y = (k = l()) == null ? void 0 : k.getCenter();
87
- return Rt(y);
88
- }, h = () => {
89
- var y;
90
- return (y = r()) == null ? void 0 : y.getSize();
91
- }, t = new Ue(), n = (y, k) => {
92
- m(k);
93
- const P = {
94
- zoom: k.zoom,
95
- center: ee(k.center),
96
- minZoom: te.min,
97
- maxZoom: te.max,
98
- constrainResolution: !0,
99
- enableRotation: !1,
100
- multiWorld: !0
101
- };
102
- let w = {
103
- target: y,
104
- controls: Ot({
105
- zoom: !1
106
- }),
107
- layers: [
108
- t.get("vectorTile"),
109
- t.get("vectorTileMark"),
110
- t.get("satelliteImgTile"),
111
- t.get("satelliteImgTileMark")
112
- ],
113
- view: new zt(P)
114
- };
115
- const g = new Ue(w);
116
- e.value = g;
117
- }, m = (y) => {
118
- t.set("vectorTile", new me({
119
- source: new we({ url: ue.vectorTile }),
120
- visible: y.layerType === "vector",
121
- zIndex: 0,
122
- preload: 1,
123
- className: "vector"
124
- })), t.set("vectorTileMark", new me({
125
- source: new we({ url: ue.vectorTileMark }),
126
- visible: y.layerType === "vector",
127
- zIndex: 1,
128
- preload: 1,
129
- className: "vector"
130
- })), t.set("satelliteImgTile", new me({
131
- source: new we({ url: ue.satelliteImgTile }),
132
- visible: y.layerType === "satellite",
133
- zIndex: 0,
134
- preload: 1,
135
- className: "satellite"
136
- })), t.set("satelliteImgTileMark", new me({
137
- source: new we({ url: ue.satelliteImgTileMark }),
138
- visible: y.layerType === "satellite",
139
- zIndex: 1,
140
- preload: 1,
141
- className: "satellite"
142
- })), t.set("greenMark", new me({
143
- source: new we({ url: ue.greenTile }),
144
- visible: y.showGreenLayer,
145
- zIndex: 2,
146
- className: "greenTile"
147
- }));
148
- };
149
- return {
150
- getInstall: r,
151
- getView: l,
152
- getZoom: s,
153
- setZoom: i,
154
- setCenter: o,
155
- getCenter: u,
156
- getSize: h,
157
- initMap: n,
158
- setBaseLayerMap: m
159
- };
160
- }
161
- const je = function(e, r) {
162
- const l = Number(r) / 6e5;
163
- return [Number(e) / 6e5, l];
164
- }, to = (e, r) => {
165
- const l = ee(e), s = r * 1e3, i = [
166
- l[0] - s,
167
- l[1] - s,
168
- l[0] + s,
169
- l[1] + s
170
- ], o = Zt(i, K.mercator, K.data);
171
- return {
172
- leftTopPoint: { lng: o[0], lat: o[3] },
173
- rightTopPoint: { lng: o[2], lat: o[3] },
174
- rightBottomPoint: { lng: o[2], lat: o[1] },
175
- leftBottomPoint: { lng: o[0], lat: o[1] }
176
- };
177
- }, oo = function(e, r) {
178
- const s = He(e);
179
- let i = "";
180
- switch (console.log(r, xe), r) {
181
- case xe.M:
182
- i = Math.round(s * 100) / 100 + " m";
183
- break;
184
- case xe.KM:
185
- i = Math.round(s / 1e3 * 100) / 100 + " km";
186
- break;
187
- case xe.NM:
188
- i = (Math.round(s / 1e3 * 100) / 100 / 1.852).toFixed(2) + " nm";
189
- break;
190
- }
191
- return i;
192
- };
193
- function ro(e) {
194
- const r = e[0] * $e / 180;
195
- let l = Math.log(Math.tan((90 + e[1]) * Math.PI / 360)) / (Math.PI / 180);
196
- return l = l * $e / 180, [r, l];
197
- }
198
- function fe(e = "") {
199
- let r = e.replace(/&?/g, "&");
200
- return r = r.replace(/&#x([0-9a-fA-F]+);?/g, (l, s) => {
201
- const i = parseInt(s, 16);
202
- return String.fromCodePoint(i);
203
- }), r;
204
- }
205
- const tt = (e) => {
206
- const r = new ge({
207
- font: "Normal 14px map-iconfont",
208
- text: fe(e),
209
- fill: new j({ color: "#fff" }),
210
- offsetY: -14
211
- });
212
- return new X({
213
- text: r,
214
- zIndex: 100
215
- });
216
- }, ot = (e, r = "lonlat") => {
217
- const l = { lon: 0, lat: 0 }, s = e[0] / $e * 180;
218
- let i = e[1] / $e * 180;
219
- return i = 180 / Math.PI * (2 * Math.atan(Math.exp(i * Math.PI / 180)) - Math.PI / 2), l.lon = s, l.lat = i, r === "lonlat" ? l : [s, i];
220
- }, no = (e) => {
221
- const r = lt.duration(e, "minutes"), l = Math.floor(r.asDays()), s = r.hours(), i = r.minutes();
222
- let o = `${String(i).padStart(2, "0")}分`;
223
- return s !== 0 && (o = `${String(s).padStart(2, "0")}时${o}`), l !== 0 && (o = `${String(l).padStart(2, "0")}天${o}`), o;
224
- }, lo = (e, r) => {
225
- let l = null;
226
- const s = async (m) => {
227
- if (!e || (console.log("vehicleInfo", m), !(m != null && m.lon && (m != null && m.lat)))) return;
228
- const y = Math.abs(Number(m.lon)) > 180 ? je(m.lon, m.lat) : [m.lon, m.lat];
229
- i(m, ee(y));
230
- const k = e == null ? void 0 : e.getView(), P = new le(y);
231
- k.setCenter(ke(P.getCoordinates(), K.data, K.mercator));
232
- }, i = (m, y) => {
233
- const k = `${it}map/car-icon.gif`;
234
- l || (l = new ce({
235
- element: document.createElement("div"),
236
- positioning: "center-center",
237
- stopEvent: !1
238
- // 允许交互事件穿透
239
- }), e.addOverlay(l));
240
- const P = l.getElement();
241
- P.style.backgroundImage = `url(${k})`, P.style.width = "80px", P.style.height = "80px";
242
- const w = (m == null ? void 0 : m.drc) || "";
243
- P.style.transform = `rotate(${w}deg)`, P.style.backgroundSize = "cover", l == null || l.setPosition(y);
244
- };
245
- return {
246
- location: s,
247
- remove: () => {
248
- const m = l == null ? void 0 : l.getElement();
249
- m && (m.innerHTML = "");
250
- },
251
- renderTrack: (m, y, k) => {
252
- r.render(m, y, k, "truck", 1e3);
253
- },
254
- setCenter: (m) => {
255
- r.setCenter(m);
256
- },
257
- closeTrack: () => {
258
- r.close();
259
- },
260
- playTrack: (m, y) => {
261
- r.play(m, y);
262
- }
263
- };
264
- };
265
- var ct = /* @__PURE__ */ ((e) => (e[e.发动机使用中 = 0] = "发动机使用中", e[e.锚泊 = 1] = "锚泊", e[e.未操作 = 2] = "未操作", e[e.操纵能力受限 = 3] = "操纵能力受限", e[e.吃水受限 = 4] = "吃水受限", e[e.系泊 = 5] = "系泊", e[e.搁浅 = 6] = "搁浅", e[e.从事捕捞 = 7] = "从事捕捞", e[e.航行中 = 8] = "航行中", e[e.留作将来修正导航状态 = 9] = "留作将来修正导航状态", e[e.高速船留用 = 10] = "高速船留用", e[e.机动船尾推作业 = 11] = "机动船尾推作业", e[e.机动船顶推或侧推作业 = 12] = "机动船顶推或侧推作业", e[e.飞翼船留用 = 13] = "飞翼船留用", e[e.现行的 = 14] = "现行的", e[e.未定义 = 15] = "未定义", e))(ct || {}), oe = /* @__PURE__ */ ((e) => (e.left = "left", e.right = "right", e.front = "front", e.up = "up", e.down = "down", e.back = "back", e))(oe || {});
266
- const so = (e) => {
267
- const r = /* @__PURE__ */ new Map(), l = {};
268
- let s = null;
269
- const i = "--";
270
- let o = null;
271
- const u = document.createElement("div"), h = new ce({
272
- element: u,
273
- positioning: "top-left",
274
- className: "track-label-popup"
275
- });
276
- let t, n, m, y, k, P = !1, w = Date.now(), g, S = 0, C = null, b = 20;
277
- const W = 8, A = [], q = (c) => {
278
- var d;
279
- for (A.unshift(c); A.length > W; ) {
280
- const v = A.pop(), M = r.get(v);
281
- M && ((d = M.getSource()) == null || d.clear(), e == null || e.removeLayer(M), r.delete(v), delete l[v]);
282
- }
283
- };
284
- let B = "";
285
- const R = ["#ff0000", "#00ff00", "#0079ff", "#ffa500", "#800080", "#008080", "#ffc0cb", "#800000", "#000080", "#808000"], Z = Ne(() => {
286
- if (s && l[s] && r.get(s).getVisible()) {
287
- console.log("reRenderTrackLine------------");
288
- const c = Dt(N(s, l[s]));
289
- re(s, c);
290
- }
291
- }, 300), N = (c, d) => {
292
- let v = [];
293
- const M = Math.max(1, Math.floor(d.length / b));
294
- return v = d.filter((E, O) => O % M === 0).map((E, O) => {
295
- if (Number(E.lon) > 180 || Number(E.lat) > 180) {
296
- const [$, D] = je(E.lon, E.lat);
297
- E.lon = $, E.lat = D;
298
- }
299
- return E.center = [E.lon, E.lat], E.centerPoint = ro(E.center), E.time = lt(E.createdAt).format("YYYY-MM-DD HH:mm:ss"), E.id = c, E.index = O, E;
300
- }), v;
301
- }, a = async (c, d, v, M = "ship", L = 200) => {
302
- if (!e || JSON.stringify(l[c]) === JSON.stringify(d) && s === c || (d = d == null ? void 0 : d.reverse(), h && M === "ship" && (e != null && e.getOverlays().getArray().includes(h) || e.addOverlay(h)), (d == null ? void 0 : d.length) < 2))
303
- return;
304
- q(c), s = c, l[c] = d, b = L;
305
- const E = Object.keys(l).findIndex((O) => O === c) || 0;
306
- B = v || R[E > 10 ? 10 : E], await p(), await Je(s);
307
- }, x = (c) => {
308
- const d = new de();
309
- return new ye({
310
- source: d,
311
- visible: !1,
312
- // 默认隐藏
313
- className: `track-layer-${c}`,
314
- renderBuffer: 1024
315
- // 增大渲染缓冲区
316
- });
317
- }, f = (c) => {
318
- r.forEach((d, v) => {
319
- var L;
320
- const M = v === c;
321
- d.getVisible() !== M && (d.setVisible(M), e.getLayers().getArray().includes(d) || e.addLayer(d), M || (L = d.getSource()) == null || L.clear());
322
- }), s = c;
323
- }, p = async () => {
324
- const c = s;
325
- if (!r.has(c)) {
326
- const E = x(c);
327
- r.set(c, E);
328
- }
329
- await f(c);
330
- const d = B || "", v = l[c] || [];
331
- if (!(v && v.length > 1)) return [];
332
- let M = [];
333
- M = N(c, v);
334
- const L = M.map((E) => E.centerPoint);
335
- M.length >= 2 && await T(c, L, d);
336
- }, T = (c, d, v) => {
337
- const M = new Pe(d), L = r.get(c).getSource(), E = L.getFeatureById(c);
338
- if (E)
339
- E.setGeometry(M), E.setId(c), E.setStyle(V(v)), C = E;
340
- else {
341
- const O = new ie({ geometry: M });
342
- O.setId(c), O.set("type", "line"), O.setStyle(V(v)), L.addFeature(O), C = O;
343
- }
344
- return C;
345
- }, V = (c) => new X({
346
- stroke: new ve({
347
- color: c,
348
- width: 2
349
- })
350
- }), G = (c, d, v) => {
351
- const M = c == null ? void 0 : c.get("trackId");
352
- if (c && M && d === "hover") {
353
- e.getTargetElement().style.cursor = M ? "pointer" : "";
354
- const L = c.get("data"), E = Q(L), O = v == null ? void 0 : v.coordinate;
355
- O && (u.querySelector(".popup-content"), u.innerHTML = E, h == null || h.setPosition(O));
356
- } else
357
- h && h.setPosition(void 0);
358
- }, Q = (c) => {
359
- if (!(c != null && c.time)) return;
360
- let d = "";
361
- return c != null && c.stayTime && (d = `
362
- <div class="item w-100">
363
- <div class="item-label">停泊时间约</div>
364
- <div class="item-item">${no(Number(c.stayTime))}</div>
365
- </div>
366
- `), `
367
- <div class="track-point-popup">
368
- <div class="item">
369
- <div class="item-label">状态</div>
370
- <div class="item-item">${c != null && c.sailStatus ? ct[c.sailStatus] : i}</div>
371
- </div>
372
- <div class="item">
373
- <div class="item-label">航速</div>
374
- <div class="item-item">${c.speed || i}</div>
375
- </div>
376
- <div class="item">
377
- <div class="item-label">艏向</div>
378
- <div class="item-item">${c.hdg || i}</div>
379
- </div>
380
- <div class="item">
381
- <div class="item-label">航向</div>
382
- <div class="item-item">${c.cog || i}</div>
383
- </div>
384
- <div class="item">
385
- <div class="item-label">经度</div>
386
- <div class="item-item">${c.lon || i}</div>
387
- </div>
388
- <div class="item">
389
- <div class="item-label">纬度</div>
390
- <div class="item-item">${c.lat || i}</div>
391
- </div>
392
- <div class="item w-100">
393
- <div class="item-label">时间</div>
394
- <div class="item-item">${c.time}</div>
395
- </div>
396
- ${d ?? d}
397
- </div>`;
398
- }, z = (c) => {
399
- const v = c.map(($) => {
400
- const D = e.getPixelFromCoordinate(ee($.center));
401
- return {
402
- ...$,
403
- original: $,
404
- pixel: D,
405
- distance: 0
406
- // 先初始化,后续计算
407
- };
408
- });
409
- let M = 0;
410
- v[0].distance = 0;
411
- for (let $ = 1; $ < v.length; $++) {
412
- const D = v[$ - 1].pixel, H = v[$].pixel, _ = H[0] - D[0], F = H[1] - D[1];
413
- M += Math.sqrt(_ * _ + F * F), v[$].distance = M;
414
- }
415
- const L = v.filter(
416
- ($, D) => D === 0 || D === v.length - 1
417
- ), E = [];
418
- for (let $ = 0; $ < L.length; $++) {
419
- const D = L[$];
420
- if (E.push(D), $ < L.length - 1) {
421
- const H = L[$ + 1], _ = H.distance - D.distance, F = Math.floor(_ / 100);
422
- for (let Y = 1; Y <= F; Y++) {
423
- const J = D.distance + Y * 100;
424
- if (J >= H.distance) break;
425
- const U = ae(
426
- v,
427
- J
428
- );
429
- U && E.push(U);
430
- }
431
- }
432
- }
433
- return Array.from(
434
- new Map(E.map(($) => [$.distance.toFixed(2), $])).values()
435
- ).map(($) => ({
436
- ...$.original,
437
- // 优先保留原始数据
438
- ...$,
439
- // 覆盖坐标等计算属性
440
- coord: $.coord,
441
- // 确保使用插值后的坐标
442
- pixel: $.pixel,
443
- distance: $.distance
444
- }));
445
- };
446
- function ae(c, d) {
447
- for (let v = 1; v < c.length; v++) {
448
- const M = c[v - 1], L = c[v];
449
- if (d >= M.distance && d <= L.distance) {
450
- const E = (d - M.distance) / (L.distance - M.distance), O = M.pixel[0] + E * (L.pixel[0] - M.pixel[0]), $ = M.pixel[1] + E * (L.pixel[1] - M.pixel[1]), D = e == null ? void 0 : e.getCoordinateFromPixel([O, $]);
451
- return {
452
- ...M,
453
- // 继承前一个点的属性(可调整)
454
- coord: D,
455
- pixel: [O, $],
456
- distance: d,
457
- original: void 0
458
- // 明确标记为插值生成点
459
- };
460
- }
461
- }
462
- return null;
463
- }
464
- const re = async (c, d) => {
465
- await be(), await pe(c);
466
- const v = z(d), M = v.map((E) => se(E));
467
- r.get(c).getSource().addFeatures(M), yt(c, v, d, B), v.forEach((E) => {
468
- const O = Re(c, B, E);
469
- e.addOverlay(O);
470
- });
471
- }, se = (c) => {
472
- const d = new ie({
473
- geometry: new le(c.centerPoint),
474
- data: c
475
- });
476
- d.set("type", "track_point"), d.set("trackId", c.id), d.set("data", c);
477
- let v = [
478
- ...ft(c, B)
479
- ];
480
- return (c.index === 0 || c.index === l[c.id].length - 1) && (v = [...ht(c)], d.set("type", "track_begin")), c.state !== void 0 && c.state !== null && (v = [...vt(c)], d.set("type", "track_icon")), d.setStyle(v), d;
481
- }, Re = (c, d, v) => {
482
- const M = document.createElement("div");
483
- M.className = "track-overlay-label", M.style.position = "relative", M.style.backgroundColor = "rgba(255,255,255,0.8)", M.style.border = `1px solid ${d}`, M.style.fontSize = "12px", M.innerHTML = `
484
- <span>${v.time}</span>
485
- <svg
486
- style="position: absolute;right: -20px;top: 0;"
487
- viewBox="0 0 20 20"
488
- xmlns="http://www.w3.org/2000/svg"
489
- width="20"
490
- height="20">
491
- <line x1="-20" y1="0"
492
- x2="20" y2="20"
493
- stroke="${d}"
494
- stroke-width="1" />
495
- `;
496
- const L = new ce({
497
- element: M,
498
- position: ee(v.center),
499
- positioning: "top-right",
500
- offset: [-20, -20],
501
- stopEvent: !1,
502
- className: "track-label-time-overlay"
503
- });
504
- return L.set("class", "track-label-overlay"), L.set("trackId", c), L;
505
- }, be = () => {
506
- const c = e == null ? void 0 : e.getOverlays().getArray(), d = c == null ? void 0 : c.filter((v) => v.get("class") === "track-label-overlay");
507
- d && d.length > 0 && d.forEach((v) => {
508
- v.setPosition(void 0), v.dispose();
509
- });
510
- }, pe = (c) => {
511
- const d = r.get(c).getSource();
512
- d.forEachFeature((v) => {
513
- v.get("type") !== "line" && d.removeFeature(v);
514
- });
515
- }, ft = (c, d) => (`${c.time}`, [
516
- new X({
517
- // 扩大交互热区
518
- image: new Ve({
519
- stroke: new ve({ color: "rgba(0, 0, 0, 0.01)", width: 20 }),
520
- radius: 3
521
- })
522
- }),
523
- // 轨迹点样式
524
- new X({
525
- image: new Ve({
526
- fill: new j({ color: d }),
527
- stroke: new ve({ color: "#fff", width: 2 }),
528
- radius: 3
529
- })
530
- })
531
- // textStyle,
532
- ]), vt = (c) => {
533
- const d = "#E31818", v = "#1890FF", M = "&#xe6d2", L = new X({
534
- text: new ge({
535
- font: "Normal 22px map-iconfont",
536
- text: fe(M),
537
- offsetY: -10,
538
- fill: new j({
539
- color: Number(c.state) === 0 ? d : Number(c.state) === 1 ? v : ""
540
- })
541
- }),
542
- zIndex: 99
543
- }), O = tt("&#xe6e2;"), D = tt("&#xe703;"), H = [];
544
- return Number(c.state) === 0 ? H.push(O) : Number(c.state) === 1 && H.push(D), H.push(L), H;
545
- }, yt = (c, d, v, M) => {
546
- const L = d || [], E = d.length;
547
- E || (L.push(v[0]), L.push(v[v.length - 1]));
548
- const O = [];
549
- for (let D = 0; D < E - 1; D++) {
550
- let H;
551
- const _ = d[D], F = (d[D + 1].index + _.index) / 2;
552
- if (F % 2 === 0)
553
- H = v[F].centerPoint;
554
- else {
555
- const Y = v[Math.floor(F)], J = v[Math.ceil(F)];
556
- if (Y && J) {
557
- const [U, Ce] = Y.centerPoint, [Le, Ee] = J.centerPoint;
558
- H = [(U + Le) / 2, (Ce + Ee) / 2];
559
- }
560
- }
561
- if (H) {
562
- const Y = new ie({
563
- geometry: new le(H)
564
- });
565
- Y.set("type", "track_arrow"), Y.setStyle(
566
- new X({
567
- text: new ge({
568
- font: "700 12px map-iconfont",
569
- text: fe("&#xe6bc;"),
570
- fill: new j({ color: M }),
571
- // 设置箭头旋转 角度转为弧度
572
- rotation: Ke(
573
- d[D].center,
574
- d[D + 1].center
575
- ) * (Math.PI / 180)
576
- })
577
- })
578
- ), O.push(Y);
579
- }
580
- }
581
- const $ = r.get(c).getSource();
582
- $ == null || $.addFeatures(O);
583
- }, Je = (c) => {
584
- var E, O;
585
- const d = e.getView(), v = (E = r == null ? void 0 : r.get(c)) == null ? void 0 : E.getSource(), M = C || (c ? v == null ? void 0 : v.getFeatureById(c) : null);
586
- if (!M) return;
587
- const L = (O = M == null ? void 0 : M.getGeometry()) == null ? void 0 : O.getExtent();
588
- if (L != null && L.length)
589
- try {
590
- const $ = Gt(L, Math.max(L[2] - L[0], L[3] - L[1]) * 0.02);
591
- d.fit($);
592
- } catch ($) {
593
- console.log($);
594
- }
595
- }, ht = (c) => {
596
- const d = "&#xe69b;", L = c.index === 0 ? "#fcdc3f" : "#ff0000";
597
- return [new X({
598
- text: new ge({
599
- font: "Normal 14px map-iconfont",
600
- text: fe(d),
601
- fill: new j({ color: L })
602
- }),
603
- zIndex: 101
604
- })];
605
- }, mt = () => {
606
- console.log("清除所有的轨迹-----"), Me(), r.forEach((d) => {
607
- var v;
608
- (v = d.getSource()) == null || v.clear(), e == null || e.removeLayer(d);
609
- }), Object.keys(l).forEach((d) => {
610
- r.delete(d), delete l[d];
611
- }), isRender = !1, be();
612
- }, wt = (c) => {
613
- const d = r.get(c || s);
614
- d == null || d.setVisible(!1);
615
- const v = e.getOverlays().getArray();
616
- for (let M = 0; M < v.length; ) {
617
- const L = v[M];
618
- L.get("class") === "track-label-overlay" ? (L.setPosition(void 0), e.removeOverlay(L)) : M++;
619
- }
620
- Me();
621
- }, xt = (c, d = xe.NM) => {
622
- const v = {
623
- id: c,
624
- length: "--"
625
- }, L = (l[c] || []).map(
626
- (O) => ke([O.lon, O.lat], K.data, K.mercator)
627
- ), E = new Pe(L);
628
- return v.length = oo(E, d) || "--", v;
629
- }, bt = (c, d) => {
630
- kt(String(c), d);
631
- }, kt = (c, d) => {
632
- const v = l[String(c)], M = v == null ? void 0 : v.map((L) => [L.lon, L.lat]);
633
- M && Ct(M, d);
634
- }, Ze = new X({
635
- text: new ge({
636
- font: "700 20px map-iconfont",
637
- text: fe("&#xe657;"),
638
- fill: new j({ color: "#ff0000" }),
639
- rotation: 0
640
- // 初始旋转角度
641
- })
642
- }), pt = (c, d) => {
643
- var F, Y;
644
- const v = Number(50 * d), M = ((F = c.frameState) == null ? void 0 : F.time) ?? Date.now(), L = M - w;
645
- if (S = (S + v * L / 1e6) % 2, w = M, S >= 1) {
646
- Me();
647
- return;
648
- }
649
- const E = n.getCoordinateAt(
650
- S > 1 ? 2 - S : S
651
- ), O = n.getCoordinateAt(
652
- S > 1 ? S - 0.01 : S
653
- ), $ = n.getCoordinateAt(
654
- S > 1 ? 2 - S : S + 0.01
655
- ), H = Ke(
656
- ot(O, "array"),
657
- ot($, "array")
658
- ) * Math.PI / 180;
659
- (Y = Ze.getText()) == null || Y.setRotation(H), y.setCoordinates(E);
660
- const _ = At(c);
661
- _.setStyle(Ze), _.drawGeometry(y), e == null || e.render();
662
- }, Mt = () => {
663
- var c;
664
- P = !0, w = Date.now(), S = 0, y = ((c = m.getGeometry()) == null ? void 0 : c.clone()) || new le([0, 0]), o && (g == null || g.on("postrender", o)), k == null || k.setGeometry(void 0);
665
- }, Me = () => {
666
- P && (P = !1, k == null || k.setGeometry(void 0), o && g && g.un("postrender", o), g && (e == null || e.removeLayer(g)), g = null, k = null);
667
- }, Ct = (c, d) => {
668
- P && Me(), t = new Ie({
669
- factor: 1e6
670
- }).writeGeometry(new Pe(c)), n = new Ie({
671
- factor: 1e6
672
- }).readGeometry(t, {
673
- dataProjection: K.data,
674
- featureProjection: K.mercator
675
- }), m = new ie({
676
- type: "icon",
677
- geometry: new le(n.getFirstCoordinate())
678
- });
679
- const v = m.getGeometry();
680
- y = v ? v.clone() : new le([0, 0]), k = new ie({
681
- type: "geoMarker",
682
- style: Ze,
683
- geometry: y
684
- }), g = new ye({
685
- source: new de({
686
- features: [k]
687
- })
688
- }), e == null || e.addLayer(g), o = (M) => pt(M, d), Mt();
689
- }, Ke = (c, d, v) => {
690
- function M(F) {
691
- return 180 * (F % (2 * Math.PI)) / Math.PI;
692
- }
693
- function L(F) {
694
- return F % 360 * Math.PI / 180;
695
- }
696
- function E(F) {
697
- var Y;
698
- if (!F) throw new Error("Coordinate is required");
699
- if (!Array.isArray(F)) {
700
- if ((F == null ? void 0 : F.type) === "Feature" && (F == null ? void 0 : F.geometry) !== null && ((Y = F == null ? void 0 : F.geometry) == null ? void 0 : Y.type) === "Point")
701
- return F == null ? void 0 : F.geometry.coordinates;
702
- if (F.type === "Point") return (F == null ? void 0 : F.coordinates) || [];
703
- }
704
- if (Array.isArray(F) && F.length >= 2 && !Array.isArray(F[0]) && !Array.isArray(F[1]))
705
- return F;
706
- throw new Error(
707
- "Coordinate must be GeoJSON Point or an Array of numbers"
708
- );
709
- }
710
- function O(F, Y, J = {}) {
711
- if (J.final)
712
- return function(Tt, Ft) {
713
- return (O(Ft, Tt) + 180) % 360;
714
- }(F, Y);
715
- const U = E(F), Ce = E(Y), Le = L(U[0]), Ee = L(Ce[0]), _e = L(U[1]), Ge = L(Ce[1]), Lt = Math.sin(Ee - Le) * Math.cos(Ge), Et = Math.cos(_e) * Math.sin(Ge) - Math.sin(_e) * Math.cos(Ge) * Math.cos(Ee - Le);
716
- return M(Math.atan2(Lt, Et));
717
- }
718
- function $(F) {
719
- return !isNaN(F) && F !== null && !Array.isArray(F);
720
- }
721
- function D(F, Y = {}, J = {}) {
722
- return F || console.log("Coordinates are required"), Array.isArray(F) || console.log("Coordinates must be an Array"), F.length < 2 && console.log("Coordinates must be at least 2 numbers long"), (!$(F[0]) || !$(F[1])) && console.log("Coordinates must contain numbers"), H({ type: "Point", coordinates: F }, Y, J);
723
- }
724
- function H(F, Y = {}, J = {}) {
725
- const U = {
726
- type: "Feature",
727
- id: "",
728
- properties: {},
729
- bbox: {},
730
- geometry: {}
731
- };
732
- return J.id !== void 0 && (U.id = J.id), J.bbox && (U.bbox = J.bbox), U.properties = Y, U.geometry = F, U;
733
- }
734
- const _ = O(D(c), D(d), v);
735
- return _ < 0 ? 360 + _ : _;
736
- };
737
- return {
738
- render: a,
739
- remove: mt,
740
- play: bt,
741
- setCenter: Je,
742
- close: wt,
743
- getLength: xt,
744
- handleTrackMapEvent: G,
745
- reRenderTrackLine: Z
746
- };
747
- };
748
- function io(e) {
749
- console.log("useShipOverlay", e);
750
- const r = I(null), l = Te(() => ({
751
- "--overlay-color": "#FFF",
752
- "--bg-color1": e.colors && e.colors[0] ? e.colors[0] : "#ffffff",
753
- // 默认第一个颜色
754
- "--bg-color2": e.colors && e.colors[1] ? e.colors[1] : "#ffffff",
755
- "--bg-color": "#ffffff",
756
- position: "relative",
757
- "pointer-events": "none"
758
- })), s = Te(() => {
759
- var u;
760
- return {
761
- position: "relative",
762
- "border-radius": "1px",
763
- "background-color": "var(--content-bg)",
764
- color: "#000",
765
- padding: "2px 5px 2px 0px",
766
- font: "500 Normal 12px",
767
- "font-size": "12px",
768
- "box-shadow": "0 2px 10px rgba(0, 0, 0, 0.2)",
769
- "white-space": "nowrap",
770
- border: "1px solid #FFF",
771
- "pointer-events": "auto",
772
- // 'transition': 'background-color 0.5s ease, border 0.5s ease',
773
- "z-index": "1",
774
- display: "flex",
775
- "align-items": "center",
776
- animation: e.selected ? e.colors && ((u = e.colors) == null ? void 0 : u.length) >= 2 ? "blink-dual 2s ease-in-out infinite" : "blink-single 1.5s ease-in-out infinite" : "none"
777
- // "animation": props.selected ? 'blink 1.5s ease-in-out infinite' : 'none', // 动画开关
778
- };
779
- }), i = Te(() => ({
780
- width: "14px",
781
- height: "14px",
782
- margin: "1px 5px 1px 1px",
783
- "background-color": "var(--attention-bg)"
784
- })), o = Te(() => ({
785
- position: "absolute",
786
- top: "0px",
787
- color: "var(--overlay-color)",
788
- "pointer-events": "none",
789
- transform: "translateY(-1px)",
790
- "z-index": "0",
791
- width: "20px",
792
- height: "20px",
793
- overflow: "visible",
794
- left: "-20px"
795
- }));
796
- return () => ne("div", {
797
- ref: r,
798
- class: "ship-overlay-container",
799
- style: l.value
800
- }, [
801
- ne(
802
- "div",
803
- {
804
- class: "ship-overlay-content",
805
- style: s.value
806
- },
807
- [
808
- ne("div", {
809
- style: e.selected ? i.value : {}
810
- }, ""),
811
- ne("div", {
812
- class: "text",
813
- style: {
814
- fontSize: "12px",
815
- fontWeight: 500,
816
- fontFamily: "Arial"
817
- }
818
- }, e.name || "未命名船舶"),
819
- ne("div", {
820
- class: "icons",
821
- style: {
822
- color: "#3370ff"
823
- }
824
- }, [
825
- e.existDevice ? ne("i", {
826
- class: "map-iconfont icon-camera",
827
- style: {
828
- fontSize: "12px"
829
- }
830
- }) : "",
831
- e.existMobile ? ne("i", {
832
- class: "map-iconfont icon-tele",
833
- style: {
834
- fontSize: "12px"
835
- }
836
- }) : "",
837
- e.existWaterGauge ? ne("i", {
838
- class: "map-iconfont icon-ruler",
839
- style: {
840
- fontSize: "12px"
841
- }
842
- }) : ""
843
- ])
844
- ]
845
- ),
846
- ne("svg", {
847
- class: "ship-overlay-line",
848
- style: o.value,
849
- viewBox: "0 0 20 20",
850
- xmlns: "http://www.w3.org/2000/svg"
851
- }, [
852
- ne("line", {
853
- x1: "0",
854
- y1: "20",
855
- x2: "20",
856
- y2: "4",
857
- stroke: "white",
858
- "stroke-width": "1"
859
- })
860
- ])
861
- ]);
862
- }
863
- I([]);
864
- function co(e, r, l, s) {
865
- if (r) {
866
- const i = new ce({
867
- element: l,
868
- positioning: "top-left",
869
- id: "label-" + (s == null ? void 0 : s.id),
870
- offset: [20, -20],
871
- autoPan: !1,
872
- position: r,
873
- className: s.blinking ? "ship-label-overlay-blinking" : "ship-label-overlay"
874
- });
875
- i.set("class", "zh-map-ship-overlay"), e.addOverlay(i);
876
- }
877
- }
878
- const ao = (e) => {
879
- const { spd: r, hdg: l, cog: s } = e;
880
- return r ? l !== null && +l != 511 && s !== null ? s - +l >= 3 ? oe.right : s - +l <= -3 ? oe.left : oe.front : oe.front : "";
881
- }, he = (e, r) => {
882
- const { shipData: l } = r.getProperties(), s = at(e), i = Qe(e, l, s);
883
- return uo(r, i, s);
884
- }, at = (e) => {
885
- const r = e == null ? void 0 : e.getView().getZoom();
886
- return r <= te.shipModelMax && r >= te.shipTriggleMin ? "ship" : "triangle";
887
- }, Qe = (e, r, l) => {
888
- if (l === "ship") {
889
- const { len: s, wid: i } = r, o = 97, u = 20, t = 1 / (e == null ? void 0 : e.getView().getResolution()), n = s * t / o, m = i * t / u, y = Math.min(n, m);
890
- return y < 0.2 ? 0.2 : y > 2 ? 2 : y;
891
- }
892
- return te.scaleNum;
893
- }, uo = (e, r, l) => {
894
- const { color: s, direct: i, isHighlight: o, shipData: u } = e.getProperties(), h = ((u == null ? void 0 : u.cog) - 90 + 360) % 360;
895
- return new X({
896
- image: new Oe({
897
- src: t(),
898
- scale: r || te.scaleNum,
899
- anchor: [0.5, 0.5],
900
- rotation: h * Math.PI / 180,
901
- rotateWithView: !1
902
- })
903
- });
904
- function t() {
905
- return `data:image/svg+xml;utf8,${encodeURIComponent(n())}`;
906
- }
907
- function n() {
908
- switch (l) {
909
- case "triangle":
910
- return `<svg width="41" height="24" viewBox="0 0 41 24" fill="none" xmlns="http://www.w3.org/2000/svg">
911
- <path d="M30.8843 12.6777L2.21343 21.7067C1.75559 21.8509 1.28947 21.509 1.28947 21.029L1.28947 2.97103C1.28947 2.49102 1.75558 2.14913 2.21342 2.29331L30.8843 11.3223C31.5471 11.531 31.5471 12.469 30.8843 12.6777Z"
912
- fill="${s}" stroke="${o ? "#FF2424" : "black"}" stroke-width="${o ? "2" : "0.578947"}" />
913
- <!--path船航向左边或者向前-->
914
- ${i === oe.left && `<path d="M30 12L40 12L40 8" stroke="${o ? "#FF2424" : "black"}" stroke-width="2"/>`}
915
- <!--path船航向右边-->
916
- ${i === oe.right && `<path d="M30 12L40 12L40 16" stroke="${o ? "#FF2424" : "black"}" stroke-width="2"/>`}
917
- <!--path黑线无左右-->
918
- ${i === oe.front && `<path d="M30 12L40 12" stroke="${o ? "#FF2424" : "black"}" stroke-width="1.5"/>`}
919
- </svg>
920
- `;
921
- case "ship":
922
- return `<svg width="97" height="20" viewBox="0 0 97 20" fill="none" xmlns="http://www.w3.org/2000/svg">
923
- <path d="M0.289474 17.3433L0.289474 2.65655C0.289474 2.28572 0.574654 1.97725 0.944343 1.9482L22.0544 0.289473L67.5204 0.289473C67.6295 0.289473 67.7372 0.314613 67.835 0.362943L86.0565 9.3629C86.5844 9.6236 86.5844 10.3763 86.0565 10.637L67.835 19.6371C67.7372 19.6854 67.6295 19.7105 67.5203 19.7105L22.0544 19.7105L0.944343 18.0517C0.574653 18.0226 0.289474 17.7142 0.289474 17.3433Z"
924
- fill="${s}" stroke="${o ? "#FF2424" : "black"}" stroke-width="${o ? "4" : "0.578947"}"/>
925
- ${i === oe.left && `<path d="M86 10L96 10L96 6" stroke="${o ? "#FF2424" : "black"}" stroke-width="1.5"/>`}
926
- ${i === oe.right && `<path d="M86 10L96 10L96 14" stroke="${o ? "#FF2424" : "black"}" stroke-width="1.5"/>`}
927
- ${i === oe.front && `<path d="M86 10L96 10" stroke="${o ? "#FF2424" : "black"}" stroke-width="1.5"/>`}
928
- </svg>
929
- `;
930
- default:
931
- return "";
932
- }
933
- }
934
- }, go = (e, r) => {
935
- const l = dt(e, r), s = r.id, { lon: i, lat: o } = r, u = new ce({
936
- element: l,
937
- position: ee([i, o]),
938
- id: "selected-" + s,
939
- positioning: "center-center",
940
- offset: [0, 5],
941
- className: "ship-selected-overlay"
942
- });
943
- return u.set("class", "ship-overlay-selected"), u;
944
- }, dt = (e, r) => {
945
- const l = at(e), s = Qe(e, r, l), i = l === "ship" ? 109 : 49, o = `
946
- <svg style="transform:scale(${s});" xmlns="http://www.w3.org/2000/svg" width="${i}" height="${i}" viewBox="0 0 49 49" fill="none">
947
- <path d="M1.99982 46.9998L1.99982 1.99982L46.9998 1.99982L46.9998 46.9998L1.99982 46.9998Z" fill="#FF2424" fill-opacity="0.2"/>
948
- <path fill-rule="evenodd" clip-rule="evenodd" d="M19.9998 0.5V3.5L3.49976 3.5V20H0.499756V0.500002L19.9998 0.5ZM45.4998 3.5H28.9998V0.5H48.4998V20H45.4998V3.5ZM48.4998 29L48.4998 48.5H28.9998V45.5H45.4998L45.4998 29H48.4998ZM3.49976 45.5L3.49976 29H0.499756L0.499758 48.5L19.9998 48.5V45.5L3.49976 45.5Z" fill="#FF2424"/>
949
- </svg>
950
- `, u = document.createElement("div");
951
- return u.className = "ship-overlay-selected", u.innerHTML = o, u;
952
- }, fo = (e, r) => {
953
- const { lon: l, lat: s, blinking: i } = r, o = ut(r);
954
- l && s && co(e, ee([l, s]), o, { ...r, blinking: i });
955
- }, ut = (e) => {
956
- const r = document.createElement("div");
957
- r.className = "ship-overlay-box", r.style.position = "relative";
958
- const { lon: l, lat: s, blinking: i, blinkingColors: o, name: u } = e, h = Ae({
959
- setup() {
960
- return io({
961
- position: [l + 2e-3, s + 2e-3],
962
- selected: i,
963
- name: u,
964
- colors: o || [],
965
- existDevice: e == null ? void 0 : e.existDevice,
966
- existMobile: e == null ? void 0 : e.existMobile,
967
- existWaterGauge: e == null ? void 0 : e.existWaterGauge
968
- });
969
- }
970
- });
971
- return Pt(h, r), r;
972
- }, rt = (e) => {
973
- const r = [];
974
- return e.existDevice && r.push("&#xe687;"), e.existMobile && r.push("&#xe688;"), e.existWaterGauge && r.push("&#xe686;"), r;
975
- };
976
- function vo() {
977
- const e = [
978
- "left-top",
979
- "left-middle",
980
- "left-bottom",
981
- "right-top",
982
- "right-middle",
983
- "right-bottom"
984
- ];
985
- return e[Math.floor(Math.random() * e.length)];
986
- }
987
- const yo = window.devicePixelRatio || 1;
988
- function ho(e, r, l = "left-bottom", s = 2) {
989
- const i = document.createElement("canvas"), o = i.getContext("2d");
990
- if (!o) return "";
991
- const u = 2, h = 8, t = 16, n = window.devicePixelRatio || 1, m = "500 12px Arial", y = "14px map-iconfont";
992
- o.font = m;
993
- const P = o.measureText(e).width;
994
- o.font = y;
995
- const w = r.map((p) => ({ width: o.measureText(fe(p)).width, height: 14 })), g = w.reduce((p, T) => p + T.width, 0), S = (r.length - 1) * s, C = h + P + g + S + h, b = u + 14 + u;
996
- let W, A, q = 0, B = 0, R = 0, Z = 0, N = 0, a = 0;
997
- switch (W = t + C, l) {
998
- case "right-top":
999
- A = t + b, q = 0, B = t + b, R = t, Z = 0, N = t, a = 0;
1000
- break;
1001
- case "right-middle":
1002
- A = b, q = 0, B = b / 2, R = t, Z = b / 2, N = t, a = 0;
1003
- break;
1004
- case "right-bottom":
1005
- A = t + b, q = 0, B = 0, R = t, Z = t, N = t, a = t;
1006
- break;
1007
- case "left-top":
1008
- A = t + b, q = C, B = t, R = C + t, Z = b + t, N = 0, a = 0;
1009
- break;
1010
- case "left-middle":
1011
- A = b, q = C, B = b / 2, R = C + t, Z = b / 2, N = 0, a = 0;
1012
- break;
1013
- case "left-bottom":
1014
- A = t + b, q = C, B = b, R = C + t, Z = 0, N = 0, a = t;
1015
- break;
1016
- }
1017
- A = A + u, i.width = Math.round(W * n), i.height = Math.round(A * n), o.scale(n, n), o.clearRect(0, 0, W, A), o.beginPath(), o.moveTo(q, B), o.lineTo(R, Z), o.strokeStyle = "#FFF", o.lineWidth = 1, o.stroke(), o.fillStyle = "#FFF", o.fillRect(N, a, C, b), o.font = m, o.textBaseline = "middle";
1018
- const x = a + u + b / 2;
1019
- o.strokeStyle = "#ffffff", o.lineWidth = 1, o.strokeText(e, N + h, x), o.fillStyle = "#000000", o.fillText(e, N + h, x), o.font = y, o.fillStyle = "#3370ff";
1020
- let f = N + h + P + s;
1021
- return r.length > 0 && r.forEach((p, T) => {
1022
- const V = a + u + b / 2;
1023
- o.fillText(fe(p), f, V), f += w[T].width + s;
1024
- }), i.toDataURL("image/png");
1025
- }
1026
- const nt = (e, r) => {
1027
- const { name: l, rightIcons: s, selected: i } = e.getProperties(), o = r !== 1 ? vo() : "right-top", u = ho(l, s, o);
1028
- let h = [0, 0];
1029
- switch (o) {
1030
- case "right-top":
1031
- h = [0, 1];
1032
- break;
1033
- case "right-middle":
1034
- h = [0, 0.5];
1035
- break;
1036
- case "right-bottom":
1037
- h = [0, 0];
1038
- break;
1039
- case "left-top":
1040
- h = [1, 1];
1041
- break;
1042
- case "left-middle":
1043
- h = [1, 0.5];
1044
- break;
1045
- case "left-bottom":
1046
- h = [1, 0];
1047
- break;
1048
- }
1049
- return new X({
1050
- image: new Oe({
1051
- src: u,
1052
- anchor: h,
1053
- displacement: [0, 0],
1054
- scale: 1 / yo,
1055
- anchorXUnits: "fraction",
1056
- anchorYUnits: "fraction"
1057
- }),
1058
- zIndex: i ? 100 : 10
1059
- });
1060
- }, mo = (e) => {
1061
- let r = null, l = null;
1062
- const s = new de(), i = new Wt({
1063
- source: s,
1064
- className: "zh-map--ship-layer",
1065
- renderBuffer: 300,
1066
- zIndex: 101,
1067
- hitTolerance: 10
1068
- }), o = new de(), u = new ye({
1069
- source: o,
1070
- className: "zh-map--ship-label-layer",
1071
- zIndex: 102,
1072
- updateWhileInteracting: !1,
1073
- updateWhileAnimating: !1,
1074
- declutter: !0
1075
- });
1076
- e == null || e.addLayer(i), e == null || e.addLayer(u);
1077
- let h = null, t = "", n = {}, m = {};
1078
- const y = (a) => {
1079
- if (!a || !e) return;
1080
- const x = (l == null ? void 0 : l.id) || (r == null ? void 0 : r.get("id"));
1081
- if (l) {
1082
- const f = a.filter((p) => p.id === x);
1083
- f.length === 0 ? a.push(l) : l = f[0];
1084
- }
1085
- S(), C(!0), N(a), P();
1086
- }, k = (a) => {
1087
- var z;
1088
- const x = (l == null ? void 0 : l.id) || (r == null ? void 0 : r.get("id")), f = ee([a == null ? void 0 : a.lon, a == null ? void 0 : a.lat]), p = ((z = m[a.id]) == null ? void 0 : z.blinkColors) || [], V = p[p.length - 1] || a.fill || "#04C900", G = ao(a), Q = new ie({
1089
- geometry: new le(f),
1090
- // 船舶数据
1091
- shipData: a,
1092
- id: a.id,
1093
- name: a.cnname || a.enname || a.name || a.id || "未命名船舶",
1094
- selected: a.id === x,
1095
- // 图标
1096
- rightIcons: rt(a),
1097
- // 是否闪烁
1098
- // blinking: attentionShips[ship.id] || false,
1099
- // // 闪烁颜色
1100
- // blinkingColor: attentionShipsColor[ship.id].blinkColors || '',
1101
- // 船舶颜色
1102
- color: V,
1103
- // 船艏向的方向
1104
- direct: G,
1105
- // 高亮
1106
- isHighlight: !1
1107
- });
1108
- return Q.set("clickGeometry", new Yt(f)), Q;
1109
- }, P = async () => {
1110
- if (!l || !e) return;
1111
- let x = e.getOverlays().getArray().find((f) => f.get("class") == "ship-overlay-selected");
1112
- if (x) {
1113
- const f = dt(e, l);
1114
- await x.setElement(f), await x.setPosition(ee([l.lon, l.lat]));
1115
- } else
1116
- x = go(e, l), x && e.addOverlay(x);
1117
- setTimeout(() => {
1118
- var f;
1119
- x && ((f = x.get("element")) != null && f.parentElement) && (x.get("element").parentElement.style.display = "block");
1120
- }, 20);
1121
- }, w = (a) => {
1122
- if (a === "start") {
1123
- const x = () => {
1124
- s.getFeatures().forEach((f) => {
1125
- f.setStyle(he(e, f));
1126
- }), h = requestAnimationFrame(x);
1127
- };
1128
- x();
1129
- }
1130
- a === "end" && h && (cancelAnimationFrame(h), h = null);
1131
- }, g = () => {
1132
- const x = (e == null ? void 0 : e.getOverlays().getArray()).find((f) => f.get("class") == "ship-overlay-selected");
1133
- if (x) {
1134
- const f = x.getElement(), p = Qe(e, l, "ship"), T = f.querySelector("svg");
1135
- console.log(T), T && (T.style.transform = `scale(${p})`);
1136
- }
1137
- }, S = () => {
1138
- e && s && (s.clear(), o.clear(), C(), w("end"));
1139
- }, C = (a) => {
1140
- const x = e.getOverlays().getArray().filter((f) => f.get("class") == "zh-map-ship-overlay");
1141
- if (x && x.length > 0) {
1142
- for (let f = 0; f < x.length; f++)
1143
- if (!a && x[f].get("class") !== "ship-overlay-selected") {
1144
- const p = x[f];
1145
- p.setPosition(void 0), e.removeOverlay(p), p.dispose();
1146
- }
1147
- }
1148
- }, b = (a, x) => {
1149
- n = a, m = x;
1150
- const f = e.getOverlays().getArray(), p = s.getFeatures();
1151
- for (const T in n) {
1152
- const V = n[T], G = f.find((z) => z.getId() === "label-" + T), Q = p.find((z) => T === z.get("id"));
1153
- if (G && Q) {
1154
- const z = x[T].blinkColors || [], { shipData: ae, name: re, color: se } = Q.getProperties();
1155
- Q.set("blinking", V), z[(z == null ? void 0 : z.length) - 1] && se !== z[(z == null ? void 0 : z.length) - 1] && (Q.set("color", z[(z == null ? void 0 : z.length) - 1] || ""), Q.setStyle(he(e, Q)));
1156
- const Re = {
1157
- ...ae,
1158
- blinking: V,
1159
- blinkingColors: z || [],
1160
- name: re + "(" + x[T].shipState + ")"
1161
- }, be = G.getElement(), pe = ut(Re);
1162
- be && be !== pe && G.setElement(pe);
1163
- }
1164
- }
1165
- }, W = (a) => {
1166
- if (!e) return;
1167
- const x = s.getFeatures(), f = o.getFeatures(), p = r ? r.get("id") : "", T = x.filter((z) => z.get("id") !== p), V = f == null ? void 0 : f.filter((z) => z.get("id") !== p), G = /* @__PURE__ */ new Map();
1168
- a.forEach((z) => {
1169
- G.set(z.id, !0);
1170
- });
1171
- const Q = e.getOverlays().getArray();
1172
- T.forEach((z) => {
1173
- const ae = z.get("id");
1174
- if (!G.has(ae))
1175
- z.setStyle([]);
1176
- else {
1177
- const se = z.getStyle();
1178
- (se == null ? void 0 : se.length) == 0 && z.setStyle(he(e, z));
1179
- }
1180
- const re = Q.find((se) => se.getId() === "label-" + ae);
1181
- re && re.setPosition(void 0);
1182
- }), console.log(V), V.forEach((z) => {
1183
- const ae = z.get("id");
1184
- if (!G.has(ae))
1185
- z.setStyle([]);
1186
- else {
1187
- const re = z.getStyle();
1188
- (re == null ? void 0 : re.length) == 0 && z.setStyle(nt(z));
1189
- }
1190
- });
1191
- }, A = (a) => {
1192
- if (a) {
1193
- console.log("选中", a);
1194
- const x = s.getFeatures().find((p) => p.get("id") === a.id), f = o.getFeatures().find((p) => p.get("id") === a.id);
1195
- x && (r = x), f && f.set("selected", !0), l = a, P();
1196
- } else
1197
- console.log("取消选中"), l = null, r = null, R();
1198
- }, q = Ne((a, x, f) => {
1199
- try {
1200
- if (a) {
1201
- const p = a.get("shipData"), T = a.get("id");
1202
- if (e.getTargetElement().style.cursor = T ? "pointer" : "", x === "click" && (A(p), f && f(T)), x === "hover") {
1203
- t && t !== T && B(), t = T;
1204
- const V = s.getFeatures().find((G) => G.get("id") === t);
1205
- V == null || V.set("isHighlight", !0), V == null || V.setStyle(he(e, V));
1206
- }
1207
- } else
1208
- e.getTargetElement().style.cursor = "", B();
1209
- } catch (p) {
1210
- console.log("handleShipMapEvent", p);
1211
- }
1212
- }, 10), B = () => {
1213
- const a = t ? s.getFeatures().find((x) => x.get("id") === t) : null;
1214
- t = null, a == null || a.set("isHighlight", !1), a == null || a.setStyle(he(e, a));
1215
- }, R = () => {
1216
- try {
1217
- const x = e.getOverlays().getArray().find((f) => f.get("class") == "ship-overlay-selected");
1218
- x && x.setPosition(void 0);
1219
- } catch (a) {
1220
- console.log(a);
1221
- }
1222
- }, Z = (a, x) => {
1223
- const f = ee([a == null ? void 0 : a.lon, a == null ? void 0 : a.lat]), p = new ie({
1224
- geometry: new le(f),
1225
- name: a.cnname || a.enname || a.name || a.id || "未命名船舶",
1226
- // 图标
1227
- rightIcons: rt(a),
1228
- selected: (a == null ? void 0 : a.id) === (l == null ? void 0 : l.id),
1229
- shipData: a
1230
- });
1231
- p.set("id", a.id);
1232
- const T = nt(p, x);
1233
- return p.setStyle(T), p;
1234
- }, N = (a) => {
1235
- const x = e.getView().getZoom();
1236
- a.forEach((f) => {
1237
- const p = k(f);
1238
- if (p.setStyle(he(e, p)), s.addFeature(p), (l == null ? void 0 : l.id) == f.id || x >= te.shipModelMin)
1239
- if (n[f.id]) {
1240
- if (f.id && m[f == null ? void 0 : f.id]) {
1241
- const T = m[f == null ? void 0 : f.id] || {}, V = (T == null ? void 0 : T.blinkColors) || [], G = (T == null ? void 0 : T.shipState) || "", Q = (f.cnname || f.enname || f.name || f.id || "未命名船舶") + "(" + G + ")", z = {
1242
- ...f,
1243
- name: Q,
1244
- blinking: n[f.id],
1245
- blinkingColors: V || []
1246
- };
1247
- fo(e, z);
1248
- }
1249
- } else {
1250
- const T = Z(f, a.length);
1251
- o.addFeature(T);
1252
- }
1253
- });
1254
- };
1255
- return {
1256
- render: y,
1257
- selected: A,
1258
- filter: W,
1259
- blinking: b,
1260
- clear: S,
1261
- handleShipMapEvent: q,
1262
- changeShipScale: w,
1263
- changeSelectedScale: g
1264
- };
1265
- }, wo = (e) => {
1266
- const r = () => e == null ? void 0 : e.getLayers(), l = I("vector"), s = () => l.value, i = (t) => {
1267
- l.value = t;
1268
- const n = r();
1269
- n && (n == null || n.getArray().forEach((m) => {
1270
- (m.className_ === "vector" || m.className_ === "satellite") && m.setVisible(m.className_ === t);
1271
- }));
1272
- }, o = I(!1);
1273
- return {
1274
- getLayers: r,
1275
- getGreenTileVisible: () => o.value,
1276
- setGreenTileVisible: (t) => {
1277
- if (t !== o.value) {
1278
- if (t) {
1279
- const n = r();
1280
- if (!n.getArray().find((y) => y.className_ === "greenTile")) {
1281
- const y = new me({
1282
- source: new we({ url: ue.greenTile }),
1283
- visible: t,
1284
- zIndex: 2,
1285
- className: "greenTile"
1286
- });
1287
- n.push(y);
1288
- }
1289
- } else {
1290
- const n = r(), m = n.getArray().find((y) => y.className_ === "greenTile");
1291
- m && n.remove(m);
1292
- }
1293
- o.value = t;
1294
- }
1295
- },
1296
- getShowLayerType: s,
1297
- setShowLayerType: i
1298
- };
1299
- }, xo = () => {
1300
- const e = I();
1301
- return {
1302
- setProps: (s) => {
1303
- e.value = s;
1304
- },
1305
- getProps: () => e.value
1306
- };
1307
- }, bo = (e) => {
1308
- const r = "zh-map-location-layer";
1309
- let l, s, i = null, o = null;
1310
- const u = (w) => {
1311
- if (!(!w || w.length === 0)) {
1312
- if (s || (s = new de()), s.clear(), o) {
1313
- const g = w.find((S) => S.id === o.id);
1314
- g ? o = g : w.push(o);
1315
- }
1316
- w.forEach((g) => {
1317
- h(g);
1318
- }), l || (l = new ye({
1319
- className: r,
1320
- source: s,
1321
- zIndex: 100
1322
- }), e == null || e.addLayer(l));
1323
- }
1324
- }, h = (w) => {
1325
- const g = e == null ? void 0 : e.getView().getZoom(), [S, C] = w.latLon.split(","), b = new ie({
1326
- geometry: new le(ee([Number(S), Number(C)]))
1327
- });
1328
- b.setStyle(t(w, g, w.id === (o == null ? void 0 : o.id))), b.set("loactionData", w), s.addFeature(b);
1329
- }, t = (w, g, S) => {
1330
- const C = {
1331
- image: new Oe({
1332
- src: S && w.selectedPath || w.defaultPath,
1333
- scale: 0.5 * g / 10
1334
- })
1335
- };
1336
- return w.name && (C.text = new ge({
1337
- text: w.name,
1338
- font: "12px sans-serif",
1339
- fill: new j({
1340
- color: "#000000"
1341
- }),
1342
- backgroundFill: new j({
1343
- color: "#FFFFFF"
1344
- }),
1345
- offsetY: 30
1346
- })), new X(C);
1347
- }, n = () => {
1348
- if (i) {
1349
- const w = i.get("loactionData").id;
1350
- s.getFeatures().forEach((g) => {
1351
- g.get("loactionData").id !== w && s.removeFeature(g);
1352
- });
1353
- } else
1354
- s.clear();
1355
- }, m = () => {
1356
- var C;
1357
- const w = i.get("loactionData"), g = (C = e == null ? void 0 : e.getView()) == null ? void 0 : C.getZoom();
1358
- s.getFeatures().forEach((b) => {
1359
- b.get("loactionData").id === w.id && (b == null || b.setStyle(t(w, g, !1)));
1360
- }), o = null, i = null;
1361
- }, y = (w) => {
1362
- w ? (k(), P(w)) : clearSelectedPort();
1363
- }, k = () => {
1364
- var w;
1365
- if (i) {
1366
- const g = i.get("loactionData"), S = (w = e == null ? void 0 : e.getView()) == null ? void 0 : w.getZoom();
1367
- i.setStyle(t(g, S, !1));
1368
- }
1369
- }, P = (w) => {
1370
- const g = s.getFeatures();
1371
- o = w, i = g.find((S) => S.get("loactionData").id === w.id);
1372
- };
1373
- return {
1374
- render: u,
1375
- selected: y,
1376
- clearSelected: m,
1377
- clear: n
1378
- };
1379
- }, ko = (e) => {
1380
- e.getInteractions().forEach((r) => {
1381
- r instanceof st && r.setActive(!1);
1382
- });
1383
- }, po = (e) => {
1384
- e.getInteractions().forEach((r) => {
1385
- r instanceof st && r.setActive(!0);
1386
- });
1387
- }, ze = (e, r) => {
1388
- const l = e.getViewport();
1389
- l && (l.style.cursor = r);
1390
- }, Mo = (e, r) => {
1391
- const l = I([]), s = I("km"), i = (N) => {
1392
- s.value = N;
1393
- };
1394
- let o;
1395
- const u = I(!1), h = () => {
1396
- ze(e, "crosshair"), m(), ko(e), e.on("pointermove", P), e.getViewport().addEventListener("mouseout", () => {
1397
- o && o.classList.add("hidden");
1398
- }), g(), u.value = !0;
1399
- };
1400
- let t, n;
1401
- const m = () => {
1402
- t = new de(), n = new ye({
1403
- source: t,
1404
- zIndex: 1e3,
1405
- style: {
1406
- "fill-color": "rgba(255, 255, 255, 0.2)",
1407
- "stroke-color": "#ffcc33",
1408
- "stroke-width": 2,
1409
- "circle-radius": 7,
1410
- "circle-fill-color": "#ffcc33"
1411
- }
1412
- }), e == null || e.addLayer(n);
1413
- };
1414
- let y, k;
1415
- const P = (N) => {
1416
- if (N.dragging)
1417
- return;
1418
- let a = "点击选择起点";
1419
- y && (a = "单击继续,双击结束"), o && (o.innerHTML = a, k.setPosition(N.coordinate), o.classList.remove("hidden"));
1420
- };
1421
- let w;
1422
- const g = () => {
1423
- w = new Se({
1424
- source: t,
1425
- type: "LineString",
1426
- style: new X({
1427
- fill: new j({
1428
- color: "rgba(255, 255, 255, 0.2)"
1429
- }),
1430
- stroke: new ve({
1431
- color: "rgba(255,204,51)",
1432
- lineDash: [10, 10],
1433
- width: 2
1434
- }),
1435
- image: new Ve({
1436
- radius: 5,
1437
- stroke: new ve({
1438
- color: "rgba(0, 0, 0, 0.7)"
1439
- }),
1440
- fill: new j({
1441
- color: "rgba(255, 255, 255, 0.2)"
1442
- })
1443
- })
1444
- }),
1445
- // 添加条件函数,判断是否应该出发点绘制
1446
- condition: (a) => a.originalEvent.target.tagName !== "DIV"
1447
- }), e == null || e.addInteraction(w), W(), A();
1448
- let N;
1449
- w.on("drawstart", function(a) {
1450
- var f;
1451
- y = a.feature, y.set("randomId", S());
1452
- let x;
1453
- N = (f = y.getGeometry()) == null ? void 0 : f.on("change", function(p) {
1454
- const T = p.target, V = gt(T, s.value);
1455
- x = T.getLastCoordinate(), C && V && (C.innerHTML = V), b.setPosition(x);
1456
- });
1457
- }), w.on("drawend", function() {
1458
- var a, x, f;
1459
- if (C && (C.className = "ol-tooltip ol-tooltip-static ol-tooltip-measure"), C != null && C.innerHTML) {
1460
- const p = (y == null ? void 0 : y.get("randomId")) || S();
1461
- l.value.push({ id: p, value: C == null ? void 0 : C.innerHTML }), C.innerHTML = `${C.innerHTML}<div class="ol-tooltip-delete-button" data-id="${p}"><i class="map-iconfont icon-delete"></i></div>`;
1462
- }
1463
- (a = document.querySelector(".ol-selectable:has(.ol-tooltip-delete-button):last-child .ol-tooltip-delete-button")) == null || a.addEventListener("click", (p) => {
1464
- var V;
1465
- p.preventDefault(), p.stopPropagation();
1466
- const T = (V = p.target) == null ? void 0 : V.getAttribute("data-id");
1467
- T && B(T);
1468
- }), b.setOffset([0, -7]), y = null, C = null, W(), N && We(N), (f = (x = r.getProps()) == null ? void 0 : x.lineDrawEnd) == null || f.call(x, l.value);
1469
- });
1470
- }, S = () => Math.random().toString(36).substring(2, 9);
1471
- let C, b;
1472
- const W = () => {
1473
- C != null && C.parentNode && C.parentNode.removeChild(C), C = document.createElement("div"), C.className = "ol-tooltip ol-tooltip-measure", b = new ce({
1474
- element: C,
1475
- offset: [0, -15],
1476
- positioning: "bottom-center",
1477
- stopEvent: !1,
1478
- insertFirst: !1
1479
- }), e == null || e.addOverlay(b);
1480
- }, A = () => {
1481
- o != null && o.parentNode && o.parentNode.removeChild(o), o = document.createElement("div"), o.className = "ol-tooltip hidden", k = new ce({
1482
- element: o,
1483
- offset: [15, 0],
1484
- positioning: "center-left"
1485
- }), e == null || e.addOverlay(k);
1486
- }, q = () => {
1487
- l.value.forEach((N, a) => {
1488
- var p, T;
1489
- const x = document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");
1490
- x[a] && ((T = (p = x[a]) == null ? void 0 : p.parentNode) == null || T.removeChild(x[a]));
1491
- const f = t.getFeatures();
1492
- f[a] && t.removeFeature(f[a]);
1493
- }), R(), po(e), u.value = !1, ze(e, "pointer");
1494
- }, B = (N) => {
1495
- var x, f, p, T;
1496
- const a = l.value.findIndex((V) => V.id === N);
1497
- if (a !== -1) {
1498
- l.value.splice(a, 1);
1499
- const V = document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");
1500
- V[a] && ((f = (x = V[a]) == null ? void 0 : x.parentNode) == null || f.removeChild(V[a]));
1501
- const G = t.getFeatures();
1502
- G[a] && t.removeFeature(G[a]);
1503
- }
1504
- (T = (p = r.getProps()) == null ? void 0 : p.lineDrawEnd) == null || T.call(p, l.value);
1505
- }, R = () => {
1506
- if (l.value = [], document.querySelectorAll(".ol-tooltip.ol-tooltip-static").forEach((N) => {
1507
- var a;
1508
- (a = N == null ? void 0 : N.parentNode) == null || a.removeChild(N);
1509
- }), t == null || t.clear(), w) {
1510
- const N = e.getInteractions().getArray().find((a) => et(a) === et(w));
1511
- N && e.removeInteraction(N);
1512
- }
1513
- e.removeLayer(n), o != null && o.parentNode && o.parentNode.removeChild(o), C != null && C.parentNode && C.parentNode.removeChild(C);
1514
- };
1515
- return {
1516
- open: h,
1517
- close: q,
1518
- deleteLine: B,
1519
- setUnit: i,
1520
- getState: () => u.value
1521
- };
1522
- }, gt = (e, r) => {
1523
- const s = He(e);
1524
- let i = "";
1525
- switch (r) {
1526
- case "m":
1527
- i = `${Math.round(s * 100) / 100} m`;
1528
- break;
1529
- case "km":
1530
- i = `${Math.round(s / 1e3 * 100) / 100} km`;
1531
- break;
1532
- case "nm":
1533
- i = (Math.round(s / 1e3 * 100) / 100 / 1.852).toFixed(2) + " nm";
1534
- break;
1535
- }
1536
- return i;
1537
- }, Co = (e, r) => {
1538
- let l, s;
1539
- const i = () => {
1540
- o(), ze(e, "crosshair");
1541
- }, o = () => {
1542
- t(), C(), A(), P();
1543
- };
1544
- let u = null, h = null;
1545
- const t = () => {
1546
- if (u && h) return;
1547
- const R = new de(), Z = new ye({
1548
- source: R,
1549
- style: new X({
1550
- stroke: new ve({
1551
- color: "#fbcc33",
1552
- width: 2
1553
- })
1554
- })
1555
- });
1556
- u = Z, h = R, e.on("pointermove", m), e.addLayer(Z), e.on(["dblclick"], function(N) {
1557
- y && (N.stopPropagation(), N.preventDefault());
1558
- });
1559
- };
1560
- let n;
1561
- const m = (R) => {
1562
- if (R.dragging) return;
1563
- const Z = n ? "单击继续,双击结束" : "点击选择起点";
1564
- b && (b.innerHTML = Z, W.setPosition(R.coordinate));
1565
- };
1566
- let y, k = !1;
1567
- const P = () => {
1568
- if (l) {
1569
- b != null && b.parentNode && b.parentNode.removeChild(b);
1570
- const R = l.getGeometry();
1571
- if (!R) return;
1572
- const Z = w(R, "nm");
1573
- g && (g.innerHTML = `
1574
- <span class="text">面积:${Z}${k ? '<span class="error pl-12">超出可以绘画的距离</span>' : ""}</span>
1575
- `), g && (g.innerHTML += '<span class="delete-icon" ><i class="map-iconfont icon-delete" /></div>');
1576
- const N = R.getCoordinates(), a = N[0][N[0].length - 2];
1577
- if (S.setPosition(a), u) {
1578
- const f = u.getSource();
1579
- f && l && (f.clear(), f.addFeature(l));
1580
- }
1581
- setTimeout(() => {
1582
- var f;
1583
- (f = document.querySelector(".delete-icon")) == null || f.addEventListener("click", () => {
1584
- var p, T;
1585
- console.log("delete"), q(), (T = (p = r.getProps()) == null ? void 0 : p.areaDrawEnd) == null || T.call(p, []);
1586
- });
1587
- }, 0);
1588
- const x = qt(l.getGeometry().getExtent());
1589
- e == null || e.getView().setCenter(x);
1590
- return;
1591
- }
1592
- y = new Se({
1593
- type: "Polygon",
1594
- source: h,
1595
- trace: !0,
1596
- style: [new X({
1597
- stroke: new ve({
1598
- color: "rgba(255, 255, 255, 1)",
1599
- width: 1.5,
1600
- lineDash: [10, 10]
1601
- }),
1602
- fill: new j({
1603
- color: "rgba(255, 255, 255, 0.25)"
1604
- })
1605
- }), new X({
1606
- image: new Ve({
1607
- radius: 5,
1608
- fill: new j({
1609
- color: "rgb(51,112,255, 1)"
1610
- })
1611
- }),
1612
- geometry: function(R) {
1613
- const Z = R.getGeometry().getCoordinates();
1614
- return new Ht(Z);
1615
- }
1616
- })]
1617
- }), e == null || e.addInteraction(y), y.on("drawstart", (R) => {
1618
- var Z;
1619
- n = R.feature, s = (Z = n.getGeometry()) == null ? void 0 : Z.on("change", (N) => {
1620
- const a = N.target, x = w(a, "nm"), p = a.getCoordinates()[0], T = new Pe([p[p.length - 2], p[p.length - 1]]), V = gt(T, "nm");
1621
- if (k = Number(He(T) / 1e3) > 150, !x) return;
1622
- const G = '<span class="error pl-4">超出可以绘画的距离</span>';
1623
- g && (g.innerHTML = `
1624
- <div class="text">
1625
- 面积:${x}
1626
- ${k ? G : ""}
1627
- </div>
1628
- `), b && (b.innerHTML = `
1629
- <div class="text">
1630
- 面积:${x}
1631
- </div>
1632
- <div class="text ${k ? "error" : ""}">
1633
- 线段 ${p.length - 2}: ${V}
1634
- ${k ? G : ""}
1635
-
1636
- </div>
1637
- <div>
1638
- <span class="text">单击继续,双击结束</span>
1639
- </div>
1640
- `);
1641
- });
1642
- }), y.on("drawend", (R) => {
1643
- var x, f, p, T;
1644
- if (!R.feature.getGeometry()) return;
1645
- g && !l && (g.innerHTML += '<span class="delete-icon"><i class="map-iconfont icon-delete" /></div>'), l = R.feature, S.setOffset([10, 0]);
1646
- const N = R.feature.getGeometry().getCoordinates(), a = N[0][N[0].length - 2];
1647
- if (S.setPosition(a), b != null && b.parentNode && b.parentNode.removeChild(b), (x = r.getProps()) != null && x.areaDrawEnd) {
1648
- const V = N[0].map((G) => ke(G, K.mercator, K.data));
1649
- (p = (f = r.getProps()) == null ? void 0 : f.areaDrawEnd) == null || p.call(f, V);
1650
- }
1651
- y && (y.setActive(!1), e == null || e.removeInteraction(y), (e == null ? void 0 : e.getInteractions()).forEach((G) => {
1652
- G instanceof Se && (G.setActive(!1), e == null || e.removeInteraction(G));
1653
- })), s && We(s), (T = document.querySelector(".delete-icon")) == null || T.addEventListener("click", () => {
1654
- var V, G;
1655
- q(), (G = (V = r.getProps()) == null ? void 0 : V.areaDrawEnd) == null || G.call(V, []);
1656
- });
1657
- });
1658
- }, w = (R, Z) => {
1659
- const N = Bt(R);
1660
- switch (Z) {
1661
- case "km":
1662
- return N > 1e4 ? Math.round(N / 1e6 * 100) / 100 + " km<sup>2</sup>" : Math.round(N * 100) / 100 + " m<sup>2</sup>";
1663
- case "nm":
1664
- return N > 1e4 ? Math.round(N / 1e6 / Math.pow(1.852, 2) * 100) / 100 + " nm<sup>2</sup>" : Math.round(N * 100) / 100 + " m<sup>2</sup>";
1665
- }
1666
- };
1667
- let g, S;
1668
- const C = () => {
1669
- g != null && g.parentNode && g.parentNode.removeChild(g), g = document.createElement("div"), g.style.display = "flex", g.className = "ol-tooltip ol-tooltip-draw-polygon", S = new ce({
1670
- element: g,
1671
- offset: [0, -15],
1672
- positioning: "bottom-center",
1673
- stopEvent: !1,
1674
- insertFirst: !1
1675
- }), e == null || e.addOverlay(S);
1676
- };
1677
- let b, W;
1678
- const A = () => {
1679
- b != null && b.parentNode && b.parentNode.removeChild(b), b = document.createElement("div"), b.className = "ol-tooltip ol-help-tooltip", W = new ce({
1680
- element: b,
1681
- offset: [15, 0],
1682
- positioning: "center-left"
1683
- }), e == null || e.addOverlay(W);
1684
- }, q = () => {
1685
- h == null || h.clear(), l = null, C(), A(), P();
1686
- };
1687
- return {
1688
- open: i,
1689
- close: () => {
1690
- h == null || h.clear(), h = null, u && (e.removeLayer(u), u = null), n = null, y && (y.setActive(!1), (e == null ? void 0 : e.getInteractions()).forEach((Z) => {
1691
- Z instanceof Se && (Z.setActive(!1), e == null || e.removeInteraction(Z));
1692
- }), y = null), s && We(s), b != null && b.parentElement && b.parentElement.removeChild(b), g != null && g.parentElement && g.parentElement.removeChild(g), W && e.removeOverlay(W), S && e.removeOverlay(S), ze(e, "pointer");
1693
- },
1694
- reset: q
1695
- };
1696
- }, Lo = "zh-map-port-layer", Eo = (e) => {
1697
- const r = new de(), l = new ye({
1698
- className: Lo,
1699
- source: r,
1700
- zIndex: 100,
1701
- updateWhileInteracting: !0,
1702
- updateWhileAnimating: !0
1703
- });
1704
- e == null || e.addLayer(l);
1705
- let s = null, i = null;
1706
- const o = (k, P = !0) => {
1707
- if (!k || k.length === 0) return;
1708
- if (r.clear(), i) {
1709
- const g = k.find((S) => S.id === (i == null ? void 0 : i.id));
1710
- g ? i = g : k.push(i);
1711
- }
1712
- const w = [];
1713
- if (k.forEach((g) => {
1714
- const [S, C] = g.latLon.split(","), b = new ie({
1715
- geometry: new le(ee([Number(S), Number(C)])),
1716
- portData: g,
1717
- id: g.id,
1718
- select: g.id === (i == null ? void 0 : i.id),
1719
- showTitle: g.id === (i == null ? void 0 : i.id) || P
1720
- }), W = u(b);
1721
- b.setStyle(W), w.push(b);
1722
- }), r.addFeatures(w), i) {
1723
- console.log("selectedPortData-----------", i);
1724
- const g = r.getFeatures().find((S) => S.get("id") === (i == null ? void 0 : i.id));
1725
- if (console.log("feature-----------", g), g) {
1726
- const S = g.getStyle();
1727
- console.log("styles------------", S), S && S.getText().setBackgroundFill(new j({ color: "#FF5733" }));
1728
- }
1729
- }
1730
- }, u = (k) => {
1731
- const { select: P, showTitle: w } = k.getProperties(), g = (q) => `<svg width="46" height="46" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
1732
- <path fill-rule="evenodd" clip-rule="evenodd" d="M22.6563 44.9304C22.5453 44.8844 22.4445 44.817 22.3595 44.7321C22.3595 44.7321 9.36986 31.7424 9.32952 31.6913C7.09059 29.0791 5.64794 25.8802 5.17255 22.4736C4.69716 19.0671 5.20896 15.5957 6.64728 12.471C8.08561 9.34625 10.3902 6.69909 13.2878 4.84325C16.1855 2.98741 19.5548 2.00068 22.9965 2C26.4381 1.99932 29.8078 2.98473 32.7062 4.83943C35.6046 6.69414 37.9102 9.34039 39.3498 12.4646C40.7893 15.5888 41.3025 19.0599 40.8284 22.4666C40.3544 25.8734 38.913 29.0729 36.6751 31.686C36.6401 31.737 23.6531 44.7321 23.6531 44.7321C23.5682 44.817 23.4674 44.8844 23.3564 44.9304C23.2454 44.9763 23.1265 45 23.0063 45C22.8862 45 22.7673 44.9763 22.6563 44.9304Z" fill="${q}"/>
1733
- <g clip-path="url(#clip0_10059_122082)">
1734
- <path d="M34.8624 22.8687L32.5874 25.6313L33.4812 25.7125C33.4812 25.7125 30.5562 28.0687 27.9562 28.2312C25.3562 28.3937 24.1374 24.9 24.1374 24.9V19.1312H27.6312V17.425H24.2999V15.15C25.7624 14.6625 26.7374 13.2812 26.7374 11.6562C26.7374 9.625 25.1124 8 23.0812 8H22.9999C20.9687 8 19.3437 9.625 19.3437 11.6562C19.3437 13.2812 20.3999 14.6625 21.7812 15.15V17.425H18.4499V19.1312H21.9437V24.9C21.9437 24.9 20.6437 28.3125 18.0437 28.2312C15.4437 28.0687 12.5187 25.7125 12.5187 25.7125L13.4124 25.6313L11.0562 22.8687L10.2437 26.2812L11.2187 26.0375C11.2187 26.0375 13.1687 29.5313 16.1749 30.8313C19.1812 32.2125 22.1874 33.9187 22.8374 34C23.4874 33.9187 26.4937 32.2125 29.4187 30.8313C32.3437 29.45 34.3749 26.0375 34.3749 26.0375L35.3499 26.2812L34.8624 22.8687ZM23.0812 13.6875C21.9437 13.6875 21.0499 12.7937 21.0499 11.6562C21.0499 10.6 21.9437 9.70625 22.9999 9.70625H23.0812C24.1374 9.70625 25.0312 10.6 25.0312 11.6562C25.1124 12.7937 24.1374 13.6875 23.0812 13.6875Z" fill="white"/>
1735
- </g>
1736
- <defs>
1737
- <clipPath id="clip0_10059_122082">
1738
- <rect width="26" height="26" fill="white" transform="translate(10 8)"/>
1739
- </clipPath>
1740
- </defs>
1741
- </svg>
1742
- `, S = () => `data:image/svg+xml;utf8,${encodeURIComponent(g(P ? "#FF5733" : "#3370FF"))}`, C = e.getView().getZoom(), b = k.get("portData"), W = {
1743
- image: new Oe({
1744
- src: S(),
1745
- scale: 0.5 * C / 10
1746
- }),
1747
- zIndex: P ? 110 : 100
1748
- }, A = {
1749
- text: new ge({
1750
- text: b.shortName,
1751
- font: "12px sans-serif",
1752
- fill: new j({
1753
- color: P ? "#ffffff" : "#000000"
1754
- }),
1755
- backgroundFill: new j({
1756
- color: "#FFF"
1757
- }),
1758
- offsetY: 30
1759
- })
1760
- };
1761
- return !w && !P ? new X({
1762
- ...W
1763
- }) : new X({
1764
- ...W,
1765
- ...A
1766
- });
1767
- }, h = () => {
1768
- if (r)
1769
- if (s) {
1770
- console.log("清除非选中的港口");
1771
- const k = s.get("portData").id;
1772
- r.getFeatures().forEach((P) => {
1773
- P.get("portData").id !== k && r.removeFeature(P);
1774
- });
1775
- } else
1776
- console.log("清除所有港口", r), r == null || r.clear();
1777
- }, t = (k) => {
1778
- if (r) {
1779
- if (!k)
1780
- return n();
1781
- (s == null ? void 0 : s.get("portData").id) !== k.id && (n(), m(k));
1782
- }
1783
- }, n = () => {
1784
- var k;
1785
- if (s) {
1786
- const P = s == null ? void 0 : s.get("portData"), w = (k = r.getFeatures()) == null ? void 0 : k.find((g) => g.get("portData").id === P.id);
1787
- if (w) {
1788
- const g = u(w);
1789
- w.set("select", !1), w.setStyle(g), s = null, i = null;
1790
- }
1791
- }
1792
- }, m = (k) => {
1793
- var w;
1794
- if (!r) return;
1795
- const P = r.getFeatures();
1796
- if (i = k, s = P.find((g) => g.get("portData").id === k.id), s) {
1797
- s.set("select", !0);
1798
- const g = u(s);
1799
- g && ((w = g == null ? void 0 : g.getText()) == null || w.setBackgroundFill(new j({
1800
- color: "#FF5733"
1801
- }))), s.setStyle(g);
1802
- }
1803
- };
1804
- return {
1805
- render: o,
1806
- clear: h,
1807
- selected: t,
1808
- handlePortHover: (k) => {
1809
- const P = e == null ? void 0 : e.getTargetElement();
1810
- k && k.get("portData") && P && (P.style.cursor = "pointer");
1811
- }
1812
- };
1813
- }, To = (e, r, l, s, i, o) => {
1814
- const u = e.getInstall();
1815
- u.on("moveend", () => {
1816
- var h, t;
1817
- try {
1818
- const n = e.getZoom();
1819
- (t = (h = r.getProps()).mapMoveEnd) == null || t.call(h, n), l.reRenderTrackLine(), s.changeShipScale("end");
1820
- } catch (n) {
1821
- console.log("moveend---catch", n);
1822
- }
1823
- }), u.on("pointermove", (h) => {
1824
- try {
1825
- const t = u == null ? void 0 : u.getEventPixel(h.originalEvent);
1826
- if (!t || !u) return;
1827
- const n = u == null ? void 0 : u.forEachFeatureAtPixel(t, (m) => m, {
1828
- layerFilter: (m) => m.getVisible()
1829
- });
1830
- s == null || s.handleShipMapEvent(n, "hover"), l == null || l.handleTrackMapEvent(n, "hover", h), n && (i == null || i.handlePortHover(n));
1831
- } catch (t) {
1832
- console.log("pointermove---catch", t);
1833
- }
1834
- }), u.on("movestart", () => {
1835
- try {
1836
- const h = u == null ? void 0 : u.getView().getZoom();
1837
- h && h <= te.shipModelMax && h >= te.shipTriggleMin && s.changeShipScale("start");
1838
- } catch (h) {
1839
- console.log("movestart---catch", h);
1840
- }
1841
- }), u.on("singleclick", Ne((h) => {
1842
- var t, n, m;
1843
- try {
1844
- if (console.log("1", o.getState()), o.getState()) return;
1845
- const y = u.getFeaturesAtPixel(h.pixel);
1846
- if (!y && y.length === 0) return;
1847
- console.log("features------------", y);
1848
- let k = null, P = null;
1849
- if (y == null || y.forEach((w) => {
1850
- w.get("shipData") && (k = w), w.get("portData") && (P = w);
1851
- }), k)
1852
- s.handleShipMapEvent(k, "click", (t = r.getProps()) == null ? void 0 : t.selectShip);
1853
- else if (P) {
1854
- const w = P.get("portData");
1855
- i.selected(w), (m = (n = r.getProps()) == null ? void 0 : n.selectPort) == null || m.call(n, w);
1856
- }
1857
- h.preventDefault(), h.stopPropagation();
1858
- } catch (y) {
1859
- console.log("click---catch", y);
1860
- }
1861
- }, 150)), u.getView().on("change:resolution", Ne(() => {
1862
- const h = u == null ? void 0 : u.getView().getZoom();
1863
- h && h <= te.shipModelMax && h >= te.shipTriggleMin && s.changeSelectedScale("start");
1864
- }, 10));
1865
- }, Fo = () => {
1866
- const e = St([]);
1867
- return {
1868
- createInstance: (s, i) => {
1869
- const o = eo();
1870
- o.initMap(s, i);
1871
- const u = o.getInstall(), h = wo(u), t = xo();
1872
- t.setProps(i), h.setShowLayerType(i.layerType), h.setGreenTileVisible(i.showGreenLayer);
1873
- const n = so(u), m = lo(u, n), y = mo(u), k = bo(u), P = Mo(u, t), w = Co(u, t), g = Eo(u);
1874
- To(o, t, n, y, g, P);
1875
- const S = () => {
1876
- const b = u.getView().calculateExtent(o.getSize()), W = ke([b[0], b[1]], K.mercator, K.data), A = ke([b[2], b[3]], K.mercator, K.data);
1877
- return [W[0], W[1], A[0], A[1]];
1878
- }, C = {
1879
- id: Symbol("map-instance"),
1880
- innerMap: null,
1881
- map: o.getInstall(),
1882
- destroy: () => {
1883
- e.splice(e.indexOf(C), 1);
1884
- },
1885
- methods: {
1886
- ...o,
1887
- layer: h,
1888
- ship: y,
1889
- track: n,
1890
- carTrack: m,
1891
- port: {
1892
- render: g.render,
1893
- clear: g.clear,
1894
- selected: g.selected
1895
- },
1896
- position: k,
1897
- drawLine: P,
1898
- drawPolygon: w,
1899
- // 子模块
1900
- utils: {
1901
- getCalculateExtent: S,
1902
- convertSixHundredThousandToLatLng: je,
1903
- calculateCirclePoints: to
1904
- }
1905
- }
1906
- };
1907
- return e.push(C), C;
1908
- },
1909
- destroyInstance: (s) => {
1910
- const i = e.findIndex((o) => o.id === s);
1911
- i > -1 && (e[i].destroy(), e.splice(i, 1));
1912
- },
1913
- destroyAll: () => {
1914
- e.forEach((s) => s.destroy()), e.splice(0, e.length);
1915
- },
1916
- getAllInstances: () => [...e]
1917
- };
1918
- }, Po = { class: "zh-map-box" }, So = /* @__PURE__ */ Ye({
1919
- __name: "Map",
1920
- props: {
1921
- zoom: { default: te.default },
1922
- center: { default: It },
1923
- layerType: { default: "vector" },
1924
- showGreenLayer: { type: Boolean, default: !1 },
1925
- showScale: { type: Boolean, default: !0 },
1926
- scaleLineUnit: { default: "metric" },
1927
- mapMoveEnd: { type: Function, default: () => {
1928
- } },
1929
- lineDrawEnd: {},
1930
- areaDrawEnd: { type: Function, default: () => {
1931
- } },
1932
- selectShip: { type: Function, default: () => {
1933
- } },
1934
- selectPort: { type: Function, default: () => {
1935
- } }
1936
- },
1937
- setup(e, { expose: r }) {
1938
- const l = I(), s = I(), i = Fo(), o = I(), u = e, h = I({
1939
- getInstall() {
1940
- }
1941
- });
1942
- return Nt(() => {
1943
- var t;
1944
- o.value = i.createInstance(l.value, u), h.value = o.value.methods, (t = s.value) == null || t.setScaleLine(o.value.map, u.scaleLineUnit);
1945
- }), Vt(() => {
1946
- var t, n;
1947
- i.destroyInstance((t = o == null ? void 0 : o.value) == null ? void 0 : t.id), (n = o.value) == null || n.destroy();
1948
- }), r({
1949
- getZoom: () => {
1950
- var t;
1951
- return (t = o.value) == null ? void 0 : t.methods.getZoom();
1952
- },
1953
- setZoom: (t) => {
1954
- var n;
1955
- return (n = o.value) == null ? void 0 : n.methods.setZoom(t);
1956
- },
1957
- getInstall: () => {
1958
- var t;
1959
- return (t = o.value) == null ? void 0 : t.methods.getInstall();
1960
- },
1961
- getView: () => {
1962
- var t;
1963
- return (t = o.value) == null ? void 0 : t.methods.getView();
1964
- },
1965
- setCenter: (t, n) => {
1966
- var m;
1967
- return (m = o.value) == null ? void 0 : m.methods.setCenter(t, n);
1968
- },
1969
- getSize: () => {
1970
- var t;
1971
- return (t = o.value) == null ? void 0 : t.methods.getSize();
1972
- },
1973
- getCenter: (t, n) => {
1974
- var m;
1975
- return (m = o.value) == null ? void 0 : m.methods.getCenter();
1976
- },
1977
- layer: {
1978
- setGreenTileVisible: (t) => {
1979
- var n;
1980
- return (n = o.value) == null ? void 0 : n.methods.layer.setGreenTileVisible(t);
1981
- },
1982
- getGreenTileVisible: () => {
1983
- var t;
1984
- return (t = o.value) == null ? void 0 : t.methods.layer.getGreenTileVisible();
1985
- },
1986
- getShowLayerType: () => {
1987
- var t;
1988
- return (t = o.value) == null ? void 0 : t.methods.layer.getShowLayerType();
1989
- },
1990
- setShowLayerType: (t) => {
1991
- var n;
1992
- return (n = o.value) == null ? void 0 : n.methods.layer.setShowLayerType(t);
1993
- }
1994
- },
1995
- ship: {
1996
- render: (...t) => {
1997
- var n;
1998
- return (n = o.value) == null ? void 0 : n.methods.ship.render(...t);
1999
- },
2000
- selected: (...t) => {
2001
- var n;
2002
- return (n = o.value) == null ? void 0 : n.methods.ship.selected(...t);
2003
- },
2004
- filter: (...t) => {
2005
- var n;
2006
- return (n = o.value) == null ? void 0 : n.methods.ship.filter(...t);
2007
- },
2008
- blinking: (...t) => {
2009
- var n;
2010
- return (n = o.value) == null ? void 0 : n.methods.ship.blinking(...t);
2011
- },
2012
- clear: () => {
2013
- var t;
2014
- return (t = o.value) == null ? void 0 : t.methods.ship.clear();
2015
- }
2016
- },
2017
- track: {
2018
- render: (...t) => {
2019
- var n;
2020
- return (n = o.value) == null ? void 0 : n.methods.track.render(...t);
2021
- },
2022
- remove: (...t) => {
2023
- var n;
2024
- return (n = o.value) == null ? void 0 : n.methods.track.remove(...t);
2025
- },
2026
- play: (...t) => {
2027
- var n;
2028
- return (n = o.value) == null ? void 0 : n.methods.track.play(...t);
2029
- },
2030
- setCenter: (...t) => {
2031
- var n;
2032
- return (n = o.value) == null ? void 0 : n.methods.track.setCenter(...t);
2033
- },
2034
- close: (...t) => {
2035
- var n;
2036
- return (n = o.value) == null ? void 0 : n.methods.track.close(...t);
2037
- },
2038
- getLength: (...t) => {
2039
- var n;
2040
- return (n = o.value) == null ? void 0 : n.methods.track.getLength(...t);
2041
- }
2042
- },
2043
- carTrack: {
2044
- location: (...t) => {
2045
- var n;
2046
- return (n = o.value) == null ? void 0 : n.methods.carTrack.location(...t);
2047
- },
2048
- remove: (...t) => {
2049
- var n;
2050
- return (n = o.value) == null ? void 0 : n.methods.carTrack.remove(...t);
2051
- },
2052
- renderTrack: (...t) => {
2053
- var n;
2054
- return (n = o.value) == null ? void 0 : n.methods.carTrack.renderTrack(...t);
2055
- },
2056
- setCenter: (...t) => {
2057
- var n;
2058
- return (n = o.value) == null ? void 0 : n.methods.carTrack.setCenter(...t);
2059
- },
2060
- closeTrack: () => {
2061
- var t;
2062
- return (t = o.value) == null ? void 0 : t.methods.carTrack.closeTrack();
2063
- },
2064
- playTrack: (...t) => {
2065
- var n;
2066
- return (n = o.value) == null ? void 0 : n.methods.carTrack.playTrack(...t);
2067
- }
2068
- },
2069
- port: {
2070
- render: (t, n) => {
2071
- var m;
2072
- return (m = o.value) == null ? void 0 : m.methods.port.render(t, n);
2073
- },
2074
- clear: () => {
2075
- var t;
2076
- return (t = o.value) == null ? void 0 : t.methods.port.clear();
2077
- },
2078
- selected: (t) => {
2079
- var n;
2080
- return (n = o.value) == null ? void 0 : n.methods.port.selected(t);
2081
- }
2082
- },
2083
- position: {
2084
- render: (...t) => {
2085
- var n;
2086
- return (n = o.value) == null ? void 0 : n.methods.position.render(...t);
2087
- },
2088
- selected: (...t) => {
2089
- var n;
2090
- return (n = o.value) == null ? void 0 : n.methods.position.selected(...t);
2091
- },
2092
- clearSelected: (...t) => {
2093
- var n;
2094
- return (n = o.value) == null ? void 0 : n.methods.position.clearSelected(...t);
2095
- },
2096
- clear: () => {
2097
- var t;
2098
- return (t = o.value) == null ? void 0 : t.methods.position.clear();
2099
- }
2100
- },
2101
- drawLine: {
2102
- open: () => {
2103
- var t;
2104
- return (t = o.value) == null ? void 0 : t.methods.drawLine.open();
2105
- },
2106
- close: () => {
2107
- var t;
2108
- return (t = o.value) == null ? void 0 : t.methods.drawLine.close();
2109
- },
2110
- deleteLine: (t) => {
2111
- var n;
2112
- return (n = o.value) == null ? void 0 : n.methods.drawLine.deleteLine(t);
2113
- },
2114
- setUnit: (t) => {
2115
- var n;
2116
- return (n = o.value) == null ? void 0 : n.methods.drawLine.setUnit(t);
2117
- },
2118
- getState: () => {
2119
- var t;
2120
- return (t = o.value) == null ? void 0 : t.methods.drawLine.getState();
2121
- }
2122
- },
2123
- drawPolygon: {
2124
- open: () => {
2125
- var t;
2126
- return (t = o.value) == null ? void 0 : t.methods.drawPolygon.open();
2127
- },
2128
- close: () => {
2129
- var t;
2130
- return (t = o.value) == null ? void 0 : t.methods.drawPolygon.close();
2131
- },
2132
- reset: () => {
2133
- var t;
2134
- return (t = o.value) == null ? void 0 : t.methods.drawPolygon.reset();
2135
- }
2136
- },
2137
- // 子模块
2138
- utils: {
2139
- getCalculateExtent: (...t) => {
2140
- var n;
2141
- return (n = o.value) == null ? void 0 : n.methods.utils.getCalculateExtent(...t);
2142
- },
2143
- convertSixHundredThousandToLatLng: (...t) => {
2144
- var n;
2145
- return (n = o.value) == null ? void 0 : n.methods.utils.convertSixHundredThousandToLatLng(...t);
2146
- },
2147
- calculateCirclePoints: (t, n) => {
2148
- var m;
2149
- return (m = o.value) == null ? void 0 : m.methods.utils.calculateCirclePoints(t, n);
2150
- }
2151
- }
2152
- }), (t, n) => (Be(), qe("div", Po, [
2153
- De("div", {
2154
- id: "map",
2155
- ref_key: "zhMapRef",
2156
- ref: l,
2157
- class: "zh-map"
2158
- }, null, 512),
2159
- Ae(Jt, {
2160
- ref_key: "scaleLineRef",
2161
- ref: s
2162
- }, null, 512),
2163
- Ae(Ut, {
2164
- ref: "zoomControlRef",
2165
- "map-instance": o.value
2166
- }, null, 8, ["map-instance"])
2167
- ]));
2168
- }
2169
- }), No = /* @__PURE__ */ Xe(So, [["__scopeId", "data-v-1fa3c6fd"]]), Zo = Xt(No);
2170
- export {
2171
- Zo as Z
2172
- };