zhihao-ui 1.3.58-alpha.6 → 1.3.58-alpha.8

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.
Files changed (33) hide show
  1. package/dist/es/{BaseInfo-DKBBAr5h.js → BaseInfo-DQDrfkpP.js} +2 -2
  2. package/dist/es/{BaseItem-Q3XdscQ-.js → BaseItem-CW_Tc1b0.js} +3 -3
  3. package/dist/es/{Button-B2Z_WKdq.js → Button-BZBqS9F9.js} +2 -2
  4. package/dist/es/{CascaderLoadMore-Dsb_tK-O.js → CascaderLoadMore-QshoszNX.js} +2 -2
  5. package/dist/es/{DatePicker-C1pTOs2W.js → DatePicker-BNhByILC.js} +3 -3
  6. package/dist/es/{DetailHeader-Bbe3QzQc.js → DetailHeader-rmu9KWWE.js} +3 -3
  7. package/dist/es/{DetailSubTitle-D02cB8NQ.js → DetailSubTitle-BSCe90Yt.js} +2 -2
  8. package/dist/es/{Dialog-BynyEy56.js → Dialog-B9tSFJ9X.js} +3 -3
  9. package/dist/es/{DiyDataTable-Bc_wX-Ef.js → DiyDataTable-B9bTbjTa.js} +4 -4
  10. package/dist/es/{EditInfoPair-DUVVgScj.js → EditInfoPair-8lUF5LUl.js} +3 -3
  11. package/dist/es/{FileWrapper-BKWkQlPw.js → FileWrapper-C1oRDjoD.js} +4 -4
  12. package/dist/es/{Grid-Boo-wcAp.js → Grid-BvdUxSrz.js} +2 -2
  13. package/dist/es/{InfoPair-D4m5TSIA.js → InfoPair-DRSF0kBy.js} +3 -3
  14. package/dist/es/{Input-EcnKRK5Q.js → Input-BMtEIIw_.js} +3 -3
  15. package/dist/es/{Loading-Mq3IiaFA.js → Loading-D29Qk4cA.js} +2 -2
  16. package/dist/es/Map-CYsmvG9C.js +2450 -0
  17. package/dist/es/{MessageBox-wQY1ft63.js → MessageBox-CUtR7qN4.js} +2 -2
  18. package/dist/es/{MoneyInput-BCq23_x7.js → MoneyInput-BSTInWMb.js} +5 -5
  19. package/dist/es/{PageHeadPanel-B2Uqf3zz.js → PageHeadPanel-Bqixa7gi.js} +2 -2
  20. package/dist/es/{Table-C--wSMKv.js → Table-23MIYW5G.js} +6 -6
  21. package/dist/es/{ToolTips-CVkx0nFU.js → ToolTips-C452kfSA.js} +3 -3
  22. package/dist/es/index.js +23 -23
  23. package/dist/es/{utils-vqG84sMo.js → utils-NSTGfydw.js} +1 -1
  24. package/dist/es/{vendor-MMWA2y7U.js → vendor-s-OhSGrk.js} +22839 -23666
  25. package/dist/index.css +1 -1
  26. package/dist/types/components/Map/Map.vue.d.ts +0 -10
  27. package/dist/types/components/Map/function/drawPolygon.d.ts +1 -1
  28. package/dist/types/components/Map/function/event.d.ts +1 -3
  29. package/dist/types/components/Map/index.d.ts +0 -30
  30. package/dist/umd/index.css +1 -1
  31. package/dist/umd/index.umd.cjs +50 -122
  32. package/package.json +2 -2
  33. package/dist/es/Map-CAbB_F9P.js +0 -2888
@@ -1,2888 +0,0 @@
1
- var _t = Object.defineProperty;
2
- var Kt = (e, n, i) => n in e ? _t(e, n, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[n] = i;
3
- var Ge = (e, n, i) => Kt(e, typeof n != "symbol" ? n + "" : n, i);
4
- import { defineComponent as ut, openBlock as gt, createElementBlock as ft, createElementVNode as ct, ref as ye, computed as Qe, h as be, createVNode as at, render as jt, reactive as Jt, onMounted as Qt, onUnmounted as Ut } from "vue";
5
- import { S as It, M as Ct, T as Oe, X as Ae, t as ie, V as eo, u as to, D as ht, v as Rt, j as $t, w as yt, x as oo, y as We, F as ue, z as re, O as pe, P as de, A as Xe, B as vt, L as $e, G as no, H as kt, I as ce, J as we, K as ve, N as Le, Q as et, R as Ce, U as ro, W as io, Y as lo, Z as Nt, _ as Ie, $ as dt, a0 as Lt, a1 as so, a2 as co, a3 as ao, a4 as pt } from "./vendor-MMWA2y7U.js";
6
- import { _ as mt } from "./Button-B2Z_WKdq.js";
7
- import { w as uo } from "./utils-vqG84sMo.js";
8
- const go = { id: "scale-line-container" }, fo = /* @__PURE__ */ ut({
9
- __name: "scaleLine",
10
- setup(e, { expose: n }) {
11
- return n({
12
- setScaleLine: (o, c) => {
13
- c || (c = "metric");
14
- const d = new It({
15
- units: c
16
- }), l = document.getElementById("scale-line-container");
17
- l && (d.setTarget(l), o.addControl(d));
18
- }
19
- }), (o, c) => (gt(), ft("div", go));
20
- }
21
- }), ho = /* @__PURE__ */ mt(fo, [["__scopeId", "data-v-2bc5dee8"]]), yo = { class: "zoom" }, vo = /* @__PURE__ */ ut({
22
- __name: "zoomControl",
23
- props: {
24
- mapInstance: {
25
- type: Object,
26
- default: () => null
27
- }
28
- },
29
- setup(e) {
30
- const n = e;
31
- console.log("props", n);
32
- const i = () => {
33
- console.log("props");
34
- const { setZoom: c, getZoom: d, getInstall: l } = n.mapInstance.methods;
35
- if (!l()) return;
36
- const M = d();
37
- M && c(M + 1);
38
- }, o = () => {
39
- const { setZoom: c, getZoom: d, getInstall: l } = n.mapInstance.methods;
40
- if (!l()) return;
41
- const M = d();
42
- M && c(M - 1);
43
- };
44
- return (c, d) => (gt(), ft("div", yo, [
45
- ct("div", {
46
- class: "button big-button",
47
- onClick: i
48
- }, " + "),
49
- ct("div", {
50
- class: "button small-button",
51
- onClick: o
52
- }, " - ")
53
- ]));
54
- }
55
- }), mo = /* @__PURE__ */ mt(vo, [["__scopeId", "data-v-78a81741"]]), Ue = "a6e8f78974f2581f2ca00485b40c948f", fe = {
56
- // 地图默认层级
57
- default: 13,
58
- // 地图缩放最小层级
59
- min: 3,
60
- // 地图缩放最大层级
61
- max: 18,
62
- // 船形图标最小渲染层级
63
- shipModelMin: 13,
64
- // 船形图标最小渲染层级
65
- shipTriggleMin: 16,
66
- // 船形图标最大渲染层级
67
- shipModelMax: 18,
68
- //根据原系统canvas图片转换svg长宽比例计算缩放值
69
- scaleNum: 0.555
70
- }, ge = {
71
- // 经纬度 源数据 地理坐标 WGS84
72
- data: "EPSG:4326",
73
- // 墨卡托投影坐标 渲染坐标
74
- mercator: "EPSG:3857"
75
- }, wo = [114.84, 30.52], zt = "https://static.zhihaoscm.cn/", tt = 2003750834e-2;
76
- var Fe = ((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=${Ue}`, 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=${Ue}`, 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=${Ue}`, 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=${Ue}`, e.greenTile = `${zt}/map/tile/{z}/{x}/{y}.png`, e))(Fe || {}), He = /* @__PURE__ */ ((e) => (e[e.M = 1] = "M", e[e.KM = 2] = "KM", e[e.NM = 3] = "NM", e))(He || {}), se = /* @__PURE__ */ ((e) => (e.PORT = "port", e.SHIP = "ship", e.TRACK = "track", e.DELETE = "delete", e.PATH = "path", e))(se || {});
77
- function xo() {
78
- const e = ye(), n = ye(!0), i = () => e.value, o = () => i().getView(), c = (g) => {
79
- n.value = g;
80
- }, d = () => n.value, l = () => {
81
- var g;
82
- return (g = o()) == null ? void 0 : g.getZoom();
83
- }, S = (g) => {
84
- var a;
85
- (a = o()) == null || a.setZoom(g);
86
- }, M = (g, a) => {
87
- var u;
88
- (u = o()) == null || u.setCenter(ie([g, a]));
89
- }, y = () => {
90
- var a;
91
- const g = (a = o()) == null ? void 0 : a.getCenter();
92
- return Rt(g);
93
- }, t = () => {
94
- var g;
95
- return (g = i()) == null ? void 0 : g.getSize();
96
- }, r = () => {
97
- const g = window.navigator.userAgent, a = /iPad|iPhone|iPod/.test(g), u = /Safari/.test(g) && !/CriOS/.test(g), h = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(g);
98
- return a && (u || h);
99
- }, $ = new Ct(), D = (g, a) => {
100
- R(a);
101
- const u = {
102
- zoom: a.zoom,
103
- center: ie(a.center),
104
- minZoom: fe.min,
105
- maxZoom: fe.max,
106
- constrainResolution: !0,
107
- enableRotation: !1,
108
- multiWorld: !0
109
- };
110
- let h = {
111
- target: g,
112
- controls: to({
113
- zoom: !1
114
- }),
115
- layers: [
116
- $.get("vectorTile"),
117
- $.get("vectorTileMark"),
118
- $.get("satelliteImgTile"),
119
- $.get("satelliteImgTileMark")
120
- ],
121
- view: new eo(u)
122
- };
123
- const v = new Ct(h);
124
- if (r()) {
125
- const x = new ht({
126
- handleEvent: function(m) {
127
- if (m.type === "dblclick") {
128
- console.log("IOS Browser---dblclick"), m.originalEvent.preventDefault();
129
- const E = v.getView(), I = E.getZoom();
130
- return E.setZoom(I + 1), !1;
131
- }
132
- return !0;
133
- }
134
- });
135
- v.addInteraction(x);
136
- }
137
- e.value = v;
138
- }, R = (g) => {
139
- $.set("vectorTile", new Oe({
140
- source: new Ae({ url: Fe.vectorTile }),
141
- visible: g.layerType === "vector",
142
- zIndex: 0,
143
- preload: 1,
144
- className: "vector"
145
- })), $.set("vectorTileMark", new Oe({
146
- source: new Ae({ url: Fe.vectorTileMark }),
147
- visible: g.layerType === "vector",
148
- zIndex: 1,
149
- preload: 1,
150
- className: "vector"
151
- })), $.set("satelliteImgTile", new Oe({
152
- source: new Ae({ url: Fe.satelliteImgTile }),
153
- visible: g.layerType === "satellite",
154
- zIndex: 0,
155
- preload: 1,
156
- className: "satellite"
157
- })), $.set("satelliteImgTileMark", new Oe({
158
- source: new Ae({ url: Fe.satelliteImgTileMark }),
159
- visible: g.layerType === "satellite",
160
- zIndex: 1,
161
- preload: 1,
162
- className: "satellite"
163
- })), $.set("greenMark", new Oe({
164
- source: new Ae({ url: Fe.greenTile }),
165
- visible: g.showGreenLayer,
166
- zIndex: 2,
167
- className: "greenTile"
168
- }));
169
- };
170
- return {
171
- getInstall: i,
172
- getView: o,
173
- getZoom: l,
174
- setZoom: S,
175
- setCenter: M,
176
- getCenter: y,
177
- getSize: t,
178
- initMap: D,
179
- setBaseLayerMap: R,
180
- setMapClick: c,
181
- getMapClick: d
182
- };
183
- }
184
- const wt = function(e, n) {
185
- const i = Number(n) / 6e5;
186
- return [Number(e) / 6e5, i];
187
- }, bo = (e, n) => {
188
- const i = ie(e), o = n * 1e3, c = [
189
- i[0] - o,
190
- i[1] - o,
191
- i[0] + o,
192
- i[1] + o
193
- ], d = oo(c, ge.mercator, ge.data);
194
- return {
195
- leftTopPoint: { lng: d[0], lat: d[3] },
196
- rightTopPoint: { lng: d[2], lat: d[3] },
197
- rightBottomPoint: { lng: d[2], lat: d[1] },
198
- leftBottomPoint: { lng: d[0], lat: d[1] }
199
- };
200
- }, Co = function(e, n) {
201
- const o = yt(e);
202
- let c = "";
203
- switch (console.log(n, He), n) {
204
- case He.M:
205
- c = Math.round(o * 100) / 100 + " m";
206
- break;
207
- case He.KM:
208
- c = Math.round(o / 1e3 * 100) / 100 + " km";
209
- break;
210
- case He.NM:
211
- c = (Math.round(o / 1e3 * 100) / 100 / 1.852).toFixed(2) + " nm";
212
- break;
213
- }
214
- return c;
215
- };
216
- function ko(e) {
217
- const n = e[0] * tt / 180;
218
- let i = Math.log(Math.tan((90 + e[1]) * Math.PI / 360)) / (Math.PI / 180);
219
- return i = i * tt / 180, [n, i];
220
- }
221
- function Re(e = "") {
222
- let n = e.replace(/&?/g, "&");
223
- return n = n.replace(/&#x([0-9a-fA-F]+);?/g, (i, o) => {
224
- const c = parseInt(o, 16);
225
- return String.fromCodePoint(c);
226
- }), n;
227
- }
228
- const Mt = (e) => {
229
- const n = new We({
230
- font: "Normal 14px map-iconfont",
231
- text: Re(e),
232
- fill: new ue({ color: "#fff" }),
233
- offsetY: -14
234
- });
235
- return new re({
236
- text: n,
237
- zIndex: 100
238
- });
239
- }, Pt = (e, n = "lonlat") => {
240
- const i = { lon: 0, lat: 0 }, o = e[0] / tt * 180;
241
- let c = e[1] / tt * 180;
242
- return c = 180 / Math.PI * (2 * Math.atan(Math.exp(c * Math.PI / 180)) - Math.PI / 2), i.lon = o, i.lat = c, n === "lonlat" ? i : [o, c];
243
- }, Lo = (e) => {
244
- const n = $t.duration(e, "minutes"), i = Math.floor(n.asDays()), o = n.hours(), c = n.minutes();
245
- let d = `${String(c).padStart(2, "0")}分`;
246
- return o !== 0 && (d = `${String(o).padStart(2, "0")}时${d}`), i !== 0 && (d = `${String(i).padStart(2, "0")}天${d}`), d;
247
- }, po = (e, n) => {
248
- let i = null;
249
- const o = async (t) => {
250
- if (!e || (console.log("vehicleInfo", t), !(t != null && t.lon && (t != null && t.lat)))) return;
251
- const r = Math.abs(Number(t.lon)) > 180 ? wt(t.lon, t.lat) : [t.lon, t.lat];
252
- c(t, ie(r));
253
- const $ = e == null ? void 0 : e.getView(), D = new de(r);
254
- $.setCenter(Xe(D.getCoordinates(), ge.data, ge.mercator));
255
- }, c = (t, r) => {
256
- const $ = `${zt}map/car-icon.gif`;
257
- i || (i = new pe({
258
- element: document.createElement("div"),
259
- positioning: "center-center",
260
- stopEvent: !1
261
- // 允许交互事件穿透
262
- }), e.addOverlay(i));
263
- const D = i.getElement();
264
- D.style.backgroundImage = `url(${$})`, D.style.width = "80px", D.style.height = "80px";
265
- const R = (t == null ? void 0 : t.drc) || "";
266
- D.style.transform = `rotate(${R}deg)`, D.style.backgroundSize = "cover", i == null || i.setPosition(r);
267
- };
268
- return {
269
- location: o,
270
- remove: () => {
271
- const t = i == null ? void 0 : i.getElement();
272
- t && (t.innerHTML = "");
273
- },
274
- renderTrack: (t, r, $) => {
275
- n.render(t, r, $, "truck", 1e3);
276
- },
277
- setCenter: (t) => {
278
- n.setCenter(t);
279
- },
280
- closeTrack: () => {
281
- n.close();
282
- },
283
- playTrack: (t, r) => {
284
- n.play(t, r);
285
- }
286
- };
287
- };
288
- var Vt = /* @__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))(Vt || {}), me = /* @__PURE__ */ ((e) => (e.left = "left", e.right = "right", e.front = "front", e.up = "up", e.down = "down", e.back = "back", e))(me || {});
289
- const Mo = (e) => {
290
- const n = /* @__PURE__ */ new Map(), i = {};
291
- let o = null;
292
- const c = "--";
293
- let d = null;
294
- const l = document.createElement("div"), S = new pe({
295
- element: l,
296
- positioning: "top-left",
297
- className: "track-label-popup"
298
- });
299
- let M, y, t, r, $, D = !1, R = Date.now(), g, a = 0, u = null, h = 20;
300
- const v = 8, x = [], m = (f) => {
301
- var b;
302
- for (x.unshift(f); x.length > v; ) {
303
- const k = x.pop(), T = n.get(k);
304
- T && ((b = T.getSource()) == null || b.clear(), e == null || e.removeLayer(T), n.delete(k), delete i[k]);
305
- }
306
- };
307
- let E = "";
308
- const I = ["#ff0000", "#00ff00", "#0079ff", "#ffa500", "#800080", "#008080", "#ffc0cb", "#800000", "#000080", "#808000"], oe = vt(async () => {
309
- if (o && i[o] && n.get(o).getVisible()) {
310
- console.log("reRenderTrackLine------------"), await he(o);
311
- const f = Z(o, i[o]);
312
- C(o, f);
313
- }
314
- }, 100), K = () => o && i[o] && n.get(o).getVisible(), Z = (f, b) => {
315
- let k = [];
316
- const T = Math.max(1, Math.floor(b.length / h));
317
- return k = b.filter((O, V) => V % T === 0).map((O, V) => {
318
- if (Number(O.lon) > 180 || Number(O.lat) > 180) {
319
- const [_, Q] = wt(O.lon, O.lat);
320
- O.lon = _, O.lat = Q;
321
- }
322
- return O.center = [O.lon, O.lat], O.centerPoint = ko(O.center), O.time = $t(O.createdAt).format("YYYY-MM-DD HH:mm:ss"), O.id = f, O.index = V, O;
323
- }), k.filter(
324
- (O, V, _) => V === _.findIndex(
325
- (Q) => Math.abs(Q.lon - O.lon) < 1e-6 && Math.abs(Q.lat - O.lat) < 1e-6
326
- )
327
- );
328
- }, W = async (f, b, k, T = "ship", L = 200) => {
329
- if (!e || JSON.stringify(i[f]) === JSON.stringify(b) && o === f || (b = b == null ? void 0 : b.reverse(), S && T === "ship" && (e != null && e.getOverlays().getArray().includes(S) || e.addOverlay(S)), (b == null ? void 0 : b.length) < 2))
330
- return;
331
- m(f), o = f, i[f] = b, h = L;
332
- const X = Object.keys(i).findIndex((O) => O === f) || 0;
333
- E = k || I[X > 10 ? 10 : X], await U(), await Ze(o);
334
- }, G = (f) => {
335
- const b = new ve();
336
- return new we({
337
- source: b,
338
- visible: !1,
339
- // 默认隐藏
340
- className: `track-layer-${f}`,
341
- renderBuffer: 1024,
342
- properties: { layerType: se.TRACK },
343
- zIndex: 10
344
- });
345
- }, Y = (f) => {
346
- n.forEach((b, k) => {
347
- var L;
348
- const T = k === f;
349
- b.getVisible() !== T && (b.setVisible(T), e.getLayers().getArray().includes(b) || e.addLayer(b), T || (L = b.getSource()) == null || L.clear());
350
- }), o = f;
351
- }, U = async () => {
352
- const f = o;
353
- if (!n.has(f)) {
354
- const X = G(f);
355
- n.set(f, X);
356
- }
357
- await Y(f);
358
- const b = E || "", k = i[f] || [];
359
- if (!(k && k.length > 1)) return [];
360
- let T = [];
361
- T = Z(f, k);
362
- const L = T.map((X) => X.centerPoint);
363
- T.length >= 2 && await p(f, L, b);
364
- }, p = (f, b, k) => {
365
- const T = new $e(b), L = n.get(f).getSource(), X = L.getFeatureById(f);
366
- if (X)
367
- X.setGeometry(T), X.setId(f), X.setStyle(w(k)), u = X;
368
- else {
369
- const O = new ce({ geometry: T });
370
- O.setId(f), O.set("type", "line"), O.setStyle(w(k)), L.addFeature(O), u = O;
371
- }
372
- return u;
373
- }, w = (f) => new re({
374
- stroke: new Le({
375
- color: f,
376
- width: 2
377
- })
378
- }), F = (f, b, k) => {
379
- try {
380
- const T = f == null ? void 0 : f.get("data");
381
- if (f && T && b === "hover") {
382
- e.getTargetElement().style.cursor = T ? "pointer" : "";
383
- const L = q(T), X = k == null ? void 0 : k.coordinate;
384
- X && (l.querySelector(".popup-content"), l.innerHTML = L, S == null || S.setPosition(X));
385
- } else
386
- S && S.setPosition(void 0);
387
- } catch (T) {
388
- console.error("handleTrackMapEvent", T);
389
- }
390
- }, q = (f) => {
391
- if (!(f != null && f.time)) return;
392
- let b = "";
393
- return f != null && f.stayTime && (b = `
394
- <div class="item w-100">
395
- <div class="item-label">停泊时间约</div>
396
- <div class="item-item">${Lo(Number(f.stayTime))}</div>
397
- </div>
398
- `), `
399
- <div class="track-point-popup">
400
- <div class="item">
401
- <div class="item-label">状态</div>
402
- <div class="item-item">${f != null && f.sailStatus ? Vt[f.sailStatus] : c}</div>
403
- </div>
404
- <div class="item">
405
- <div class="item-label">航速</div>
406
- <div class="item-item">${f.speed || c}</div>
407
- </div>
408
- <div class="item">
409
- <div class="item-label">艏向</div>
410
- <div class="item-item">${f.hdg || c}</div>
411
- </div>
412
- <div class="item">
413
- <div class="item-label">航向</div>
414
- <div class="item-item">${f.cog || c}</div>
415
- </div>
416
- <div class="item">
417
- <div class="item-label">经度</div>
418
- <div class="item-item">${f.lon || c}</div>
419
- </div>
420
- <div class="item">
421
- <div class="item-label">纬度</div>
422
- <div class="item-item">${f.lat || c}</div>
423
- </div>
424
- <div class="item w-100">
425
- <div class="item-label">时间</div>
426
- <div class="item-item">${f.time}</div>
427
- </div>
428
- ${b ?? b}
429
- </div>`;
430
- }, j = (f) => {
431
- const k = f.map((V) => {
432
- const _ = e.getPixelFromCoordinate(ie(V.center));
433
- return {
434
- ...V,
435
- original: V,
436
- pixel: _,
437
- distance: 0
438
- // 先初始化,后续计算
439
- };
440
- });
441
- let T = 0;
442
- k[0].distance = 0;
443
- for (let V = 1; V < k.length; V++) {
444
- const _ = k[V - 1].pixel, Q = k[V].pixel, ae = Q[0] - _[0], N = Q[1] - _[1];
445
- T += Math.sqrt(ae * ae + N * N), k[V].distance = T;
446
- }
447
- const L = k.filter(
448
- (V, _) => _ === 0 || _ === k.length - 1
449
- ), X = [];
450
- for (let V = 0; V < L.length; V++) {
451
- const _ = L[V];
452
- if (X.push(_), V < L.length - 1) {
453
- const Q = L[V + 1], ae = Q.distance - _.distance, N = Math.floor(ae / 100);
454
- for (let ee = 1; ee <= N; ee++) {
455
- const ne = _.distance + ee * 100;
456
- if (ne >= Q.distance) break;
457
- const le = s(
458
- k,
459
- ne
460
- );
461
- le && X.push(le);
462
- }
463
- }
464
- }
465
- return Array.from(
466
- new Map(X.map((V) => [V.distance.toFixed(2), V])).values()
467
- ).map((V) => ({
468
- ...V.original,
469
- // 优先保留原始数据
470
- ...V,
471
- // 覆盖坐标等计算属性
472
- coord: V.coord,
473
- // 确保使用插值后的坐标
474
- pixel: V.pixel,
475
- distance: V.distance
476
- }));
477
- };
478
- function s(f, b) {
479
- for (let k = 1; k < f.length; k++) {
480
- const T = f[k - 1], L = f[k];
481
- if (b >= T.distance && b <= L.distance) {
482
- const X = (b - T.distance) / (L.distance - T.distance), O = T.pixel[0] + X * (L.pixel[0] - T.pixel[0]), V = T.pixel[1] + X * (L.pixel[1] - T.pixel[1]), _ = e == null ? void 0 : e.getCoordinateFromPixel([O, V]);
483
- return {
484
- ...T,
485
- // 继承前一个点的属性(可调整)
486
- coord: _,
487
- pixel: [O, V],
488
- distance: b,
489
- original: void 0
490
- // 明确标记为插值生成点
491
- };
492
- }
493
- }
494
- return null;
495
- }
496
- const C = async (f, b) => {
497
- const k = j(b);
498
- console.log("simplifiedPoints", k.length, "list", b.length);
499
- const T = k.map((V) => P(V)), L = k.map((V) => H(V, E)), X = rt(f, k, b, E);
500
- n.get(f).getSource().addFeatures([...T, ...L, ...X]);
501
- }, P = (f) => {
502
- const b = new ce({
503
- geometry: new de(f.centerPoint),
504
- data: f
505
- });
506
- b.set("type", "track_point"), b.set("trackId", f.id), b.set("data", f);
507
- let k = [
508
- ...xe(f, E)
509
- ];
510
- return (f.index === 0 || f.index === i[f.id].length - 1) && (k = [..._e(f)], b.set("type", "track_begin")), f.state !== void 0 && f.state !== null && (k = [...ke(f)], b.set("type", "track_icon")), b.setStyle(k), b;
511
- }, z = window.devicePixelRatio || 1, A = /* @__PURE__ */ new Map();
512
- let B = null, te = null;
513
- function J(f, b) {
514
- const k = `${f}`;
515
- if (A.has(k))
516
- return A.get(k);
517
- if (!B) {
518
- B = document.createElement("canvas");
519
- try {
520
- te = B.getContext("2d", {
521
- willReadFrequently: !0
522
- });
523
- } catch (bt) {
524
- console.log("e", bt), te = B.getContext("2d");
525
- }
526
- }
527
- const T = B, L = te;
528
- if (!L) return "";
529
- T.width = 0, T.height = 0;
530
- const X = 2, O = 8, V = 16, _ = window.devicePixelRatio || 1, Q = "500 12px Arial";
531
- L.font = Q;
532
- const N = L.measureText(f).width, ee = O + N + O, ne = X + 14 + X;
533
- let le = 0, Me = 0, Ee = 0, Te = 0, De = 0, Ne = 0, Se = 0, ze = 0;
534
- le = V + ee, Me = V + ne, Ee = ee, Te = ne, De = ee + V, Ne = 0, Se = 0, ze = V, T.width = Math.round(le * _), T.height = Math.round(Me * _), L.scale(_, _), L.clearRect(0, 0, le, Me), L.beginPath(), L.moveTo(Ee, Te), L.lineTo(De, Ne), L.strokeStyle = b || "#FFF", L.lineWidth = 1, L.stroke(), L.fillStyle = "#FFF", L.fillRect(Se, ze, ee, ne), L.strokeStyle = b || "#FFF", L.lineWidth = 1, L.strokeRect(Se, ze, ee, ne), L.font = Q, L.textBaseline = "middle";
535
- const je = ze + X / 2 + ne / 2;
536
- L.strokeStyle = "#ffffff", L.lineWidth = 1, L.strokeText(f, Se + O, je), L.fillStyle = "#000000", L.fillText(f, Se + O, je);
537
- const Je = T.toDataURL("image/png");
538
- return A.set(k, Je), Je;
539
- }
540
- const H = (f, b) => {
541
- const k = J(f.time, b), T = new ce({
542
- geometry: new de(f.centerPoint),
543
- data: f
544
- });
545
- T.set("type", "track_point_label");
546
- const L = new re({
547
- image: new Ce({
548
- src: k,
549
- anchor: [1, 0],
550
- displacement: [0, 0],
551
- scale: 1 / z,
552
- anchorXUnits: "fraction",
553
- anchorYUnits: "fraction"
554
- }),
555
- zIndex: 100
556
- });
557
- return T.setStyle(L), T;
558
- }, he = (f) => {
559
- const b = n.get(f).getSource();
560
- b.forEachFeature((k) => {
561
- k.get("type") !== "line" && b.removeFeature(k);
562
- });
563
- }, xe = (f, b) => [
564
- new re({
565
- // 扩大交互热区
566
- image: new et({
567
- stroke: new Le({ color: "rgba(0, 0, 0, 0.01)", width: 20 }),
568
- radius: 3
569
- })
570
- }),
571
- // 轨迹点样式
572
- new re({
573
- image: new et({
574
- fill: new ue({ color: b }),
575
- stroke: new Le({ color: "#fff", width: 2 }),
576
- radius: 3
577
- })
578
- })
579
- // textStyle,
580
- ], ke = (f) => {
581
- const b = "#E31818", k = "#1890FF", T = "&#xe6d2", L = new re({
582
- text: new We({
583
- font: "Normal 22px map-iconfont",
584
- text: Re(T),
585
- offsetY: -10,
586
- fill: new ue({
587
- color: Number(f.state) === 0 ? b : Number(f.state) === 1 ? k : ""
588
- })
589
- }),
590
- zIndex: 99
591
- }), O = Mt("&#xe6e2;"), _ = Mt("&#xe703;"), Q = [];
592
- return Number(f.state) === 0 ? Q.push(O) : Number(f.state) === 1 && Q.push(_), Q.push(L), Q;
593
- }, rt = (f, b, k, T) => {
594
- const L = b || [], X = b.length;
595
- X || (L.push(k[0]), L.push(k[k.length - 1]));
596
- const O = new Set(b.map((_) => `${_.centerPoint[0]},${_.centerPoint[1]}`)), V = [];
597
- for (let _ = 0; _ < X - 1; _++) {
598
- let Q;
599
- const ae = b[_], N = (b[_ + 1].index + ae.index) / 2;
600
- if (N % 2 === 0)
601
- Q = k[N].centerPoint;
602
- else {
603
- const ee = k[Math.floor(N)], ne = k[Math.ceil(N)];
604
- if (ee && ne) {
605
- const [le, Me] = ee.centerPoint, [Ee, Te] = ne.centerPoint;
606
- Q = [(le + Ee) / 2, (Me + Te) / 2];
607
- }
608
- }
609
- if (Q) {
610
- const ee = `${Q[0]},${Q[1]}`;
611
- if (!O.has(ee)) {
612
- const ne = new ce({
613
- geometry: new de(Q)
614
- });
615
- ne.set("type", "track_arrow"), ne.setStyle(
616
- new re({
617
- text: new We({
618
- font: "700 12px map-iconfont",
619
- text: Re("&#xe6bc;"),
620
- fill: new ue({ color: T }),
621
- rotation: xt(
622
- b[_].center,
623
- b[_ + 1].center
624
- ) * (Math.PI / 180)
625
- })
626
- })
627
- ), V.push(ne), O.add(ee);
628
- }
629
- }
630
- }
631
- return V;
632
- }, Ze = (f) => {
633
- var X, O;
634
- const b = e.getView(), k = (X = n == null ? void 0 : n.get(f)) == null ? void 0 : X.getSource(), T = u || (f ? k == null ? void 0 : k.getFeatureById(f) : null);
635
- if (!T) return;
636
- const L = (O = T == null ? void 0 : T.getGeometry()) == null ? void 0 : O.getExtent();
637
- if (!L || L[0] === L[2] || L[1] === L[3]) {
638
- console.warn("Invalid track extent");
639
- return;
640
- }
641
- try {
642
- const V = L[2] - L[0], _ = L[3] - L[1], Q = 1e-4;
643
- if (V < Q || _ < Q) {
644
- const N = [(L[0] + L[2]) / 2, (L[1] + L[3]) / 2];
645
- b.setCenter(N);
646
- return;
647
- }
648
- const ae = no(L, Math.max(V, _) * 0.1);
649
- b.fit(ae, {
650
- maxZoom: fe.max,
651
- padding: [30, 30, 30, 30]
652
- // 添加边距
653
- });
654
- } catch (V) {
655
- console.error("setTrackViewCenter error:", V);
656
- }
657
- }, _e = (f) => {
658
- const b = "&#xe69b;", L = f.index === 0 ? "#fcdc3f" : "#ff0000";
659
- return [new re({
660
- text: new We({
661
- font: "Normal 14px map-iconfont",
662
- text: Re(b),
663
- fill: new ue({ color: L })
664
- }),
665
- zIndex: 101
666
- })];
667
- }, Ht = () => {
668
- console.log("清除所有的轨迹-----"), Ke(), n.forEach((b) => {
669
- var k;
670
- (k = b.getSource()) == null || k.clear(), e == null || e.removeLayer(b);
671
- }), Object.keys(i).forEach((b) => {
672
- n.delete(b), delete i[b];
673
- });
674
- }, Zt = (f) => {
675
- const b = n.get(f || o);
676
- b == null || b.setVisible(!1);
677
- const k = e.getOverlays().getArray();
678
- for (let T = 0; T < k.length; ) {
679
- const L = k[T];
680
- L.get("class") === "track-label-overlay" ? (L.setPosition(void 0), L.dispose()) : T++;
681
- }
682
- Ke();
683
- }, Dt = (f, b = He.NM) => {
684
- const k = {
685
- id: f,
686
- length: "--"
687
- }, L = (i[f] || []).map(
688
- (O) => Xe([O.lon, O.lat], ge.data, ge.mercator)
689
- ), X = new $e(L);
690
- return k.length = Co(X, b) || "--", k;
691
- }, Gt = (f, b) => {
692
- Yt(String(f), b);
693
- }, Yt = (f, b) => {
694
- const k = i[String(f)], T = k == null ? void 0 : k.map((L) => [L.lon, L.lat]);
695
- T && Xt(T, b);
696
- }, it = new re({
697
- text: new We({
698
- font: "700 20px map-iconfont",
699
- text: Re("&#xe657;"),
700
- fill: new ue({ color: "#ff0000" }),
701
- rotation: 0
702
- // 初始旋转角度
703
- })
704
- }), Bt = (f, b) => {
705
- var N, ee;
706
- const k = Number(50 * b), T = ((N = f.frameState) == null ? void 0 : N.time) ?? Date.now(), L = T - R;
707
- if (a = (a + k * L / 1e6) % 2, R = T, a >= 1) {
708
- Ke();
709
- return;
710
- }
711
- const X = y.getCoordinateAt(
712
- a > 1 ? 2 - a : a
713
- ), O = y.getCoordinateAt(
714
- a > 1 ? a - 0.01 : a
715
- ), V = y.getCoordinateAt(
716
- a > 1 ? 2 - a : a + 0.01
717
- ), Q = xt(
718
- Pt(O, "array"),
719
- Pt(V, "array")
720
- ) * Math.PI / 180;
721
- (ee = it.getText()) == null || ee.setRotation(Q), r.setCoordinates(X);
722
- const ae = ro(f);
723
- ae.setStyle(it), ae.drawGeometry(r), e == null || e.render();
724
- }, qt = () => {
725
- var f;
726
- D = !0, R = Date.now(), a = 0, r = ((f = t.getGeometry()) == null ? void 0 : f.clone()) || new de([0, 0]), d && (g == null || g.on("postrender", d)), $ == null || $.setGeometry(void 0);
727
- }, Ke = () => {
728
- D && (D = !1, $ == null || $.setGeometry(void 0), d && g && g.un("postrender", d), g && (e == null || e.removeLayer(g)), g = null, $ = null);
729
- }, Xt = (f, b) => {
730
- D && Ke(), M = new kt({
731
- factor: 1e6
732
- }).writeGeometry(new $e(f)), y = new kt({
733
- factor: 1e6
734
- }).readGeometry(M, {
735
- dataProjection: ge.data,
736
- featureProjection: ge.mercator
737
- }), t = new ce({
738
- type: "icon",
739
- geometry: new de(y.getFirstCoordinate())
740
- });
741
- const k = t.getGeometry();
742
- r = k ? k.clone() : new de([0, 0]), $ = new ce({
743
- type: "geoMarker",
744
- style: it,
745
- geometry: r
746
- }), g = new we({
747
- source: new ve({
748
- features: [$]
749
- })
750
- }), e == null || e.addLayer(g), d = (T) => Bt(T, b), qt();
751
- }, xt = (f, b, k) => {
752
- function T(N) {
753
- return 180 * (N % (2 * Math.PI)) / Math.PI;
754
- }
755
- function L(N) {
756
- return N % 360 * Math.PI / 180;
757
- }
758
- function X(N) {
759
- var ee;
760
- if (!N) throw new Error("Coordinate is required");
761
- if (!Array.isArray(N)) {
762
- if ((N == null ? void 0 : N.type) === "Feature" && (N == null ? void 0 : N.geometry) !== null && ((ee = N == null ? void 0 : N.geometry) == null ? void 0 : ee.type) === "Point")
763
- return N == null ? void 0 : N.geometry.coordinates;
764
- if (N.type === "Point") return (N == null ? void 0 : N.coordinates) || [];
765
- }
766
- if (Array.isArray(N) && N.length >= 2 && !Array.isArray(N[0]) && !Array.isArray(N[1]))
767
- return N;
768
- throw new Error(
769
- "Coordinate must be GeoJSON Point or an Array of numbers"
770
- );
771
- }
772
- function O(N, ee, ne = {}) {
773
- if (ne.final)
774
- return function(je, Je) {
775
- return (O(Je, je) + 180) % 360;
776
- }(N, ee);
777
- const le = X(N), Me = X(ee), Ee = L(le[0]), Te = L(Me[0]), De = L(le[1]), Ne = L(Me[1]), Se = Math.sin(Te - Ee) * Math.cos(Ne), ze = Math.cos(De) * Math.sin(Ne) - Math.sin(De) * Math.cos(Ne) * Math.cos(Te - Ee);
778
- return T(Math.atan2(Se, ze));
779
- }
780
- function V(N) {
781
- return !isNaN(N) && N !== null && !Array.isArray(N);
782
- }
783
- function _(N, ee = {}, ne = {}) {
784
- return N || console.log("Coordinates are required"), Array.isArray(N) || console.log("Coordinates must be an Array"), N.length < 2 && console.log("Coordinates must be at least 2 numbers long"), (!V(N[0]) || !V(N[1])) && console.log("Coordinates must contain numbers"), Q({ type: "Point", coordinates: N }, ee, ne);
785
- }
786
- function Q(N, ee = {}, ne = {}) {
787
- const le = {
788
- type: "Feature",
789
- id: "",
790
- properties: {},
791
- bbox: {},
792
- geometry: {}
793
- };
794
- return ne.id !== void 0 && (le.id = ne.id), ne.bbox && (le.bbox = ne.bbox), le.properties = ee, le.geometry = N, le;
795
- }
796
- const ae = O(_(f), _(b), k);
797
- return ae < 0 ? 360 + ae : ae;
798
- };
799
- return {
800
- render: W,
801
- remove: Ht,
802
- play: Gt,
803
- setCenter: Ze,
804
- close: Zt,
805
- getLength: Dt,
806
- handleTrackMapEvent: F,
807
- reRenderTrackLine: oe,
808
- getTrackStatus: K
809
- };
810
- }, Po = () => {
811
- const e = ye();
812
- return {
813
- setProps: (o) => {
814
- e.value = o;
815
- },
816
- getProps: () => e.value
817
- };
818
- };
819
- function Eo(e) {
820
- const n = ye(null), i = Qe(() => ({
821
- "--overlay-color": "#FFF",
822
- "--bg-color1": e.colors && e.colors[0] ? e.colors[0] : "#ffffff",
823
- // 默认第一个颜色
824
- "--bg-color2": e.colors && e.colors[1] ? e.colors[1] : "#ffffff",
825
- "--bg-color": "#ffffff",
826
- position: "relative",
827
- "pointer-events": "none"
828
- })), o = Qe(() => {
829
- var l;
830
- return {
831
- position: "relative",
832
- "border-radius": "1px",
833
- "background-color": "var(--content-bg)",
834
- color: "#000",
835
- padding: "2px 5px 2px 0px",
836
- font: "500 Normal 12px",
837
- "font-size": "12px",
838
- "box-shadow": "0 2px 10px rgba(0, 0, 0, 0.2)",
839
- "white-space": "nowrap",
840
- border: "1px solid #FFF",
841
- "pointer-events": "auto",
842
- // 'transition': 'background-color 0.5s ease, border 0.5s ease',
843
- "z-index": "1",
844
- display: "flex",
845
- "align-items": "center",
846
- animation: e.selected ? e.colors && ((l = e.colors) == null ? void 0 : l.length) >= 2 ? "blink-dual 2s ease-in-out infinite" : "blink-single 1.5s ease-in-out infinite" : "none"
847
- // "animation": props.selected ? 'blink 1.5s ease-in-out infinite' : 'none', // 动画开关
848
- };
849
- }), c = Qe(() => ({
850
- width: "14px",
851
- height: "14px",
852
- margin: "1px 5px 1px 1px",
853
- "background-color": "var(--attention-bg)"
854
- })), d = Qe(() => ({
855
- position: "absolute",
856
- top: "0px",
857
- color: "var(--overlay-color)",
858
- "pointer-events": "none",
859
- transform: "translateY(-1px)",
860
- "z-index": "0",
861
- width: "20px",
862
- height: "20px",
863
- overflow: "visible",
864
- left: "-20px"
865
- }));
866
- return () => be("div", {
867
- ref: n,
868
- class: "ship-overlay-container",
869
- "data-id": e.id,
870
- style: i.value
871
- }, [
872
- be(
873
- "div",
874
- {
875
- class: "ship-overlay-content",
876
- style: o.value,
877
- "data-id": e.id
878
- },
879
- [
880
- be("div", {
881
- "data-id": e.id,
882
- style: e.selected ? c.value : {}
883
- }, ""),
884
- be("div", {
885
- class: "text",
886
- "data-id": e.id,
887
- style: {
888
- fontSize: "12px",
889
- fontWeight: 500,
890
- fontFamily: "Arial"
891
- }
892
- }, e.name || "未命名船舶"),
893
- be("div", {
894
- class: "icons",
895
- "data-id": e.id,
896
- style: {
897
- color: "#3370ff",
898
- marginLeft: "6px"
899
- }
900
- }, [
901
- e.existDevice ? be("i", {
902
- class: "map-iconfont icon-camera",
903
- "data-id": e.id,
904
- style: {
905
- fontSize: "12px",
906
- marginRight: "6px"
907
- }
908
- }) : "",
909
- e.existMobile ? be("i", {
910
- "data-id": e.id,
911
- class: "map-iconfont icon-tele",
912
- style: {
913
- fontSize: "12px",
914
- marginRight: "6px"
915
- }
916
- }) : "",
917
- e.existWaterGauge ? be("i", {
918
- "data-id": e.id,
919
- class: "map-iconfont icon-ruler",
920
- style: {
921
- fontSize: "12px",
922
- marginRight: "6px"
923
- }
924
- }) : ""
925
- ])
926
- ]
927
- ),
928
- be("svg", {
929
- class: "ship-overlay-line",
930
- style: d.value,
931
- viewBox: "0 0 20 20",
932
- xmlns: "http://www.w3.org/2000/svg"
933
- }, [
934
- be("line", {
935
- x1: "0",
936
- y1: "20",
937
- x2: "20",
938
- y2: "4",
939
- stroke: "white",
940
- "stroke-width": "1"
941
- })
942
- ])
943
- ]);
944
- }
945
- const Ot = (e) => {
946
- const { spd: n, hdg: i, cog: o } = e;
947
- return n ? i !== null && +i != 511 && o !== null ? o - +i >= 3 ? me.right : o - +i <= -3 ? me.left : me.front : me.front : "";
948
- };
949
- function To(e, n) {
950
- const { isHighlight: i, shipData: o, color: c } = e.getProperties(), d = ot(n), l = nt(n, o, d), S = ((o == null ? void 0 : o.cog) - 90 + 360) % 360, M = Ot(o);
951
- return {
952
- featureId: o.id,
953
- shipType: d,
954
- isHighlight: !!i,
955
- scale: l,
956
- fill: c,
957
- deg: S,
958
- direct: M
959
- };
960
- }
961
- const Be = /* @__PURE__ */ new Map();
962
- function So(e) {
963
- return `${e.featureId}_${e.shipType}_${e.isHighlight}_${e.scale}_${e.fill}_${e.deg}_${e.direct}`;
964
- }
965
- const Ve = (e, n) => {
966
- const i = To(n, e), o = So(i);
967
- if (Be.has(o))
968
- return Be.get(o);
969
- const { shipData: c } = n.getProperties(), d = ot(e), l = nt(e, c, d), S = Fo(n, l, d);
970
- return Be.set(o, S), S;
971
- }, ot = (e) => {
972
- const n = e == null ? void 0 : e.getView().getZoom();
973
- return n && n <= fe.shipModelMax && n >= fe.shipTriggleMin ? "ship" : "triangle";
974
- };
975
- let Et = null;
976
- const nt = (e, n, i) => {
977
- if (i === "triangle")
978
- return fe.scaleNum;
979
- const o = e == null ? void 0 : e.getView().getResolution();
980
- if (Et === o && i === "triangle")
981
- return fe.scaleNum;
982
- if (Et = o, i === "ship") {
983
- const { len: c, wid: d } = n, l = 97, S = 20, M = 1 / o, y = c * M / l, t = d * M / S, r = Math.min(y, t);
984
- return Math.max(0.2, Math.min(2, r));
985
- }
986
- return fe.scaleNum;
987
- }, Fo = (e, n, i) => {
988
- const { color: o, direct: c, isHighlight: d, shipData: l } = e.getProperties(), S = ((l == null ? void 0 : l.cog) - 90 + 360) % 360;
989
- return new re({
990
- image: new Ce({
991
- src: M(),
992
- scale: n || fe.scaleNum,
993
- anchor: [0.5, 0.5],
994
- rotation: S * Math.PI / 180,
995
- rotateWithView: !1
996
- })
997
- });
998
- function M() {
999
- return `data:image/svg+xml;utf8,${encodeURIComponent(y())}`;
1000
- }
1001
- function y() {
1002
- switch (i) {
1003
- case "triangle":
1004
- return `<svg width="41" height="24" viewBox="0 0 41 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1005
- <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"
1006
- fill="${o}" stroke="${d ? "#FF2424" : "black"}" stroke-width="${d ? "2" : "0.578947"}" />
1007
- <!--path船航向左边或者向前-->
1008
- ${c === me.left && `<path d="M30 12L40 12L40 8" stroke="${d ? "#FF2424" : "black"}" stroke-width="2"/>`}
1009
- <!--path船航向右边-->
1010
- ${c === me.right && `<path d="M30 12L40 12L40 16" stroke="${d ? "#FF2424" : "black"}" stroke-width="2"/>`}
1011
- <!--path黑线无左右-->
1012
- ${c === me.front && `<path d="M30 12L40 12" stroke="${d ? "#FF2424" : "black"}" stroke-width="1.5"/>`}
1013
- </svg>
1014
- `;
1015
- case "ship":
1016
- return `<svg width="97" height="20" viewBox="0 0 97 20" fill="none" xmlns="http://www.w3.org/2000/svg">
1017
- <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"
1018
- fill="${o}" stroke="${d ? "#FF2424" : "black"}" stroke-width="${d ? "4" : "0.578947"}"/>
1019
- ${c === me.left && `<path d="M86 10L96 10L96 6" stroke="${d ? "#FF2424" : "black"}" stroke-width="1.5"/>`}
1020
- ${c === me.right && `<path d="M86 10L96 10L96 14" stroke="${d ? "#FF2424" : "black"}" stroke-width="1.5"/>`}
1021
- ${c === me.front && `<path d="M86 10L96 10" stroke="${d ? "#FF2424" : "black"}" stroke-width="1.5"/>`}
1022
- </svg>
1023
- `;
1024
- default:
1025
- return "";
1026
- }
1027
- }
1028
- }, qe = /* @__PURE__ */ new Map();
1029
- function Ro(e, n) {
1030
- const i = ot(n), o = nt(n, e, i);
1031
- return `${i}_${o}_${i === "ship" ? 109 : 49}`;
1032
- }
1033
- const Tt = (e, n) => {
1034
- const i = Ro(n, e);
1035
- if (qe.has(i))
1036
- return qe.get(i);
1037
- const o = ot(e), c = nt(e, n, o), d = o === "ship" ? 109 : 49, l = `
1038
- <svg xmlns="http://www.w3.org/2000/svg" width="${d}" height="${d}" viewBox="0 0 49 49" fill="none">
1039
- <path d="M1.99982 46.9998L1.99982 1.99982L46.9998 1.99982L46.9998 46.9998L1.99982 46.9998Z" fill="#FF2424" fill-opacity="0.2"/>
1040
- <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"/>
1041
- </svg>
1042
- `, S = new re({
1043
- image: new Ce({
1044
- src: `data:image/svg+xml;utf8,${encodeURIComponent(l)}`,
1045
- scale: c,
1046
- anchorXUnits: "fraction",
1047
- anchorYUnits: "fraction"
1048
- })
1049
- });
1050
- return qe.set(i, S), S;
1051
- };
1052
- function $o(e, n, i, o) {
1053
- if (n) {
1054
- const c = new pe({
1055
- element: i,
1056
- positioning: "top-left",
1057
- id: "label-" + (o == null ? void 0 : o.id),
1058
- offset: [20, -20],
1059
- autoPan: !1,
1060
- position: n,
1061
- stopEvent: !1,
1062
- className: o != null && o.blinking ? "ship-label-overlay-blinking" : "ship-label-overlay"
1063
- });
1064
- c.set("class", "zh-map-ship-overlay"), e.addOverlay(c);
1065
- }
1066
- }
1067
- const No = (e, n) => {
1068
- const { lon: i, lat: o, blinking: c } = n, d = At(n);
1069
- i && o && $o(e, ie([i, o]), d, { ...n, blinking: c });
1070
- }, At = (e) => {
1071
- const n = document.createElement("div");
1072
- n.className = "ship-overlay-box", n.style.position = "relative";
1073
- const { lon: i, lat: o, blinking: c, blinkingColors: d, name: l } = e, S = at({
1074
- setup() {
1075
- return Eo({
1076
- id: e == null ? void 0 : e.id,
1077
- selected: c,
1078
- name: l,
1079
- colors: d || [],
1080
- existDevice: e == null ? void 0 : e.existDevice,
1081
- existMobile: e == null ? void 0 : e.existMobile,
1082
- existWaterGauge: e == null ? void 0 : e.existWaterGauge
1083
- });
1084
- }
1085
- });
1086
- return jt(S, n), n;
1087
- }, St = (e) => {
1088
- const n = [];
1089
- return e.existDevice && n.push("&#xe687;"), e.existMobile && n.push("&#xe688;"), e.existWaterGauge && n.push("&#xe686;"), n;
1090
- };
1091
- function zo() {
1092
- const e = [
1093
- "left-top",
1094
- "left-middle",
1095
- "left-bottom",
1096
- "right-top",
1097
- "right-middle",
1098
- "right-bottom"
1099
- ];
1100
- return e[Math.floor(Math.random() * e.length)];
1101
- }
1102
- const Vo = window.devicePixelRatio || 1, lt = /* @__PURE__ */ new Map();
1103
- let Ye = null, st = null;
1104
- function Oo(e, n, i = "left-bottom", o = 10) {
1105
- const c = `${e}-${n.join(",")}-${i}-${o}`;
1106
- if (lt.has(c))
1107
- return lt.get(c);
1108
- if (!Ye) {
1109
- Ye = document.createElement("canvas");
1110
- try {
1111
- st = Ye.getContext("2d", {
1112
- willReadFrequently: !0
1113
- });
1114
- } catch {
1115
- st = Ye.getContext("2d");
1116
- }
1117
- }
1118
- const d = Ye, l = st;
1119
- if (!l) return "";
1120
- d.width = 0, d.height = 0;
1121
- const S = 2, M = 4, y = 16, t = window.devicePixelRatio || 1, r = "500 12px Arial", $ = "12px map-iconfont";
1122
- l.font = r;
1123
- const R = l.measureText(e).width;
1124
- l.font = $;
1125
- const g = n.map((w) => ({ width: l.measureText(Re(w)).width, height: 14 })), a = g.reduce((w, F) => w + F.width, 0), u = n.length * o, h = M + R + a + u + M, v = S + 14 + S * 2;
1126
- let x, m, E = 0, I = 0, oe = 0, K = 0, Z = 0, W = 0;
1127
- switch (x = y + h, i) {
1128
- case "right-top":
1129
- m = y + v, E = 0, I = y + v, oe = y, K = 0, Z = y, W = 0;
1130
- break;
1131
- case "right-middle":
1132
- m = v, E = 0, I = v / 2, oe = y, K = v / 2, Z = y, W = 0;
1133
- break;
1134
- case "right-bottom":
1135
- m = y + v, E = 0, I = 0, oe = y, K = y, Z = y, W = y;
1136
- break;
1137
- case "left-top":
1138
- m = y + v, E = h, I = y, oe = h + y, K = v + y, Z = 0, W = 0;
1139
- break;
1140
- case "left-middle":
1141
- m = v, E = h, I = v / 2, oe = h + y, K = v / 2, Z = 0, W = 0;
1142
- break;
1143
- case "left-bottom":
1144
- m = y + v, E = h, I = v, oe = h + y, K = 0, Z = 0, W = y;
1145
- break;
1146
- }
1147
- m = m + S, d.width = Math.round(x * t), d.height = Math.round(m * t), l.scale(t, t), l.clearRect(0, 0, x, m), l.beginPath(), l.moveTo(E, I), l.lineTo(oe, K), l.strokeStyle = "#FFF", l.lineWidth = 1, l.stroke(), l.fillStyle = "#FFF", l.fillRect(Z, W, h, v), l.font = r, l.textBaseline = "middle";
1148
- const G = W + S / 2 + v / 2;
1149
- l.strokeStyle = "#ffffff", l.lineWidth = 1, l.strokeText(e, Z + M, G), l.fillStyle = "#000000", l.fillText(e, Z + M, G), l.font = $, l.fillStyle = "#3370ff";
1150
- let Y = Z + M + R + o;
1151
- const U = W + v / 2;
1152
- n.length > 0 && n.forEach((w, F) => {
1153
- l.fillText(Re(w), Y, U), Y += g[F].width + o;
1154
- });
1155
- const p = d.toDataURL("image/png");
1156
- return lt.set(c, p), p;
1157
- }
1158
- const Ft = (e, n) => {
1159
- const { name: i, rightIcons: o, selected: c } = e.getProperties(), d = n !== 1 ? zo() : "right-top", l = Oo(i, o, d);
1160
- let S = [0, 0];
1161
- switch (d) {
1162
- case "right-top":
1163
- S = [0, 1];
1164
- break;
1165
- case "right-middle":
1166
- S = [0, 0.5];
1167
- break;
1168
- case "right-bottom":
1169
- S = [0, 0];
1170
- break;
1171
- case "left-top":
1172
- S = [1, 1];
1173
- break;
1174
- case "left-middle":
1175
- S = [1, 0.5];
1176
- break;
1177
- case "left-bottom":
1178
- S = [1, 0];
1179
- break;
1180
- }
1181
- return new re({
1182
- image: new Ce({
1183
- src: l,
1184
- anchor: S,
1185
- displacement: [0, 0],
1186
- scale: 1 / Vo,
1187
- anchorXUnits: "fraction",
1188
- anchorYUnits: "fraction"
1189
- }),
1190
- zIndex: c ? 100 : 10
1191
- });
1192
- }, Ao = (e, n) => {
1193
- let i = null, o = null;
1194
- const c = new ve(), d = new io({
1195
- source: c,
1196
- className: "zh-map--ship-layer",
1197
- renderBuffer: 300,
1198
- zIndex: 101,
1199
- properties: { layerType: se.SHIP }
1200
- }), l = new ve(), S = new we({
1201
- source: l,
1202
- className: "zh-map--ship-label-layer",
1203
- zIndex: 102,
1204
- updateWhileInteracting: !1,
1205
- updateWhileAnimating: !1,
1206
- properties: { layerType: se.SHIP },
1207
- declutter: !0
1208
- }), M = new ve(), y = new we({
1209
- source: M,
1210
- className: "zh-map--ship-selected-layer",
1211
- zIndex: 999
1212
- });
1213
- e == null || e.addLayer(d), e == null || e.addLayer(S), e == null || e.addLayer(y);
1214
- let t = null, r = null, $ = null, D = "", R = {}, g = {};
1215
- const a = (s) => {
1216
- if (!s || !e) return;
1217
- const C = (o == null ? void 0 : o.id) || (i == null ? void 0 : i.get("id"));
1218
- if (o) {
1219
- const P = s.filter((z) => z.id === C);
1220
- P.length === 0 ? s.push(o) : o = P[0];
1221
- }
1222
- E(), w(s), x(), u(s);
1223
- }, u = (s) => {
1224
- Array.from(Be.keys()).forEach((C) => {
1225
- const P = C.split("_")[0];
1226
- s.find((A) => A.id === P) || Be.delete(C);
1227
- });
1228
- }, h = () => {
1229
- Array.from(qe.keys()).forEach((s) => {
1230
- qe.delete(s);
1231
- });
1232
- }, v = (s) => {
1233
- var H;
1234
- const C = (o == null ? void 0 : o.id) || (i == null ? void 0 : i.get("id")), P = ie([s == null ? void 0 : s.lon, s == null ? void 0 : s.lat]), z = ((H = g[s.id]) == null ? void 0 : H.blinkColors) || [], B = z[z.length - 1] || s.fill || "#04C900", te = Ot(s), J = new ce({
1235
- geometry: new de(P),
1236
- // 船舶数据
1237
- shipData: s,
1238
- id: s.id,
1239
- name: s.cnname || s.enname || s.name || s.id || "未命名船舶",
1240
- selected: s.id === C,
1241
- // 图标
1242
- rightIcons: St(s),
1243
- // 船舶颜色
1244
- color: B,
1245
- // 船艏向的方向
1246
- direct: te,
1247
- // 高亮
1248
- isHighlight: !1
1249
- });
1250
- return J.set("clickGeometry", new Nt(P)), J;
1251
- }, x = () => {
1252
- if (o && e && o) {
1253
- M.getFeatures().length > 0 && M.clear();
1254
- const s = ie([o == null ? void 0 : o.lon, o == null ? void 0 : o.lat]), C = new ce({
1255
- geometry: new de(s),
1256
- id: o.id
1257
- });
1258
- C.setStyle(Tt(e, o)), M.addFeature(C);
1259
- }
1260
- }, m = () => {
1261
- const s = c.getFeatures(), C = 100;
1262
- let P = 0;
1263
- const z = () => {
1264
- const te = Math.min(P + C, s.length);
1265
- for (; P < te; P++) {
1266
- const J = s[P], H = Ve(e, J);
1267
- J.setStyle(H);
1268
- }
1269
- P < s.length && requestAnimationFrame(z);
1270
- };
1271
- z();
1272
- const B = M.getFeatures()[0];
1273
- if (B && o) {
1274
- const te = Tt(e, o);
1275
- B.setStyle(te);
1276
- }
1277
- }, E = () => {
1278
- e && c && (I(), c.clear(), l.clear(), M.clear());
1279
- }, I = () => {
1280
- const s = e.getOverlays().getArray().filter((C) => C.get("class") == "zh-map-ship-overlay");
1281
- if (s && s.length > 0)
1282
- for (let C = 0; C < s.length; C++) {
1283
- const P = s[C];
1284
- P.setPosition(void 0), e.removeOverlay(P), P.dispose();
1285
- }
1286
- }, oe = (s, C) => {
1287
- R = s, g = C;
1288
- const P = e.getOverlays().getArray(), z = c.getFeatures();
1289
- for (const A in R) {
1290
- const B = R[A], te = P.find((H) => (H == null ? void 0 : H.getId()) === "label-" + A), J = z.find((H) => A === H.get("id"));
1291
- if (te && J) {
1292
- const H = C[A].blinkColors || [], { shipData: he, name: xe, color: ke } = J.getProperties();
1293
- J.set("blinking", B), H[(H == null ? void 0 : H.length) - 1] && ke !== H[(H == null ? void 0 : H.length) - 1] && (J.set("color", H[(H == null ? void 0 : H.length) - 1] || ""), J.setStyle(Ve(e, J)));
1294
- const rt = {
1295
- ...he,
1296
- blinking: B,
1297
- blinkingColors: H || [],
1298
- name: xe + "(" + C[A].shipState + ")"
1299
- }, Ze = te.getElement(), _e = At(rt);
1300
- Ze && Ze !== _e && te.setElement(_e);
1301
- }
1302
- }
1303
- }, K = (s) => {
1304
- if (!e) return;
1305
- const C = c.getFeatures(), P = l.getFeatures(), z = i ? i.get("id") : "", A = C.filter((H) => H.get("id") !== z), B = P == null ? void 0 : P.filter((H) => H.get("id") !== z), te = /* @__PURE__ */ new Map();
1306
- s.forEach((H) => {
1307
- te.set(H.id, !0);
1308
- });
1309
- const J = e.getOverlays().getArray();
1310
- A.forEach((H) => {
1311
- const he = H.get("id");
1312
- if (!te.has(he))
1313
- H.setStyle([]);
1314
- else {
1315
- const ke = H.getStyle();
1316
- (ke == null ? void 0 : ke.length) == 0 && H.setStyle(Ve(e, H));
1317
- }
1318
- const xe = J.find((ke) => ke.getId() === "label-" + he);
1319
- xe && xe.setPosition(void 0);
1320
- }), B.forEach((H) => {
1321
- const he = H.get("id");
1322
- if (!te.has(he))
1323
- H.setStyle([]);
1324
- else {
1325
- const xe = H.getStyle();
1326
- (xe == null ? void 0 : xe.length) == 0 && H.setStyle(Ft(H, s.length));
1327
- }
1328
- });
1329
- }, Z = (s) => {
1330
- if (s) {
1331
- console.log("选中", s);
1332
- const C = c.getFeatures().find((z) => z.get("id") === s.id), P = l.getFeatures().find((z) => z.get("id") === s.id);
1333
- C && (i = C), P && P.set("selected", !0), o = s, x();
1334
- } else
1335
- console.log("取消选中"), o = null, i = null, U(), h();
1336
- }, W = (s, C, P) => {
1337
- r = s, $ = C, t = P;
1338
- }, G = lo((s, C, P) => {
1339
- try {
1340
- if (s) {
1341
- const z = s.get("shipData"), A = s.get("id");
1342
- if (C === "click" && (Z(z), P && P(A)), C === "hover") {
1343
- D && D !== A && Y(), D = A;
1344
- const B = c.getFeatures().find((te) => te.get("id") === D);
1345
- B == null || B.set("isHighlight", !0), B == null || B.setStyle(Ve(e, B));
1346
- }
1347
- } else
1348
- Y();
1349
- } catch (z) {
1350
- console.log("handleShipMapEvent", z);
1351
- }
1352
- }, 10), Y = () => {
1353
- const s = D ? c.getFeatures().find((C) => C.get("id") === D) : null;
1354
- D = null, s == null || s.set("isHighlight", !1), s == null || s.setStyle(Ve(e, s));
1355
- }, U = () => {
1356
- try {
1357
- M.clear();
1358
- } catch (s) {
1359
- console.log(s);
1360
- }
1361
- }, p = (s, C) => {
1362
- const P = ie([s == null ? void 0 : s.lon, s == null ? void 0 : s.lat]), z = new ce({
1363
- geometry: new de(P),
1364
- name: s.cnname || s.enname || s.name || s.id || "未命名船舶",
1365
- // 图标
1366
- rightIcons: St(s),
1367
- selected: (s == null ? void 0 : s.id) === (o == null ? void 0 : o.id),
1368
- shipData: s
1369
- });
1370
- z.set("id", s.id);
1371
- const A = Ft(z, C);
1372
- return z.setStyle(A), z;
1373
- }, w = (s) => {
1374
- const C = e.getView().getZoom(), P = [], z = [];
1375
- s.forEach((J) => {
1376
- const H = v(J);
1377
- H.setStyle(Ve(e, H)), c.addFeature(H), R[J.id] && P.push(J), (o == null ? void 0 : o.id) == J.id && (o = J), !R[J.id] && (o == null ? void 0 : o.id) !== J.id && z.push(J);
1378
- }), ($ !== null ? $ : (o == null ? void 0 : o.id) && R[o == null ? void 0 : o.id] || C && C >= fe.shipModelMin) && P.map((J) => {
1379
- j(J);
1380
- }), o && (t !== null ? t : !0) && !R[o == null ? void 0 : o.id] && F(o, s), (r !== null ? r : C && C >= fe.shipModelMin) && z.map((J) => {
1381
- F(J, s);
1382
- });
1383
- }, F = (s, C) => {
1384
- const P = p(s, C.length);
1385
- l.addFeature(P);
1386
- }, q = (s) => {
1387
- var P;
1388
- const C = c.getFeatures().find((z) => z.get("id") === s);
1389
- G(C, "click", (P = n.getProps()) == null ? void 0 : P.selectShip);
1390
- }, j = (s) => {
1391
- var C;
1392
- if (s.id && g[s == null ? void 0 : s.id]) {
1393
- const P = g[s == null ? void 0 : s.id] || {}, z = (P == null ? void 0 : P.blinkColors) || [], A = (P == null ? void 0 : P.shipState) || "", B = (s.cnname || s.enname || s.name || s.id || "未命名船舶") + "(" + A + ")", te = {
1394
- ...s,
1395
- name: B,
1396
- blinking: R[s.id],
1397
- blinkingColors: z || []
1398
- };
1399
- No(e, te), (C = document.querySelector(".ship-label-overlay-blinking")) == null || C.addEventListener("click", (J) => {
1400
- var he;
1401
- const H = (he = J.target) == null ? void 0 : he.getAttribute("data-id");
1402
- console.log(H), J.preventDefault(), q(H);
1403
- });
1404
- }
1405
- };
1406
- return {
1407
- render: a,
1408
- selected: Z,
1409
- filter: K,
1410
- blinking: oe,
1411
- clear: E,
1412
- setLableStatus: W,
1413
- handleShipMapEvent: G,
1414
- changeShipScale: m
1415
- };
1416
- }, Wo = (e) => {
1417
- const n = () => e == null ? void 0 : e.getLayers(), i = ye("vector"), o = () => i.value, c = (M) => {
1418
- i.value = M;
1419
- const y = n();
1420
- y && (y == null || y.getArray().forEach((t) => {
1421
- (t.className_ === "vector" || t.className_ === "satellite") && t.setVisible(t.className_ === M);
1422
- }));
1423
- }, d = ye(!1);
1424
- return {
1425
- getLayers: n,
1426
- getGreenTileVisible: () => d.value,
1427
- setGreenTileVisible: (M) => {
1428
- if (M !== d.value) {
1429
- if (M) {
1430
- const y = n();
1431
- if (!y.getArray().find((r) => r.className_ === "greenTile")) {
1432
- const r = new Oe({
1433
- source: new Ae({ url: Fe.greenTile }),
1434
- visible: M,
1435
- zIndex: 2,
1436
- className: "greenTile"
1437
- });
1438
- y.push(r);
1439
- }
1440
- } else {
1441
- const y = n(), t = y.getArray().find((r) => r.className_ === "greenTile");
1442
- t && y.remove(t);
1443
- }
1444
- d.value = M;
1445
- }
1446
- },
1447
- getShowLayerType: o,
1448
- setShowLayerType: c
1449
- };
1450
- }, Ho = (e) => {
1451
- const n = "zh-map-location-layer";
1452
- let i;
1453
- const o = new ve();
1454
- let c = null, d = null;
1455
- const l = (a) => {
1456
- if (!(!a || a.length === 0)) {
1457
- if (o.clear(), d) {
1458
- const u = a.find((h) => h.id === (d == null ? void 0 : d.id));
1459
- u ? d = u : a.push(d);
1460
- }
1461
- a.forEach((u) => {
1462
- S(u);
1463
- }), i || (i = new we({
1464
- className: n,
1465
- source: o,
1466
- zIndex: 100
1467
- }), e == null || e.addLayer(i));
1468
- }
1469
- }, S = (a) => {
1470
- const u = e == null ? void 0 : e.getView().getZoom(), [h, v] = a.latLon.split(","), x = new ce({
1471
- geometry: new de(ie([Number(h), Number(v)]))
1472
- });
1473
- x.setStyle(M(a, u, a.id === (d == null ? void 0 : d.id))), x.set("loactionData", a), o.addFeature(x);
1474
- }, M = (a, u, h) => {
1475
- let v = {
1476
- src: h && a.selectedPath || a.defaultPath
1477
- };
1478
- a != null && a.width && (a != null && a.height) ? v = {
1479
- ...v,
1480
- width: a.width,
1481
- height: a.height
1482
- } : v = {
1483
- ...v,
1484
- scale: 0.5 * u / 10
1485
- };
1486
- let x = {
1487
- image: new Ce(v)
1488
- };
1489
- return a.name && (x = {
1490
- ...x,
1491
- text: new We({
1492
- text: a.name,
1493
- font: "12px sans-serif",
1494
- fill: new ue({
1495
- color: "#000000"
1496
- }),
1497
- backgroundFill: new ue({
1498
- color: "#FFFFFF"
1499
- }),
1500
- offsetY: 30
1501
- })
1502
- }), new re(x);
1503
- }, y = () => {
1504
- if (c) {
1505
- const a = c.get("loactionData").id;
1506
- o.getFeatures().forEach((u) => {
1507
- u.get("loactionData").id !== a && o.removeFeature(u);
1508
- });
1509
- } else
1510
- o.clear();
1511
- }, t = () => {
1512
- var v;
1513
- const a = c == null ? void 0 : c.get("loactionData"), u = (v = e == null ? void 0 : e.getView()) == null ? void 0 : v.getZoom();
1514
- o.getFeatures().forEach((x) => {
1515
- x.get("loactionData").id === a.id && (x == null || x.setStyle(M(a, u, !1)));
1516
- }), d = null, c = null;
1517
- }, r = (a) => {
1518
- a ? ($(), D(a)) : t();
1519
- }, $ = () => {
1520
- var a;
1521
- if (c) {
1522
- const u = c.get("loactionData"), h = (a = e == null ? void 0 : e.getView()) == null ? void 0 : a.getZoom();
1523
- c.setStyle(M(u, h, !1));
1524
- }
1525
- }, D = (a) => {
1526
- const u = o.getFeatures();
1527
- d = a, c = u.find((h) => h.get("loactionData").id === a.id);
1528
- };
1529
- return {
1530
- render: l,
1531
- renderHtml: (a, u, h, v) => {
1532
- const x = document.createElement("div");
1533
- x.innerHTML = h;
1534
- let m = {
1535
- element: x,
1536
- // 覆盖层的DOM元素
1537
- positioning: "top-center",
1538
- // 相对于位置点的定位
1539
- stopEvent: !1,
1540
- // 是否阻止事件传播
1541
- offset: [0, -20],
1542
- id: "position-" + a
1543
- };
1544
- v && (m = {
1545
- ...m,
1546
- ...v
1547
- });
1548
- const E = new pe(m);
1549
- E.setPosition(ie(u)), e.addOverlay(E);
1550
- },
1551
- removeHtml: (a) => {
1552
- const u = e.getOverlays().getArray().find((h) => h.getId() === "position-" + a);
1553
- u && (u.setPosition(void 0), e.removeOverlay(u));
1554
- },
1555
- selected: r,
1556
- clearSelected: t,
1557
- clear: y
1558
- };
1559
- }, Zo = (e) => {
1560
- e.getInteractions().forEach((n) => {
1561
- n instanceof ht && n.setActive(!1);
1562
- });
1563
- }, Do = (e) => {
1564
- e.getInteractions().forEach((n) => {
1565
- n instanceof ht && n.setActive(!0);
1566
- });
1567
- }, Pe = (e, n) => {
1568
- const i = e.getViewport();
1569
- i && (i.style.cursor = n);
1570
- }, Go = (e, n) => {
1571
- const i = ye([]), o = ye("km"), c = (K) => {
1572
- o.value = K;
1573
- };
1574
- let d, l = "close";
1575
- const S = () => {
1576
- Pe(e, "crosshair"), t(), Zo(e), e.on("pointermove", D), e.getViewport().addEventListener("mouseout", () => {
1577
- d && d.classList.add("hidden");
1578
- }), g(), l = "open";
1579
- };
1580
- let M, y;
1581
- const t = () => {
1582
- M = new ve(), y = new we({
1583
- source: M,
1584
- zIndex: 1e3,
1585
- style: {
1586
- "fill-color": "rgba(255, 255, 255, 0.2)",
1587
- "stroke-color": "#ffcc33",
1588
- "stroke-width": 2,
1589
- "circle-radius": 7,
1590
- "circle-fill-color": "#ffcc33"
1591
- }
1592
- }), e == null || e.addLayer(y);
1593
- };
1594
- let r, $;
1595
- const D = (K) => {
1596
- if (K.dragging)
1597
- return;
1598
- let Z = "点击选择起点";
1599
- r && (Z = "单击继续,双击结束"), d && (d.innerHTML = Z, $.setPosition(K.coordinate), d.classList.remove("hidden"));
1600
- };
1601
- let R;
1602
- const g = () => {
1603
- R = new Ie({
1604
- source: M,
1605
- type: "LineString",
1606
- style: new re({
1607
- fill: new ue({
1608
- color: "rgba(255, 255, 255, 0.2)"
1609
- }),
1610
- stroke: new Le({
1611
- color: "rgba(255,204,51)",
1612
- lineDash: [10, 10],
1613
- width: 2
1614
- }),
1615
- image: new et({
1616
- radius: 5,
1617
- stroke: new Le({
1618
- color: "rgba(0, 0, 0, 0.7)"
1619
- }),
1620
- fill: new ue({
1621
- color: "rgba(255, 255, 255, 0.2)"
1622
- })
1623
- })
1624
- }),
1625
- // 添加条件函数,判断是否应该出发点绘制
1626
- condition: (Z) => Z.originalEvent.target.className !== "ol-tooltip-measure"
1627
- }), e == null || e.addInteraction(R), v(), x();
1628
- let K;
1629
- R.on("drawstart", function(Z) {
1630
- var G;
1631
- r = Z.feature, r.set("randomId", a());
1632
- let W;
1633
- K = (G = r.getGeometry()) == null ? void 0 : G.on("change", function(Y) {
1634
- const U = Y.target, p = Wt(U, o.value);
1635
- W = U.getLastCoordinate(), u && p && (u.innerHTML = p), h.setPosition(W);
1636
- });
1637
- }), R.on("drawend", function() {
1638
- var Z, W, G;
1639
- if (u && (u.className = "ol-tooltip ol-tooltip-static ol-tooltip-measure"), u != null && u.innerHTML) {
1640
- const Y = (r == null ? void 0 : r.get("randomId")) || a();
1641
- i.value.push({ id: Y, value: u == null ? void 0 : u.innerHTML }), u.innerHTML = `${u.innerHTML}<div class="ol-tooltip-delete-button" data-id="${Y}"><i class="map-iconfont icon-delete"></i></div>`;
1642
- }
1643
- (Z = document.querySelector(".ol-selectable:has(.ol-tooltip-delete-button):last-child .ol-tooltip-delete-button")) == null || Z.addEventListener("click", (Y) => {
1644
- var p;
1645
- Y.preventDefault(), Y.stopPropagation();
1646
- const U = (p = Y.target) == null ? void 0 : p.getAttribute("data-id");
1647
- U && E(U);
1648
- }), h.setOffset([0, -7]), r = null, u = null, v(), K && dt(K), (G = (W = n.getProps()) == null ? void 0 : W.lineDrawEnd) == null || G.call(W, i.value);
1649
- });
1650
- }, a = () => Math.random().toString(36).substring(2, 9);
1651
- let u, h;
1652
- const v = () => {
1653
- u != null && u.parentNode && u.parentNode.removeChild(u), u = document.createElement("div"), u.className = "ol-tooltip ol-tooltip-measure", h = new pe({
1654
- element: u,
1655
- offset: [0, -15],
1656
- positioning: "bottom-center",
1657
- stopEvent: !1,
1658
- insertFirst: !1
1659
- }), e == null || e.addOverlay(h);
1660
- }, x = () => {
1661
- d != null && d.parentNode && d.parentNode.removeChild(d), d = document.createElement("div"), d.className = "ol-tooltip hidden", $ = new pe({
1662
- element: d,
1663
- offset: [15, 0],
1664
- positioning: "center-left",
1665
- stopEvent: !1
1666
- }), e == null || e.addOverlay($);
1667
- }, m = () => {
1668
- i.value.forEach((K, Z) => {
1669
- var Y, U;
1670
- const W = document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");
1671
- W[Z] && ((U = (Y = W[Z]) == null ? void 0 : Y.parentNode) == null || U.removeChild(W[Z]));
1672
- const G = M.getFeatures();
1673
- G[Z] && M.removeFeature(G[Z]);
1674
- }), I(), Do(e), l = "close", Pe(e, "grab");
1675
- }, E = (K) => {
1676
- var W, G, Y, U;
1677
- const Z = i.value.findIndex((p) => p.id === K);
1678
- if (Z !== -1) {
1679
- i.value.splice(Z, 1);
1680
- const p = document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");
1681
- p[Z] && ((G = (W = p[Z]) == null ? void 0 : W.parentNode) == null || G.removeChild(p[Z]));
1682
- const w = M.getFeatures();
1683
- w[Z] && M.removeFeature(w[Z]);
1684
- }
1685
- (U = (Y = n.getProps()) == null ? void 0 : Y.lineDrawEnd) == null || U.call(Y, i.value);
1686
- }, I = () => {
1687
- if (i.value = [], document.querySelectorAll(".ol-tooltip.ol-tooltip-static").forEach((K) => {
1688
- var Z;
1689
- (Z = K == null ? void 0 : K.parentNode) == null || Z.removeChild(K);
1690
- }), M == null || M.clear(), R) {
1691
- const K = e.getInteractions().getArray().find((Z) => Lt(Z) === Lt(R));
1692
- K && e.removeInteraction(K);
1693
- }
1694
- e.removeLayer(y), d != null && d.parentNode && d.parentNode.removeChild(d), u != null && u.parentNode && u.parentNode.removeChild(u);
1695
- };
1696
- return {
1697
- open: S,
1698
- close: m,
1699
- deleteLine: E,
1700
- setUnit: c,
1701
- getState: () => l
1702
- };
1703
- }, Wt = (e, n) => {
1704
- const o = yt(e);
1705
- let c = "";
1706
- switch (n) {
1707
- case "m":
1708
- c = `${Math.round(o * 100) / 100} m`;
1709
- break;
1710
- case "km":
1711
- c = `${Math.round(o / 1e3 * 100) / 100} km`;
1712
- break;
1713
- case "nm":
1714
- c = (Math.round(o / 1e3 * 100) / 100 / 1.852).toFixed(2) + " nm";
1715
- break;
1716
- }
1717
- return c;
1718
- }, Yo = (e, n) => {
1719
- let i, o, c = "close", d = "area", l;
1720
- const S = (W, G) => {
1721
- d = W, l = G, K(), c = "open", M(), Pe(e, "crosshair");
1722
- }, M = () => {
1723
- r(), x(), I(), a();
1724
- };
1725
- let y = null, t = null;
1726
- const r = () => {
1727
- if (y && t) return;
1728
- const W = new ve(), G = new we({
1729
- source: W,
1730
- style: new re({
1731
- stroke: new Le({
1732
- color: "#fbcc33",
1733
- width: 2
1734
- })
1735
- }),
1736
- zIndex: 1e3
1737
- });
1738
- y = G, t = W, e.on("pointermove", D), e.addLayer(G), e.on(["dblclick"], function(Y) {
1739
- R && (Y.stopPropagation(), Y.preventDefault());
1740
- });
1741
- };
1742
- let $;
1743
- const D = (W) => {
1744
- if (W.dragging) return;
1745
- const G = $ ? "单击继续,双击结束" : "点击选择起点";
1746
- m && (m.innerHTML = G, E.setPosition(W.coordinate));
1747
- };
1748
- let R, g = !1;
1749
- const a = () => {
1750
- if (i) {
1751
- m != null && m.parentNode && m.parentNode.removeChild(m);
1752
- const G = i.getGeometry();
1753
- if (!G) return;
1754
- const Y = u(G, "nm");
1755
- h && (h.innerHTML = `
1756
- <span class="text">面积:${Y}${g ? '<span class="error pl-12">超出可以绘画的距离</span>' : ""}</span>
1757
- `), h && (h.innerHTML += '<span class="delete-icon" ><i class="map-iconfont icon-delete" /></div>');
1758
- const U = G.getCoordinates(), p = U[0][U[0].length - 2];
1759
- if (v.setPosition(p), y) {
1760
- const F = y.getSource();
1761
- F && i && (F.clear(), F.addFeature(i));
1762
- }
1763
- setTimeout(() => {
1764
- var F;
1765
- (F = document.querySelector(".delete-icon")) == null || F.addEventListener("click", () => {
1766
- var q, j;
1767
- oe(), (j = (q = n.getProps()) == null ? void 0 : q.areaDrawEnd) == null || j.call(q, []);
1768
- });
1769
- }, 0);
1770
- const w = co(i.getGeometry().getExtent());
1771
- e == null || e.getView().setCenter(w);
1772
- return;
1773
- }
1774
- const W = {
1775
- type: "Polygon",
1776
- trace: !0,
1777
- style: [new re({
1778
- stroke: new Le({
1779
- color: "rgba(255, 255, 255, 1)",
1780
- width: 1.5,
1781
- lineDash: [10, 10]
1782
- }),
1783
- fill: new ue({
1784
- color: "rgba(255, 255, 255, 0.25)"
1785
- })
1786
- }), new re({
1787
- image: new et({
1788
- radius: 5,
1789
- fill: new ue({
1790
- color: "rgb(51,112,255, 1)"
1791
- })
1792
- }),
1793
- geometry: function(G) {
1794
- const Y = G.getGeometry().getCoordinates();
1795
- return new ao(Y);
1796
- }
1797
- })]
1798
- };
1799
- d !== "fence" && (W.source = t), R = new Ie(W), e == null || e.addInteraction(R), R.on("drawstart", (G) => {
1800
- var Y;
1801
- $ = G.feature, o = (Y = $.getGeometry()) == null ? void 0 : Y.on("change", (U) => {
1802
- const p = U.target, w = u(p, "nm"), q = p.getCoordinates()[0], j = new $e([q[q.length - 2], q[q.length - 1]]), s = Wt(j, "nm");
1803
- if (g = Number(yt(j) / 1e3) > 150, !w) return;
1804
- const C = '<span class="error pl-4">超出可以绘画的距离</span>';
1805
- h && (h.innerHTML = `
1806
- <div class="text">
1807
- 面积:${w}
1808
- ${g ? C : ""}
1809
- </div>
1810
- `), m && (m.innerHTML = `
1811
- <div class="text">
1812
- 面积:${w}
1813
- </div>
1814
- <div class="text ${g ? "error" : ""}">
1815
- 线段 ${q.length - 2}: ${s}
1816
- ${g ? C : ""}
1817
- </div>
1818
- <div>
1819
- <span class="text">单击继续,双击结束</span>
1820
- </div>
1821
- `);
1822
- });
1823
- }), R.on("drawend", (G) => {
1824
- var s, C, P, z;
1825
- const Y = G.feature.getGeometry();
1826
- if (!Y) return;
1827
- const w = Y.getCoordinates()[0].map((A) => Rt(A)).map((A) => ({
1828
- lng: A[0],
1829
- lat: A[1]
1830
- }));
1831
- if (d === "fence")
1832
- return console.log("polygonPoints--------------", w), l && l(w), w;
1833
- h && !i && (h.innerHTML += '<span class="delete-icon"><i class="map-iconfont icon-delete" /></div>'), i = G.feature, v.setOffset([10, 0]);
1834
- const q = G.feature.getGeometry().getCoordinates(), j = q[0][q[0].length - 2];
1835
- if (v.setPosition(j), m != null && m.parentNode && m.parentNode.removeChild(m), (s = n.getProps()) != null && s.areaDrawEnd) {
1836
- const A = q[0].map((B) => Xe(B, ge.mercator, ge.data));
1837
- (P = (C = n.getProps()) == null ? void 0 : C.areaDrawEnd) == null || P.call(C, A);
1838
- }
1839
- R && (R.setActive(!1), e == null || e.removeInteraction(R), (e == null ? void 0 : e.getInteractions()).forEach((B) => {
1840
- B instanceof Ie && (B.setActive(!1), e == null || e.removeInteraction(B));
1841
- })), o && dt(o), (z = document.querySelector(".delete-icon")) == null || z.addEventListener("click", () => {
1842
- var A, B;
1843
- oe(), (B = (A = n.getProps()) == null ? void 0 : A.areaDrawEnd) == null || B.call(A, []);
1844
- });
1845
- });
1846
- }, u = (W, G) => {
1847
- const Y = so(W);
1848
- switch (G) {
1849
- case "km":
1850
- return Y > 1e4 ? Math.round(Y / 1e6 * 100) / 100 + " km<sup>2</sup>" : Math.round(Y * 100) / 100 + " m<sup>2</sup>";
1851
- case "nm": {
1852
- if (Y < 0.01)
1853
- return "0 nm<sup>2</sup>";
1854
- const U = Y / (1852 * 1852);
1855
- return U >= 0.01 ? Math.round(U * 100, 2) / 100 + " nm<sup>2</sup>" : Y >= 1 ? Math.round(Y * 100, 2) / 100 + " m<sup>2</sup>" : Math.round(Y * 1e4, 2) / 100 + " cm<sup>2</sup>";
1856
- }
1857
- }
1858
- };
1859
- let h, v;
1860
- const x = () => {
1861
- h != null && h.parentNode && h.parentNode.removeChild(h), h = document.createElement("div"), h.style.display = "flex", h.className = "ol-tooltip ol-tooltip-draw-polygon", v = new pe({
1862
- element: h,
1863
- offset: [0, -15],
1864
- positioning: "bottom-center",
1865
- stopEvent: !1,
1866
- insertFirst: !1
1867
- }), e == null || e.addOverlay(v);
1868
- };
1869
- let m, E;
1870
- const I = () => {
1871
- m != null && m.parentNode && (m.parentNode.removeChild(m), m.parentNode.addEventListener("click", (W) => {
1872
- W.preventDefault(), W.stopPropagation();
1873
- })), m = document.createElement("div"), m.className = "ol-tooltip ol-help-tooltip pointer-none", E = new pe({
1874
- element: m,
1875
- offset: [15, 0],
1876
- positioning: "center-left",
1877
- stopEvent: !1
1878
- }), e == null || e.addOverlay(E);
1879
- }, oe = () => {
1880
- i = null, S();
1881
- }, K = () => {
1882
- c = "close", e.un("pointermove", D), $ = null, R && (R.abortDrawing(), console.log("abortDrawing"), R.setActive(!1), (e == null ? void 0 : e.getInteractions()).forEach((G) => {
1883
- G instanceof Ie && (G.setActive(!1), e == null || e.removeInteraction(G));
1884
- }), R = null), o && dt(o), o = void 0, t == null || t.clear(), t = null, y && e.getAllLayers().includes(y) && (e.removeLayer(y), y = null), m != null && m.parentElement && (m.innerHTML = "", m.parentElement.removeChild(m), m = null), h != null && h.parentElement && (h.innerHTML = "", h.parentElement.removeChild(h), h = null), E && e.removeOverlay(E), v && e.removeOverlay(v), Pe(e, "grab");
1885
- };
1886
- return {
1887
- open: S,
1888
- close: K,
1889
- reset: oe,
1890
- getState: () => c
1891
- };
1892
- }, Bo = "zh-map-port-layer", qo = (e) => {
1893
- const n = new ve(), i = new we({
1894
- className: Bo,
1895
- source: n,
1896
- zIndex: 100,
1897
- updateWhileInteracting: !0,
1898
- updateWhileAnimating: !0,
1899
- properties: { layerType: se.PORT }
1900
- });
1901
- e == null || e.addLayer(i);
1902
- let o = null, c = null;
1903
- const d = (a, u = !0) => {
1904
- if (!a || a.length === 0) return;
1905
- if (n.clear(), c) {
1906
- const v = a.find((x) => x.id === (c == null ? void 0 : c.id));
1907
- v ? c = v : a.push(c);
1908
- }
1909
- const h = [];
1910
- a.forEach((v) => {
1911
- const [x, m] = v.latLon.split(","), E = new ce({
1912
- geometry: new de(ie([Number(x), Number(m)])),
1913
- portData: v,
1914
- id: v.id,
1915
- select: v.id === (c == null ? void 0 : c.id),
1916
- showTitle: v.id === (c == null ? void 0 : c.id) || u
1917
- }), I = t(E);
1918
- E.setStyle(I), h.push(E);
1919
- }), n.addFeatures(h);
1920
- };
1921
- let l = null, S = null;
1922
- const M = /* @__PURE__ */ new Map(), y = (a, u) => {
1923
- l || (l = document.createElement("canvas"), S = l.getContext("2d", {
1924
- willReadFrequently: !0
1925
- }));
1926
- const h = `${a}-${u}`;
1927
- if (M.has(h))
1928
- return M.get(h);
1929
- const v = l, x = S;
1930
- if (!x) return "";
1931
- v.width = 0, v.height = 0;
1932
- const m = 2, E = 8, I = window.devicePixelRatio || 1, oe = "12px sans-serif";
1933
- x.font = oe;
1934
- const Z = x.measureText(a).width, W = E + Z + E, G = m + 12 + m * 2;
1935
- v.width = Math.round(W * I), v.height = Math.round(G * I), x.scale(I, I), x.clearRect(0, 0, W, G), x.fillStyle = u ? "#F32D2D" : "#FFF", x.beginPath(), x.roundRect(0, 0, W, G, 4), x.fill(), x.font = oe, x.textBaseline = "middle";
1936
- const Y = G / 2;
1937
- x.strokeStyle = u ? "#000" : "#ffffff", x.lineWidth = 1, x.strokeText(a, E, Y), x.fillStyle = u ? "#FFF" : "#000000", x.fillText(a, E, Y);
1938
- const U = v.toDataURL("image/png");
1939
- return M.set(h, U), U;
1940
- }, t = (a) => {
1941
- const { select: u, showTitle: h } = a.getProperties(), v = (Z) => `<svg width="46" height="46" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
1942
- <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="${Z}"/>
1943
- <g clip-path="url(#clip0_10059_122082)">
1944
- <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"/>
1945
- </g>
1946
- <defs>
1947
- <clipPath id="clip0_10059_122082">
1948
- <rect width="26" height="26" fill="white" transform="translate(10 8)"/>
1949
- </clipPath>
1950
- </defs>
1951
- </svg>
1952
- `, x = () => `data:image/svg+xml;utf8,${encodeURIComponent(v(u ? "#F32D2D" : "#3370FF"))}`, m = e.getView().getZoom(), E = a.get("portData"), I = window.devicePixelRatio || 1, oe = new re({
1953
- image: new Ce({
1954
- src: x(),
1955
- scale: 0.5 * m / 10
1956
- }),
1957
- zIndex: u ? 110 : 100
1958
- }), K = new re({
1959
- image: new Ce({
1960
- src: y(E.shortName, u),
1961
- anchor: [0.5, 0.5],
1962
- displacement: [0, -30],
1963
- scale: 1 / I,
1964
- anchorXUnits: "fraction",
1965
- anchorYUnits: "fraction"
1966
- }),
1967
- zIndex: u ? 110 : 100
1968
- // text: new Text({
1969
- // text: port.shortName,
1970
- // font: '12px sans-serif',
1971
- // fill: new Fill({
1972
- // color: select ? "#ffffff" : "#000000"
1973
- // }),
1974
- // backgroundFill: new Fill({
1975
- // color: "#FFF",
1976
- // }),
1977
- // offsetY: 30,
1978
- // }),
1979
- });
1980
- return !h && !u ? oe : [oe, K];
1981
- }, r = () => {
1982
- if (n)
1983
- if (o) {
1984
- console.log("清除非选中的港口");
1985
- const a = o.get("portData").id;
1986
- n.getFeatures().forEach((u) => {
1987
- u.get("portData").id !== a && n.removeFeature(u);
1988
- });
1989
- } else
1990
- console.log("清除所有港口", n), n == null || n.clear();
1991
- }, $ = (a) => {
1992
- if (n) {
1993
- if (!a)
1994
- return D();
1995
- (o == null ? void 0 : o.get("portData").id) !== a.id && (D(), R(a));
1996
- }
1997
- }, D = () => {
1998
- var a;
1999
- if (o) {
2000
- const u = o == null ? void 0 : o.get("portData"), h = (a = n.getFeatures()) == null ? void 0 : a.find((v) => v.get("portData").id === u.id);
2001
- h && (h.set("select", !1), h.setStyle(t(h)), o = null, c = null);
2002
- }
2003
- }, R = (a) => {
2004
- if (!n) return;
2005
- const u = n.getFeatures();
2006
- c = a, o = u.find((h) => h.get("portData").id === a.id), o && (o.set("select", !0), o.setStyle(t(o)));
2007
- };
2008
- return {
2009
- render: d,
2010
- clear: r,
2011
- selected: $,
2012
- handlePortHover: (a) => {
2013
- a && a.get("portData") ? Pe(e, "pointer") : Pe(e, "grab");
2014
- }
2015
- };
2016
- }, Xo = (e) => {
2017
- const n = new we({
2018
- source: new ve(),
2019
- zIndex: 99
2020
- }), i = new we({
2021
- source: new ve(),
2022
- properties: { layerType: se.DELETE },
2023
- zIndex: 99
2024
- }), o = '<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m241.28 673.066667a56.96 56.96 0 0 1-80.213333 80.213333L512 592.213333l-161.066667 161.066667a56.96 56.96 0 0 1-80.213333-80.213333L431.786667 512l-161.066667-161.066667a56.96 56.96 0 0 1 80.213333-80.213333L512 431.786667l161.066667-161.066667a56.96 56.96 0 0 1 80.213333 80.213333L592.213333 512z" fill="#000000a6" ></path></svg>';
2025
- e.addLayer(n), e.addLayer(i);
2026
- const c = (g) => new re({
2027
- fill: new ue({
2028
- color: (g == null ? void 0 : g.fillColor) || "#e8f2ff99"
2029
- }),
2030
- stroke: new Le({
2031
- color: (g == null ? void 0 : g.stokeColor) || "#1c5bffcc",
2032
- width: 1.5,
2033
- lineDash: [4, 4]
2034
- })
2035
- });
2036
- function d(g) {
2037
- const a = g.getCoordinates()[0];
2038
- let u = -1 / 0, h = [];
2039
- for (const x of a)
2040
- x[0] > u ? (u = x[0], h = [x]) : x[0] === u && h.push(x);
2041
- let v = h[0];
2042
- for (const x of h)
2043
- x[1] > v[1] && (v = x);
2044
- return v;
2045
- }
2046
- function l(g, a) {
2047
- const u = Math.PI / 4;
2048
- return [
2049
- g[0] + a * Math.cos(u),
2050
- g[1] + a * Math.sin(u)
2051
- ];
2052
- }
2053
- const S = () => new re({
2054
- image: new Ce({
2055
- src: `data:image/svg+xml;utf8,${encodeURIComponent(o)}`,
2056
- anchor: [0.5, 0.5],
2057
- anchorXUnits: "fraction",
2058
- anchorYUnits: "fraction",
2059
- offset: [0, 0]
2060
- })
2061
- }), M = (g) => {
2062
- var v;
2063
- let a;
2064
- const u = (v = g.coordinates) == null ? void 0 : v.map((x) => ie([x.lng, x.lat]));
2065
- if (g != null && g.radius)
2066
- a = l(u[0], g.radius);
2067
- else {
2068
- const x = new pt([u]), m = x.getExtent(), E = [m[2], m[3]];
2069
- a = E, x.intersectsCoordinate(E) || (a = d(x));
2070
- }
2071
- return new ce({
2072
- geometry: new de(a),
2073
- id: "poly-delete-" + g.id,
2074
- polygonData: g
2075
- });
2076
- }, y = (g, a) => {
2077
- var x, m;
2078
- const u = (x = g.coordinates) == null ? void 0 : x.map((E) => ie([E.lng, E.lat])), h = new pt([u]), v = new ce({
2079
- geometry: h,
2080
- id: g.id
2081
- });
2082
- console.log(v), v.setStyle(c(a)), (m = n.getSource()) == null || m.addFeature(v), g.isEdit && t(g);
2083
- }, t = (g) => {
2084
- var u;
2085
- const a = M(g);
2086
- a.setStyle(S()), (u = i.getSource()) == null || u.addFeature(a);
2087
- };
2088
- function r(g, a) {
2089
- var x;
2090
- const u = ie([g.coordinates[0].lng, g.coordinates[0].lat]), h = new Nt(
2091
- u,
2092
- g.radius
2093
- // 半径(米)
2094
- ), v = new ce({
2095
- geometry: h,
2096
- id: g.id
2097
- });
2098
- v.setStyle(c(a)), (x = n.getSource()) == null || x.addFeature(v), g.isEdit && t(g);
2099
- }
2100
- return {
2101
- createPolygon: y,
2102
- createCircle: r,
2103
- deletePolygon: (g) => {
2104
- var h, v, x, m;
2105
- const a = (h = n.getSource()) == null ? void 0 : h.getFeatures().find((E) => E.getProperties().id === g), u = (v = i.getSource()) == null ? void 0 : v.getFeatures().find((E) => E.getProperties().id === "poly-delete-" + g);
2106
- (x = n.getSource()) == null || x.removeFeature(a), (m = i.getSource()) == null || m.removeFeature(u);
2107
- },
2108
- updatePolygon: (g) => {
2109
- var a;
2110
- g.isEdit ? t(g) : (a = i.getSource()) == null || a.getFeatures().forEach((u) => {
2111
- u.id === "poly-delete-" + g.id && !g.isEdit && i.getSource().removeFeature(u);
2112
- });
2113
- },
2114
- clear: () => {
2115
- var g, a;
2116
- (g = n.getSource()) == null || g.clear(), (a = i.getSource()) == null || a.clear();
2117
- }
2118
- };
2119
- };
2120
- class _o {
2121
- constructor(n, i) {
2122
- Ge(this, "animationId", null);
2123
- Ge(this, "interval", 500);
2124
- // 闪烁间隔(ms)
2125
- Ge(this, "routeLayer");
2126
- Ge(this, "routeOverlay");
2127
- this.routeLayer = n, this.routeOverlay = i;
2128
- }
2129
- start() {
2130
- if (this.animationId) return;
2131
- let n = 0;
2132
- const i = (o) => {
2133
- o - n >= this.interval && (this.toggleVisibility(), n = o), this.animationId = requestAnimationFrame(i);
2134
- };
2135
- this.animationId = requestAnimationFrame(i);
2136
- }
2137
- stop() {
2138
- this.animationId && (cancelAnimationFrame(this.animationId), this.animationId = null), this.routeLayer.forEach((n) => {
2139
- n.setVisible(!0);
2140
- }), this.routeOverlay.forEach((n) => {
2141
- n.getElement().style.visibility = "visible";
2142
- });
2143
- }
2144
- toggleVisibility() {
2145
- this.routeLayer.forEach((n) => {
2146
- const i = n.getVisible();
2147
- n.setVisible(!i);
2148
- }), this.routeOverlay.forEach((n) => {
2149
- var i;
2150
- n.getElement().style.visibility = ((i = n.getElement()) == null ? void 0 : i.style.visibility) !== "hidden" ? "hidden" : "visible";
2151
- });
2152
- }
2153
- }
2154
- const Ko = (e) => {
2155
- const n = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), o = {};
2156
- let c = null;
2157
- const d = 10, l = [];
2158
- let S = null, M = {
2159
- arrowInterval: 100,
2160
- pathColor: "#0091FF",
2161
- pathWidth: 12,
2162
- pathStrokeWidth: 1,
2163
- pathStrokeColor: "transparent",
2164
- arrowDensity: 1,
2165
- arrowHeight: 10,
2166
- arrowAngle: 60,
2167
- arrowColor: "#fff",
2168
- arrowImgSize: 10,
2169
- arrowWidth: 4,
2170
- vehicleImg: void 0,
2171
- vehicleImgWidth: 80,
2172
- vehicleImgHeight: 80,
2173
- vehicleImgOpacity: 1
2174
- }, y = {
2175
- pointWidth: 40,
2176
- pointHeight: 40,
2177
- anchor: [0.5, 1],
2178
- rotation: 0,
2179
- zIndex: 99
2180
- };
2181
- const t = (p) => {
2182
- var w, F;
2183
- for (l.unshift(p); l.length > d; ) {
2184
- const q = l.pop(), j = n.get(q), s = i.get(q);
2185
- j && ((w = j.getSource()) == null || w.clear(), e == null || e.removeLayer(j), n.delete(q), delete o[q]), s && ((F = s.getSource()) == null || F.clear(), e == null || e.removeLayer(s), s.delete(q));
2186
- }
2187
- }, r = async (p, w, F, q) => {
2188
- e && (JSON.stringify(o[p]) === JSON.stringify(w) && c === p || (w = w == null ? void 0 : w.reverse(), !((w == null ? void 0 : w.length) < 2) && (t(p), c = p, o[p] = w, F && (M = Object.assign(M, F)), q && (y = Object.assign(y, q)), await D())));
2189
- }, $ = vt(async () => {
2190
- Object.keys(o).map((p) => {
2191
- h(p);
2192
- });
2193
- }, 100), D = async () => {
2194
- const p = c;
2195
- if (!n.has(p)) {
2196
- const w = R(`line-layer-${p}`);
2197
- n.set(p, w), e.getLayers().getArray().includes(w) || e == null || e.addLayer(w);
2198
- }
2199
- if (!i.has(p)) {
2200
- const w = R(`point-layer-${p}`);
2201
- i.set(p, w), e.getLayers().getArray().includes(w) || e == null || e.addLayer(w);
2202
- }
2203
- g();
2204
- }, R = (p) => {
2205
- const w = new ve();
2206
- return new we({
2207
- source: w,
2208
- className: p,
2209
- renderBuffer: 1024,
2210
- zIndex: 10,
2211
- properties: { layerType: se.PATH }
2212
- });
2213
- };
2214
- function g() {
2215
- const p = c, w = n.get(p).getSource();
2216
- w.clear();
2217
- const q = o[c].map((C) => ie(C.coordinate)), j = new $e(q), s = new ce({
2218
- type: "route",
2219
- geometry: j,
2220
- pathData: c
2221
- });
2222
- s.setStyle(a()), w.addFeature(s), h(c), m("https://static.zhihaoscm.cn/map/car-icon.gif"), K(c);
2223
- }
2224
- function a() {
2225
- return new re({
2226
- fill: new ue({
2227
- color: M.pathStrokeColor,
2228
- width: M.pathStrokeWidth
2229
- }),
2230
- stroke: new Le({
2231
- color: M.pathColor,
2232
- width: M.pathWidth
2233
- })
2234
- });
2235
- }
2236
- function u(p) {
2237
- const w = x();
2238
- return new re({
2239
- image: new Ce({
2240
- img: x(),
2241
- imgSize: [w.width, w.height],
2242
- rotation: p,
2243
- displacement: [0, 0],
2244
- rotateWithView: !1
2245
- })
2246
- });
2247
- }
2248
- function h(p) {
2249
- const w = p, F = n.get(w).getSource(), j = o[w].map((P) => ie(P.coordinate));
2250
- F.getFeatures().forEach((P) => {
2251
- P.getProperties().type === "arrow" && F.removeFeature(P);
2252
- });
2253
- const s = new $e(j);
2254
- v(
2255
- s,
2256
- M.arrowInterval
2257
- ).forEach((P) => {
2258
- const z = new ce({
2259
- geometry: new de(P.coordinate),
2260
- type: "arrow",
2261
- rotation: P.rotation
2262
- });
2263
- z.setStyle(u(P.rotation)), F.addFeature(z);
2264
- });
2265
- }
2266
- function v(p, w) {
2267
- const F = p.getCoordinates(), q = [];
2268
- if (F.length < 2) return q;
2269
- const j = F.map((P) => e.getPixelFromCoordinate(P));
2270
- let s = 0, C = j[0];
2271
- for (let P = 1; P < j.length; P++) {
2272
- const z = j[P], A = [
2273
- z[0] - C[0],
2274
- z[1] - C[1]
2275
- ], B = Math.sqrt(A[0] ** 2 + A[1] ** 2), te = Math.atan2(A[1], A[0]), J = [
2276
- A[0] / B,
2277
- A[1] / B
2278
- ];
2279
- for (; s + w <= B; ) {
2280
- s += w;
2281
- const H = [
2282
- C[0] + J[0] * s,
2283
- C[1] + J[1] * s
2284
- ], he = e.getCoordinateFromPixel(H);
2285
- q.push({
2286
- coordinate: he,
2287
- rotation: te
2288
- });
2289
- }
2290
- s -= B, C = z;
2291
- }
2292
- return q;
2293
- }
2294
- function x() {
2295
- const p = {
2296
- color: M.arrowColor,
2297
- lineWidth: M.arrowWidth,
2298
- arrowHeight: M.arrowHeight,
2299
- angle: M.arrowAngle
2300
- };
2301
- if (p.angle >= 180 || p.angle <= 0)
2302
- throw new Error("箭头夹角取值范围为0-180");
2303
- const w = p.arrowHeight / 2, F = 1 / Math.tan(p.angle * Math.PI / 360), q = Math.ceil(F * w), j = q + p.lineWidth, s = document.createElement("canvas");
2304
- s.width = j, s.height = p.arrowHeight;
2305
- const C = s.getContext("2d");
2306
- return C.fillStyle = p.color, C.strokeStyle = p.color, C.beginPath(), C.lineTo(0, 0), C.lineTo(p.lineWidth, 0), C.lineTo(j, w), C.lineTo(p.lineWidth, p.arrowHeight), C.lineTo(0, p.arrowHeight), C.lineTo(q, w), C.closePath(), C.fill(), s;
2307
- }
2308
- function m(p, w = 1 / 3, F = [60, 60]) {
2309
- const s = o[c].map((J) => ie(J.coordinate)), C = new $e(s), P = E(C, w), z = I(C, P), A = document.createElement("div");
2310
- A.className = "dynamic-icon-container", A.style.width = `${F[0]}px`, A.style.height = `${F[1]}px`;
2311
- const B = document.createElement("img");
2312
- B.src = p, B.style.width = "100%", B.style.height = "100%", B.style.transform = `rotate(${z}deg)`, B.style.transformOrigin = "center center", A.appendChild(B);
2313
- const te = new pe({
2314
- position: P,
2315
- positioning: "center-center",
2316
- element: A,
2317
- stopEvent: !1
2318
- // 允许事件穿透
2319
- });
2320
- te.set("type", "blinkimage"), e == null || e.addOverlay(te);
2321
- }
2322
- function E(p, w) {
2323
- const F = p.getCoordinates(), j = p.getLength() * w;
2324
- let s = 0;
2325
- for (let C = 0; C < F.length - 1; C++) {
2326
- const P = F[C], z = F[C + 1], A = Math.sqrt(
2327
- Math.pow(z[0] - P[0], 2) + Math.pow(z[1] - P[1], 2)
2328
- );
2329
- if (s + A >= j) {
2330
- const B = (j - s) / A;
2331
- return [
2332
- P[0] + (z[0] - P[0]) * B,
2333
- P[1] + (z[1] - P[1]) * B
2334
- ];
2335
- }
2336
- s += A;
2337
- }
2338
- return F[F.length - 1];
2339
- }
2340
- function I(p, w) {
2341
- const F = p.getCoordinates(), q = 1e-4;
2342
- for (let C = 0; C < F.length - 1; C++) {
2343
- const P = F[C], z = F[C + 1];
2344
- if (oe(w, P, z, q))
2345
- return Math.atan2(
2346
- z[1] - P[1],
2347
- z[0] - P[0]
2348
- );
2349
- }
2350
- const j = F[F.length - 2], s = F[F.length - 1];
2351
- return Math.atan2(
2352
- s[1] - j[1],
2353
- s[0] - j[0]
2354
- );
2355
- }
2356
- function oe(p, w, F, q) {
2357
- const j = (p[1] - w[1]) * (F[0] - w[0]) - (p[0] - w[0]) * (F[1] - w[1]);
2358
- if (Math.abs(j) > q) return !1;
2359
- const s = (p[0] - w[0]) * (F[0] - w[0]) + (p[1] - w[1]) * (F[1] - w[1]);
2360
- if (s < 0) return !1;
2361
- const C = Math.pow(F[0] - w[0], 2) + Math.pow(F[1] - w[1], 2);
2362
- return s <= C;
2363
- }
2364
- function K(p) {
2365
- const w = p, F = o[w], q = i.get(w).getSource(), j = [];
2366
- F.forEach((s) => {
2367
- if (s.img && s.coordinate) {
2368
- const C = new de(ie(s.coordinate)), P = new ce(C), z = `data:image/svg+xml;utf8,${encodeURIComponent(s.img)}`;
2369
- P.setStyle(new re({
2370
- image: new Ce({
2371
- src: z,
2372
- width: y.pointWidth || 40,
2373
- height: y.pointHeight || 40,
2374
- anchor: y.anchor || [0.5, 1],
2375
- rotation: y.rotation || 0
2376
- }),
2377
- zIndex: y.zIndex || 10
2378
- })), j.push(P);
2379
- }
2380
- }), q.addFeatures(j);
2381
- }
2382
- const Z = (p) => {
2383
- console.log("handleClick", p), W(p);
2384
- };
2385
- function W(p) {
2386
- var F;
2387
- G();
2388
- const w = (F = e.getOverlays().getArray()) == null ? void 0 : F.filter((q) => q.get("type") === "blinkimage");
2389
- S = new _o([n.get(p), i.get(p)], w), S.start();
2390
- }
2391
- function G() {
2392
- S && (S.stop(), S = null);
2393
- }
2394
- return {
2395
- reRenderLine: $,
2396
- handleClick: Z,
2397
- render: r,
2398
- blinking: W,
2399
- clear: () => {
2400
- n.forEach((w) => {
2401
- var F;
2402
- (F = w.getSource()) == null || F.clear(), e == null || e.removeLayer(w);
2403
- }), i.forEach((w) => {
2404
- var F;
2405
- (F = w.getSource()) == null || F.clear(), e == null || e.removeLayer(w);
2406
- }), Object.keys(o).forEach((w) => {
2407
- n.delete(w), i.delete(w), delete o[w];
2408
- });
2409
- },
2410
- close: (p) => {
2411
- const w = n.get(p || c);
2412
- w == null || w.setVisible(!1);
2413
- }
2414
- };
2415
- }, jo = (e, n, i, o, c, d, l, S, M) => {
2416
- const y = e.getInstall();
2417
- y.on("moveend", () => {
2418
- var D, R;
2419
- try {
2420
- const g = e.getZoom();
2421
- (R = (D = n.getProps()).mapMoveEnd) == null || R.call(D, g), g >= fe.min && g <= fe.max && i.reRenderTrackLine(), M.reRenderLine(), o.changeShipScale("end");
2422
- } catch (g) {
2423
- console.log("moveend---catch", g);
2424
- }
2425
- });
2426
- const t = {
2427
- [se.PORT]: null,
2428
- [se.SHIP]: null,
2429
- [se.TRACK]: null,
2430
- [se.DELETE]: null
2431
- }, r = (D, R, g) => {
2432
- switch (D) {
2433
- case se.SHIP:
2434
- o == null || o.handleShipMapEvent(R, "hover");
2435
- break;
2436
- case se.PORT:
2437
- break;
2438
- case se.TRACK:
2439
- i == null || i.handleTrackMapEvent(R, "hover", g);
2440
- break;
2441
- }
2442
- }, $ = (D) => {
2443
- switch (D) {
2444
- case se.PORT:
2445
- break;
2446
- case se.SHIP:
2447
- o == null || o.handleShipMapEvent(null, "hover");
2448
- break;
2449
- case se.TRACK:
2450
- i == null || i.handleTrackMapEvent(null, "hover");
2451
- break;
2452
- }
2453
- };
2454
- y.on("pointermove", (D) => {
2455
- if (l.getState() !== "open" && d.getState() !== "open" && e.getMapClick() && !y.getView().getAnimating())
2456
- try {
2457
- let R = !1, g = !1;
2458
- const a = y.getLayers().getArray().filter((u) => u.get("layerType"));
2459
- try {
2460
- a && a.length > 0 && a.forEach((u) => {
2461
- if (g) return;
2462
- const h = y == null ? void 0 : y.getEventPixel(D.originalEvent), v = u == null ? void 0 : u.get("layerType"), x = y == null ? void 0 : y.forEachFeatureAtPixel(h, (m) => m, {
2463
- layerFilter: (m) => m === u,
2464
- // 严格图层过滤
2465
- hitTolerance: 5
2466
- });
2467
- x !== t[v] && (t[v] && $(v, t[v]), t[v] = x, x && (r(v, x, D), g = !0)), x && (R = !0);
2468
- }), R ? Pe(y, "pointer") : Pe(y, "grab");
2469
- } catch (u) {
2470
- console.log("pointermove----", u);
2471
- }
2472
- } catch (R) {
2473
- console.log("pointermove----", R);
2474
- }
2475
- }), y.on("click", vt((D) => {
2476
- if (l.getState() !== "open" && d.getState() !== "open" && e.getMapClick() && !y.getView().getAnimating())
2477
- try {
2478
- let R = !1;
2479
- const g = y.getLayers().getArray().filter((a) => a.get("layerType"));
2480
- g && g.length > 0 && g.forEach((a) => {
2481
- var u, h, v;
2482
- if (!R)
2483
- try {
2484
- const x = y == null ? void 0 : y.getEventPixel(D.originalEvent), m = y == null ? void 0 : y.forEachFeatureAtPixel(x, (E) => {
2485
- if (E.get("shipData") || E.get("portData") || E.get("polygonData") || E.get("pathData"))
2486
- return E;
2487
- }, {
2488
- layerFilter: (E) => E === a,
2489
- // 严格图层过滤
2490
- hitTolerance: 10
2491
- });
2492
- if (console.log("clickFeature", m), m) {
2493
- if (m != null && m.get("shipData"))
2494
- i.getTrackStatus() || o.handleShipMapEvent(m, "click", (u = n.getProps()) == null ? void 0 : u.selectShip);
2495
- else if (m != null && m.get("portData")) {
2496
- const E = m == null ? void 0 : m.get("portData");
2497
- c.selected(E), (v = (h = n.getProps()) == null ? void 0 : h.selectPort) == null || v.call(h, E);
2498
- } else if (m != null && m.get("polygonData")) {
2499
- const E = m.get("polygonData");
2500
- S.deletePolygon(E == null ? void 0 : E.id);
2501
- } else if (m != null && m.get("pathData")) {
2502
- const E = m.get("pathData");
2503
- M.handleClick(E);
2504
- }
2505
- R = !0;
2506
- }
2507
- } catch (x) {
2508
- console.log("click--", x);
2509
- }
2510
- });
2511
- } catch (R) {
2512
- console.log("click----", R);
2513
- }
2514
- }, 150)), y.getView().on("change:resolution", () => {
2515
- o.changeShipScale();
2516
- });
2517
- }, Jo = () => {
2518
- const e = Jt([]);
2519
- return {
2520
- createInstance: (o, c) => {
2521
- const d = xo();
2522
- d.initMap(o, c);
2523
- const l = d.getInstall(), S = Wo(l), M = Po();
2524
- M.setProps(c), S.setShowLayerType(c.layerType), S.setGreenTileVisible(c.showGreenLayer);
2525
- const y = Mo(l), t = po(l, y), r = Ao(l, M), $ = Ho(l), D = Go(l, M), R = Yo(l, M), g = qo(l), a = Xo(l), u = Ko(l);
2526
- jo(d, M, y, r, g, D, R, a, u);
2527
- const h = () => {
2528
- const x = l.getView().calculateExtent(d.getSize()), m = Xe([x[0], x[1]], ge.mercator, ge.data), E = Xe([x[2], x[3]], ge.mercator, ge.data);
2529
- return [m[0], m[1], E[0], E[1]];
2530
- }, v = {
2531
- id: Symbol("map-instance"),
2532
- innerMap: null,
2533
- map: d.getInstall(),
2534
- destroy: () => {
2535
- e.splice(e.indexOf(v), 1);
2536
- },
2537
- methods: {
2538
- ...d,
2539
- layer: S,
2540
- ship: r,
2541
- track: y,
2542
- carTrack: t,
2543
- port: {
2544
- render: g.render,
2545
- clear: g.clear,
2546
- selected: g.selected
2547
- },
2548
- position: $,
2549
- drawLine: D,
2550
- drawPolygon: R,
2551
- renderPolygon: a,
2552
- pathLine: u,
2553
- // 子模块
2554
- utils: {
2555
- getCalculateExtent: h,
2556
- convertSixHundredThousandToLatLng: wt,
2557
- calculateCirclePoints: bo
2558
- }
2559
- }
2560
- };
2561
- return e.push(v), v;
2562
- },
2563
- destroyInstance: (o) => {
2564
- const c = e.findIndex((d) => d.id === o);
2565
- c > -1 && (e[c].destroy(), e.splice(c, 1));
2566
- },
2567
- destroyAll: () => {
2568
- e.forEach((o) => o.destroy()), e.splice(0, e.length);
2569
- },
2570
- getAllInstances: () => [...e]
2571
- };
2572
- }, Qo = { class: "zh-map-box" }, Uo = /* @__PURE__ */ ut({
2573
- __name: "Map",
2574
- props: {
2575
- zoom: { default: fe.default },
2576
- center: { default: wo },
2577
- layerType: { default: "vector" },
2578
- showGreenLayer: { type: Boolean, default: !1 },
2579
- showScale: { type: Boolean, default: !0 },
2580
- scaleLineUnit: { default: "metric" },
2581
- mapMoveEnd: { type: Function, default: () => {
2582
- } },
2583
- lineDrawEnd: {},
2584
- areaDrawEnd: { type: Function, default: () => {
2585
- } },
2586
- selectShip: { type: Function, default: () => {
2587
- } },
2588
- selectPort: { type: Function, default: () => {
2589
- } }
2590
- },
2591
- setup(e, { expose: n }) {
2592
- function i() {
2593
- return new Promise((t) => {
2594
- document.fonts ? document.fonts.load("12px map-iconfont").then(t) : setTimeout(t, 300);
2595
- });
2596
- }
2597
- i();
2598
- const o = ye(), c = ye(), d = Jo(), l = ye(), S = e, M = ye({
2599
- getInstall() {
2600
- }
2601
- });
2602
- Qt(() => {
2603
- var t;
2604
- l.value = d.createInstance(o.value, S), M.value = l.value.methods, (t = c.value) == null || t.setScaleLine(l.value.map, S.scaleLineUnit), window.addEventListener("nativeDoubleTap", function() {
2605
- y();
2606
- });
2607
- });
2608
- function y() {
2609
- var r, $;
2610
- let t = (r = l.value) == null ? void 0 : r.methods.getZoom();
2611
- ($ = l.value) == null || $.methods.setZoom(t + 1);
2612
- }
2613
- return Ut(() => {
2614
- var t, r;
2615
- d.destroyInstance((t = l == null ? void 0 : l.value) == null ? void 0 : t.id), (r = l.value) == null || r.destroy();
2616
- }), n({
2617
- getZoom: () => {
2618
- var t;
2619
- return (t = l.value) == null ? void 0 : t.methods.getZoom();
2620
- },
2621
- setZoom: (t) => {
2622
- var r;
2623
- return (r = l.value) == null ? void 0 : r.methods.setZoom(t);
2624
- },
2625
- getInstall: () => {
2626
- var t;
2627
- return (t = l.value) == null ? void 0 : t.methods.getInstall();
2628
- },
2629
- setMapClick: (...t) => {
2630
- var r;
2631
- return (r = l.value) == null ? void 0 : r.methods.setMapClick(...t);
2632
- },
2633
- getMapClick: () => {
2634
- var t;
2635
- return (t = l.value) == null ? void 0 : t.methods.getMapClick();
2636
- },
2637
- getView: () => {
2638
- var t;
2639
- return (t = l.value) == null ? void 0 : t.methods.getView();
2640
- },
2641
- setCenter: (t, r) => {
2642
- var $;
2643
- return ($ = l.value) == null ? void 0 : $.methods.setCenter(t, r);
2644
- },
2645
- getSize: () => {
2646
- var t;
2647
- return (t = l.value) == null ? void 0 : t.methods.getSize();
2648
- },
2649
- getCenter: () => {
2650
- var t;
2651
- return (t = l.value) == null ? void 0 : t.methods.getCenter();
2652
- },
2653
- layer: {
2654
- setGreenTileVisible: (t) => {
2655
- var r;
2656
- return (r = l.value) == null ? void 0 : r.methods.layer.setGreenTileVisible(t);
2657
- },
2658
- getGreenTileVisible: () => {
2659
- var t;
2660
- return (t = l.value) == null ? void 0 : t.methods.layer.getGreenTileVisible();
2661
- },
2662
- getShowLayerType: () => {
2663
- var t;
2664
- return (t = l.value) == null ? void 0 : t.methods.layer.getShowLayerType();
2665
- },
2666
- setShowLayerType: (t) => {
2667
- var r;
2668
- return (r = l.value) == null ? void 0 : r.methods.layer.setShowLayerType(t);
2669
- }
2670
- },
2671
- ship: {
2672
- render: (...t) => {
2673
- var r;
2674
- return (r = l.value) == null ? void 0 : r.methods.ship.render(...t);
2675
- },
2676
- selected: (...t) => {
2677
- var r;
2678
- return (r = l.value) == null ? void 0 : r.methods.ship.selected(...t);
2679
- },
2680
- filter: (...t) => {
2681
- var r;
2682
- return (r = l.value) == null ? void 0 : r.methods.ship.filter(...t);
2683
- },
2684
- blinking: (...t) => {
2685
- var r;
2686
- return (r = l.value) == null ? void 0 : r.methods.ship.blinking(...t);
2687
- },
2688
- clear: () => {
2689
- var t;
2690
- return (t = l.value) == null ? void 0 : t.methods.ship.clear();
2691
- },
2692
- setLableStatus: (...t) => {
2693
- var r;
2694
- return (r = l.value) == null ? void 0 : r.methods.ship.setLableStatus(...t);
2695
- }
2696
- },
2697
- track: {
2698
- render: (...t) => {
2699
- var r;
2700
- return (r = l.value) == null ? void 0 : r.methods.track.render(...t);
2701
- },
2702
- remove: (...t) => {
2703
- var r;
2704
- return (r = l.value) == null ? void 0 : r.methods.track.remove(...t);
2705
- },
2706
- play: (...t) => {
2707
- var r;
2708
- return (r = l.value) == null ? void 0 : r.methods.track.play(...t);
2709
- },
2710
- setCenter: (...t) => {
2711
- var r;
2712
- return (r = l.value) == null ? void 0 : r.methods.track.setCenter(...t);
2713
- },
2714
- close: (...t) => {
2715
- var r;
2716
- return (r = l.value) == null ? void 0 : r.methods.track.close(...t);
2717
- },
2718
- getLength: (...t) => {
2719
- var r;
2720
- return (r = l.value) == null ? void 0 : r.methods.track.getLength(...t);
2721
- }
2722
- },
2723
- carTrack: {
2724
- location: (...t) => {
2725
- var r;
2726
- return (r = l.value) == null ? void 0 : r.methods.carTrack.location(...t);
2727
- },
2728
- remove: (...t) => {
2729
- var r;
2730
- return (r = l.value) == null ? void 0 : r.methods.carTrack.remove(...t);
2731
- },
2732
- renderTrack: (...t) => {
2733
- var r;
2734
- return (r = l.value) == null ? void 0 : r.methods.carTrack.renderTrack(...t);
2735
- },
2736
- setCenter: (...t) => {
2737
- var r;
2738
- return (r = l.value) == null ? void 0 : r.methods.carTrack.setCenter(...t);
2739
- },
2740
- closeTrack: () => {
2741
- var t;
2742
- return (t = l.value) == null ? void 0 : t.methods.carTrack.closeTrack();
2743
- },
2744
- playTrack: (...t) => {
2745
- var r;
2746
- return (r = l.value) == null ? void 0 : r.methods.carTrack.playTrack(...t);
2747
- }
2748
- },
2749
- port: {
2750
- render: (t, r) => {
2751
- var $;
2752
- return ($ = l.value) == null ? void 0 : $.methods.port.render(t, r);
2753
- },
2754
- clear: () => {
2755
- var t;
2756
- return (t = l.value) == null ? void 0 : t.methods.port.clear();
2757
- },
2758
- selected: (t) => {
2759
- var r;
2760
- return (r = l.value) == null ? void 0 : r.methods.port.selected(t);
2761
- }
2762
- },
2763
- position: {
2764
- render: (...t) => {
2765
- var r;
2766
- return (r = l.value) == null ? void 0 : r.methods.position.render(...t);
2767
- },
2768
- selected: (...t) => {
2769
- var r;
2770
- return (r = l.value) == null ? void 0 : r.methods.position.selected(...t);
2771
- },
2772
- clearSelected: (...t) => {
2773
- var r;
2774
- return (r = l.value) == null ? void 0 : r.methods.position.clearSelected(...t);
2775
- },
2776
- clear: () => {
2777
- var t;
2778
- return (t = l.value) == null ? void 0 : t.methods.position.clear();
2779
- },
2780
- renderHtml: (...t) => {
2781
- var r;
2782
- return (r = l.value) == null ? void 0 : r.methods.position.renderHtml(...t);
2783
- },
2784
- removeHtml: (...t) => {
2785
- var r;
2786
- return (r = l.value) == null ? void 0 : r.methods.position.removeHtml(...t);
2787
- }
2788
- },
2789
- drawLine: {
2790
- open: () => {
2791
- var t;
2792
- return (t = l.value) == null ? void 0 : t.methods.drawLine.open();
2793
- },
2794
- close: () => {
2795
- var t;
2796
- return (t = l.value) == null ? void 0 : t.methods.drawLine.close();
2797
- },
2798
- deleteLine: (t) => {
2799
- var r;
2800
- return (r = l.value) == null ? void 0 : r.methods.drawLine.deleteLine(t);
2801
- },
2802
- setUnit: (t) => {
2803
- var r;
2804
- return (r = l.value) == null ? void 0 : r.methods.drawLine.setUnit(t);
2805
- },
2806
- getState: () => {
2807
- var t;
2808
- return (t = l.value) == null ? void 0 : t.methods.drawLine.getState();
2809
- }
2810
- },
2811
- drawPolygon: {
2812
- open: (...t) => {
2813
- var r;
2814
- return (r = l.value) == null ? void 0 : r.methods.drawPolygon.open(...t);
2815
- },
2816
- close: () => {
2817
- var t;
2818
- return (t = l.value) == null ? void 0 : t.methods.drawPolygon.close();
2819
- },
2820
- reset: () => {
2821
- var t;
2822
- return (t = l.value) == null ? void 0 : t.methods.drawPolygon.reset();
2823
- }
2824
- },
2825
- pathLine: {
2826
- render: (...t) => {
2827
- var r;
2828
- return (r = l.value) == null ? void 0 : r.methods.pathLine.render(...t);
2829
- },
2830
- blinking: (...t) => {
2831
- var r;
2832
- return (r = l.value) == null ? void 0 : r.methods.pathLine.blinking(...t);
2833
- }
2834
- },
2835
- renderPolygon: {
2836
- createPolygon: (...t) => {
2837
- var r;
2838
- return (r = l.value) == null ? void 0 : r.methods.renderPolygon.createPolygon(...t);
2839
- },
2840
- createCircle: (...t) => {
2841
- var r;
2842
- return (r = l.value) == null ? void 0 : r.methods.renderPolygon.createCircle(...t);
2843
- },
2844
- updatePolygon: (...t) => {
2845
- var r;
2846
- return (r = l.value) == null ? void 0 : r.methods.renderPolygon.updatePolygon(...t);
2847
- },
2848
- clear: () => {
2849
- var t;
2850
- return (t = l.value) == null ? void 0 : t.methods.renderPolygon.clear();
2851
- }
2852
- },
2853
- // 子模块
2854
- utils: {
2855
- getCalculateExtent: (...t) => {
2856
- var r;
2857
- return (r = l.value) == null ? void 0 : r.methods.utils.getCalculateExtent(...t);
2858
- },
2859
- convertSixHundredThousandToLatLng: (...t) => {
2860
- var r;
2861
- return (r = l.value) == null ? void 0 : r.methods.utils.convertSixHundredThousandToLatLng(...t);
2862
- },
2863
- calculateCirclePoints: (t, r) => {
2864
- var $;
2865
- return ($ = l.value) == null ? void 0 : $.methods.utils.calculateCirclePoints(t, r);
2866
- }
2867
- }
2868
- }), (t, r) => (gt(), ft("div", Qo, [
2869
- ct("div", {
2870
- id: "map",
2871
- ref_key: "zhMapRef",
2872
- ref: o,
2873
- class: "zh-map"
2874
- }, null, 512),
2875
- at(ho, {
2876
- ref_key: "scaleLineRef",
2877
- ref: c
2878
- }, null, 512),
2879
- at(mo, {
2880
- ref: "zoomControlRef",
2881
- "map-instance": l.value
2882
- }, null, 8, ["map-instance"])
2883
- ]));
2884
- }
2885
- }), Io = /* @__PURE__ */ mt(Uo, [["__scopeId", "data-v-bb25afd0"]]), ln = uo(Io);
2886
- export {
2887
- ln as Z
2888
- };