zhihao-ui 1.2.49 → 1.2.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,123 +1,128 @@
1
- var D = Object.defineProperty;
2
- var G = (e, t, n) => t in e ? D(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
- var b = (e, t, n) => G(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { defineComponent, inject, useModel, ref, watch, openBlock, createElementBlock, createElementVNode, createVNode, unref, withCtx, Fragment, renderList, toDisplayString, createCommentVNode, mergeModels, nextTick, onMounted, normalizeClass, renderSlot, createBlock, useCssVars, computed, provide } from "vue";
1
+ var G = Object.defineProperty;
2
+ var _ = (e, t, o) => t in e ? G(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o;
3
+ var I = (e, t, o) => _(e, typeof t != "symbol" ? t + "" : t, o);
4
+ import { ref, defineComponent, inject, useModel, watch, openBlock, createElementBlock, createElementVNode, createVNode, unref, withCtx, Fragment, renderList, toDisplayString, createCommentVNode, mergeModels, nextTick, onMounted, normalizeClass, renderSlot, createBlock, useCssVars, computed, provide } from "vue";
5
5
  import { p as getArea, q as getLength, V as VectorSource, r as VectorLayer, S as Style, C as CircleStyle, F as Fill, s as Stroke, D as Draw, O as Overlay, u as unByKey, t as ElSelect, v as ElOption, w as getUid, x as fromLonLat, P as Point, y as transform, z as Feature, T as Text, I as Icon, A as Translate, B as toLonLat, i as cloneDeep, G as GeoJSON, W as WebGLPointsLayer, H as Circle, J as transformExtent, h as hooks, L as LineString, K as Polyline, M as getVectorContext, N as buffer, Q as ScaleLine$1, R as MultiPoint, U as getCenter, X as TileLayer, Y as XYZ, Z as Map$1, _ as View } from "./vendor-DaYdW1_n.js";
6
6
  import { _ as _export_sfc } from "./Button-CNEQmoqP.js";
7
- import { g as getForegroundColor } from "./DatePicker-Dh8sksac.js";
7
+ import { g as getForegroundColor } from "./DatePicker-CyE4WKsz.js";
8
8
  import { w as withInstall } from "./utils-BSQSj8Ii.js";
9
9
  var BaseMapType = /* @__PURE__ */ ((e) => (e[e.vector = 0] = "vector", e[e.satellite = 1] = "satellite", e))(BaseMapType || {}), SEARCH_TYPE = /* @__PURE__ */ ((e) => (e[e.SEARCH_SHIP = 0] = "SEARCH_SHIP", e[e.SEARCH_PORT = 1] = "SEARCH_PORT", e[e.SEARCH_CUSTOM = 2] = "SEARCH_CUSTOM", e))(SEARCH_TYPE || {}), COPY_RIGHT_TYPE = /* @__PURE__ */ ((e) => (e[e.HORIZONTAL = 0] = "HORIZONTAL", e[e.VERTICAL = 1] = "VERTICAL", e))(COPY_RIGHT_TYPE || {}), CAR_COLOR = /* @__PURE__ */ ((e) => (e[e.BLUE = 1] = "BLUE", e[e.YELLOW = 2] = "YELLOW", e[e.Y_GREEN = 3] = "Y_GREEN", e))(CAR_COLOR || {}), DEVICE_TYPE = /* @__PURE__ */ ((e) => (e[e.HOST = 1] = "HOST", e[e.TALK = 2] = "TALK", e[e.STORAGE = 3] = "STORAGE", e[e.INTERNET = 4] = "INTERNET", e[e.CAMERA = 5] = "CAMERA", e[e.LOAD = 6] = "LOAD", e))(DEVICE_TYPE || {}), LENGTH_UNIT = /* @__PURE__ */ ((e) => (e[e.M = 1] = "M", e[e.KM = 2] = "KM", e[e.NM = 3] = "NM", e))(LENGTH_UNIT || {}), SWITCH_BTN = /* @__PURE__ */ ((e) => (e.Camera = "camera", e.Mobile = "mobile", e.WaterGauge = "waterGauge", e))(SWITCH_BTN || {}), SHIP_SAIL_STATUS = /* @__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))(SHIP_SAIL_STATUS || {});
10
10
  class ShipMapData {
11
- constructor(t, n, o, r, i, l, c, s, m, d, u, h, p, f, v, g, L, S, I, F, x, P, $, y) {
12
- b(this, "id");
11
+ constructor(t, o, n, l, r, i, c, s, m, d, u, h, p, f, v, g, k, M, b, E, V, F, $, y) {
12
+ I(this, "id");
13
13
  // mmsi
14
- b(this, "mmsi");
14
+ I(this, "mmsi");
15
15
  // 船舶三角形填充色
16
- b(this, "fill");
16
+ I(this, "fill");
17
17
  // 船类型 "7": "货船",
18
- b(this, "shipType");
18
+ I(this, "shipType");
19
19
  // 船名
20
- b(this, "name");
20
+ I(this, "name");
21
21
  // 长度
22
- b(this, "length");
22
+ I(this, "length");
23
23
  // 宽度
24
- b(this, "breadth");
24
+ I(this, "breadth");
25
25
  // 经度
26
- b(this, "lon");
26
+ I(this, "lon");
27
27
  // 纬度
28
- b(this, "lat");
28
+ I(this, "lat");
29
29
  // 时间
30
- b(this, "createdAt");
30
+ I(this, "createdAt");
31
31
  // 速度
32
- b(this, "speed");
32
+ I(this, "speed");
33
33
  // 来源
34
- b(this, "from");
34
+ I(this, "from");
35
35
  // 船状态 "stop":"静止","sail":"航行","work":"作业","danger":"危险","other":"其他"
36
- b(this, "sailStatus");
36
+ I(this, "sailStatus");
37
37
  // 船艏向
38
- b(this, "hdg");
38
+ I(this, "hdg");
39
39
  // 航迹向
40
- b(this, "cog");
40
+ I(this, "cog");
41
41
  // 设备定位类型
42
- b(this, "posType");
43
- b(this, "type");
42
+ I(this, "posType");
43
+ I(this, "type");
44
44
  // 航向角度
45
- b(this, "angle");
45
+ I(this, "angle");
46
46
  // 左侧是否显示色块
47
- b(this, "leftIconColor");
48
- b(this, "existDevice");
49
- b(this, "existMobile");
50
- b(this, "existWaterGauge");
51
- b(this, "selected");
52
- b(this, "blinkColors");
53
- this.id = t, this.mmsi = n, this.fill = o, this.shipType = r, this.name = i, this.length = l, this.breadth = c, this.lon = s, this.lat = m, this.createdAt = d, this.speed = u, this.from = h, this.sailStatus = p, this.hdg = f, this.cog = v, this.posType = g, this.type = L, this.angle = S, this.leftIconColor = I, this.existDevice = F, this.existMobile = x, this.existWaterGauge = P, this.selected = $, this.blinkColors = y;
47
+ I(this, "leftIconColor");
48
+ I(this, "existDevice");
49
+ I(this, "existMobile");
50
+ I(this, "existWaterGauge");
51
+ I(this, "selected");
52
+ I(this, "blinkColors");
53
+ this.id = t, this.mmsi = o, this.fill = n, this.shipType = l, this.name = r, this.length = i, this.breadth = c, this.lon = s, this.lat = m, this.createdAt = d, this.speed = u, this.from = h, this.sailStatus = p, this.hdg = f, this.cog = v, this.posType = g, this.type = k, this.angle = M, this.leftIconColor = b, this.existDevice = E, this.existMobile = V, this.existWaterGauge = F, this.selected = $, this.blinkColors = y;
54
54
  }
55
55
  }
56
56
  const formatLength = function(e, t) {
57
- const o = getLength(e);
58
- let r = "";
57
+ const n = getLength(e);
58
+ let l = "";
59
59
  switch (t) {
60
60
  case LENGTH_UNIT.M:
61
- r = Math.round(o * 100) / 100 + " m";
61
+ l = Math.round(n * 100) / 100 + " m";
62
62
  break;
63
63
  case LENGTH_UNIT.KM:
64
- r = Math.round(o / 1e3 * 100) / 100 + " km";
64
+ l = Math.round(n / 1e3 * 100) / 100 + " km";
65
65
  break;
66
66
  case LENGTH_UNIT.NM:
67
- r = (Math.round(o / 1e3 * 100) / 100 / 1.852).toFixed(2) + " nm";
67
+ l = (Math.round(n / 1e3 * 100) / 100 / 1.852).toFixed(2) + " nm";
68
68
  break;
69
69
  }
70
- return r;
70
+ return l;
71
71
  }, convertSixHundredThousandToLatLng = function(e, t) {
72
- const n = Number(t) / 6e5;
73
- return [Number(e) / 6e5, n];
72
+ const o = Number(t) / 6e5;
73
+ return [Number(e) / 6e5, o];
74
74
  }, formatArea = (e, t) => {
75
- const o = getArea(e);
76
- let r;
75
+ const n = getArea(e);
76
+ let l;
77
77
  switch (t) {
78
78
  case LENGTH_UNIT.KM:
79
- o > 1e4 ? r = Math.round(o / 1e6 * 100) / 100 + " km<sup>2</sup>" : r = Math.round(o * 100) / 100 + " m<sup>2</sup>";
79
+ n > 1e4 ? l = Math.round(n / 1e6 * 100) / 100 + " km<sup>2</sup>" : l = Math.round(n * 100) / 100 + " m<sup>2</sup>";
80
80
  break;
81
81
  case LENGTH_UNIT.NM:
82
- const i = Math.pow(1.852, 2);
83
- o > 1e4 ? r = Math.round(o / 1e6 / i * 100) / 100 + " nm<sup>2</sup>" : r = Math.round(o * 100) / 100 + " m<sup>2</sup>";
82
+ const r = Math.pow(1.852, 2);
83
+ n > 1e4 ? l = Math.round(n / 1e6 / r * 100) / 100 + " nm<sup>2</sup>" : l = Math.round(n * 100) / 100 + " m<sup>2</sup>";
84
84
  break;
85
85
  }
86
- return r;
86
+ return l;
87
87
  }, convertShipMapData = (e) => {
88
- const t = (n) => new ShipMapData(
89
- n.id,
90
- n.id,
88
+ const t = (o) => new ShipMapData(
89
+ o.id,
90
+ o.id,
91
91
  // 船舶三角形填充色
92
- n.fill || "#04C900",
92
+ o.fill || "#04C900",
93
93
  "70",
94
- (n.cnname || n.enname || n.name || n.id) + `${n.existName ? n.existName : ""}`,
95
- n.len || n.length,
96
- n.wid || n.breadth,
97
- n.lon,
98
- n.lat,
94
+ (o.cnname || o.enname || o.name || o.id) + `${o.existName ? o.existName : ""}`,
95
+ o.len || o.length,
96
+ o.wid || o.breadth,
97
+ o.lon,
98
+ o.lat,
99
99
  (/* @__PURE__ */ new Date()).getTime(),
100
- n.spd,
101
- n.from,
102
- n.status,
103
- Number(n.hdg),
104
- n.cog,
105
- Number(n.postype),
100
+ o.spd,
101
+ o.from,
102
+ o.status,
103
+ Number(o.hdg),
104
+ o.cog,
105
+ Number(o.postype),
106
106
  "other",
107
- n.cog,
108
- n.leftIconColor,
109
- n.existDevice,
110
- n.existMobile,
111
- n.existWaterGauge,
112
- n.selected,
113
- n.blinkColors
107
+ o.cog,
108
+ o.leftIconColor,
109
+ o.existDevice,
110
+ o.existMobile,
111
+ o.existWaterGauge,
112
+ o.selected,
113
+ o.blinkColors
114
114
  );
115
- return Array.isArray(e) ? e.map((n) => t(n)) : t(e);
115
+ return Array.isArray(e) ? e.map((o) => t(o)) : t(e);
116
116
  }, formatUtils = {
117
117
  formatLength,
118
118
  convertSixHundredThousandToLatLng,
119
119
  formatArea
120
- }, _hoisted_1$4 = {
120
+ }, mapInstance$9 = ref(), shipsLayer = ref(), largeAmountShipsLayer = ref(), selectShipsLayer = ref(), allShips = ref([]), selectSingleShipData = ref();
121
+ ref();
122
+ const trucksLayer = ref(), shipTrackLineFeatures = ref([]), trackLineVectorSource = ref(), shipTrackVectorLayer = ref();
123
+ ref();
124
+ ref();
125
+ const shipLabels = ref([]), trackLabels = ref([]), showTrackLayer = ref(!1), allTracks = ref([]), currentTrackId = ref(""), showTrackAnimatMarker = ref(!1), hiddenOrther = ref(!1), showDrawLayer = ref(!1), _hoisted_1$4 = {
121
126
  key: 0,
122
127
  class: "measure-panel"
123
128
  }, _hoisted_2$2 = { class: "d-flex justify-content-between align-content-start w-100" }, _hoisted_3$1 = { class: "measure-history-list" }, _hoisted_4 = { class: "left-panel" }, _hoisted_5 = { class: "text index" }, _hoisted_6 = { class: "text" }, _hoisted_7 = ["onClick"], _sfc_main$5 = /* @__PURE__ */ defineComponent({
@@ -129,8 +134,8 @@ const formatLength = function(e, t) {
129
134
  visibleModifiers: {}
130
135
  }),
131
136
  emits: /* @__PURE__ */ mergeModels(["close"], ["update:visible"]),
132
- setup(e, { expose: t, emit: n }) {
133
- const o = inject("mapInstance"), r = n, i = useModel(e, "visible"), l = ref("3"), c = ref([]), s = ref(!1), m = new VectorSource();
137
+ setup(e, { expose: t, emit: o }) {
138
+ const n = inject("mapInstance"), l = o, r = useModel(e, "visible"), i = ref("3"), c = ref([]), s = ref(!1), m = new VectorSource();
134
139
  let d, u, h, p, f;
135
140
  const v = new VectorLayer({
136
141
  source: m,
@@ -141,20 +146,20 @@ const formatLength = function(e, t) {
141
146
  "circle-radius": 7,
142
147
  "circle-fill-color": "#ffcc33"
143
148
  }
144
- }), g = function(M) {
145
- if (M.dragging)
149
+ }), g = function(S) {
150
+ if (S.dragging)
146
151
  return;
147
152
  let T = "点击选择起点";
148
- d && (T = "单击继续,双击结束"), u && (u.innerHTML = T, h.setPosition(M.coordinate), u.classList.remove("hidden"));
149
- }, L = () => {
150
- var M, T;
151
- o != null && o.value && ((M = o == null ? void 0 : o.value) == null || M.on("pointermove", g), (T = o == null ? void 0 : o.value) == null || T.getViewport().addEventListener("mouseout", function() {
153
+ d && (T = "单击继续,双击结束"), u && (u.innerHTML = T, h.setPosition(S.coordinate), u.classList.remove("hidden"));
154
+ }, k = () => {
155
+ var S, T;
156
+ n != null && n.value && ((S = n == null ? void 0 : n.value) == null || S.on("pointermove", g), (T = n == null ? void 0 : n.value) == null || T.getViewport().addEventListener("mouseout", function() {
152
157
  var C;
153
158
  (C = u == null ? void 0 : u.classList) == null || C.add("hidden");
154
159
  }), s.value = !0);
155
160
  };
156
- let S;
157
- const I = new Style({
161
+ let M;
162
+ const b = new Style({
158
163
  fill: new Fill({
159
164
  color: "rgba(255, 255, 255, 0.2)"
160
165
  }),
@@ -173,97 +178,97 @@ const formatLength = function(e, t) {
173
178
  })
174
179
  })
175
180
  });
176
- function F() {
177
- var M, T;
178
- if (o != null && o.value) {
179
- if (c.value = [], document.querySelectorAll(".ol-tooltip.ol-tooltip-static").forEach((C) => {
180
- var V;
181
- (V = C == null ? void 0 : C.parentNode) == null || V.removeChild(C);
182
- }), m.clear(), S) {
183
- const C = o.value.getInteractions().getArray().find((V) => getUid(V) === getUid(S));
184
- C && ((M = o.value) == null || M.removeInteraction(C));
181
+ function E() {
182
+ var S, T;
183
+ if (n != null && n.value) {
184
+ if (showDrawLayer.value = !1, c.value = [], document.querySelectorAll(".ol-tooltip.ol-tooltip-static").forEach((C) => {
185
+ var P;
186
+ (P = C == null ? void 0 : C.parentNode) == null || P.removeChild(C);
187
+ }), m.clear(), M) {
188
+ const C = n.value.getInteractions().getArray().find((P) => getUid(P) === getUid(M));
189
+ C && ((S = n.value) == null || S.removeInteraction(C));
185
190
  }
186
- (T = o.value) == null || T.removeLayer(v), u != null && u.parentNode && u.parentNode.removeChild(u), p != null && p.parentNode && p.parentNode.removeChild(p);
191
+ (T = n.value) == null || T.removeLayer(v), u != null && u.parentNode && u.parentNode.removeChild(u), p != null && p.parentNode && p.parentNode.removeChild(p);
187
192
  }
188
193
  }
189
- function x() {
194
+ function V() {
190
195
  var T, C;
191
- F(), (T = o == null ? void 0 : o.value) == null || T.addLayer(v), S = new Draw({
196
+ E(), (T = n == null ? void 0 : n.value) == null || T.addLayer(v), showDrawLayer.value = !0, M = new Draw({
192
197
  source: m,
193
198
  type: "LineString",
194
199
  style: function() {
195
- return I;
200
+ return b;
196
201
  },
197
202
  // 添加条件函数,判断是否应该触发绘制
198
- condition: function(V) {
199
- return V.originalEvent.target.tagName !== "DIV";
203
+ condition: function(P) {
204
+ return P.originalEvent.target.tagName !== "DIV";
200
205
  }
201
- }), (C = o == null ? void 0 : o.value) == null || C.addInteraction(S), $(), P();
202
- let M;
203
- S.on("drawstart", function(V) {
206
+ }), (C = n == null ? void 0 : n.value) == null || C.addInteraction(M), $(), F();
207
+ let S;
208
+ M.on("drawstart", function(P) {
204
209
  var N;
205
- d = V.feature, d.set("randomId", k());
206
- let E;
207
- M = (N = d.getGeometry()) == null ? void 0 : N.on("change", function(B) {
208
- const O = B.target;
209
- let R = formatUtils.formatLength(O, Number(l.value));
210
- E = O.getLastCoordinate(), p && R && (p.innerHTML = R), f.setPosition(E);
210
+ d = P.feature, d.set("randomId", w());
211
+ let x;
212
+ S = (N = d.getGeometry()) == null ? void 0 : N.on("change", function(R) {
213
+ const B = R.target;
214
+ let D = formatUtils.formatLength(B, Number(i.value));
215
+ x = B.getLastCoordinate(), p && D && (p.innerHTML = D), f.setPosition(x);
211
216
  });
212
- }), S.on("drawend", function() {
213
- var V;
217
+ }), M.on("drawend", function() {
218
+ var P;
214
219
  if (p && (p.className = "ol-tooltip ol-tooltip-static ol-tooltip-measure"), p != null && p.innerHTML) {
215
- const E = (d == null ? void 0 : d.get("randomId")) || k();
216
- c.value.push({ id: E, value: p == null ? void 0 : p.innerHTML }), p.innerHTML = `${p.innerHTML}<div class="ol-tooltip-delete-button" data-id="${E}"><i class="map-iconfont icon-delete"></i></div>`;
220
+ const x = (d == null ? void 0 : d.get("randomId")) || w();
221
+ c.value.push({ id: x, value: p == null ? void 0 : p.innerHTML }), p.innerHTML = `${p.innerHTML}<div class="ol-tooltip-delete-button" data-id="${x}"><i class="map-iconfont icon-delete"></i></div>`;
217
222
  }
218
- (V = document.querySelector(".ol-selectable:has(.ol-tooltip-delete-button):last-child .ol-tooltip-delete-button")) == null || V.addEventListener("click", (E) => {
219
- var B;
220
- E.preventDefault(), E.stopPropagation();
221
- const N = (B = E.target) == null ? void 0 : B.getAttribute("data-id");
223
+ (P = document.querySelector(".ol-selectable:has(.ol-tooltip-delete-button):last-child .ol-tooltip-delete-button")) == null || P.addEventListener("click", (x) => {
224
+ var R;
225
+ x.preventDefault(), x.stopPropagation();
226
+ const N = (R = x.target) == null ? void 0 : R.getAttribute("data-id");
222
227
  N && y(N);
223
- }), f.setOffset([0, -7]), d = null, p = null, $(), M && unByKey(M);
228
+ }), f.setOffset([0, -7]), d = null, p = null, $(), S && unByKey(S);
224
229
  });
225
230
  }
226
- function P() {
227
- var M;
231
+ function F() {
232
+ var S;
228
233
  u != null && u.parentNode && u.parentNode.removeChild(u), u = document.createElement("div"), u.className = "ol-tooltip hidden", h = new Overlay({
229
234
  element: u,
230
235
  offset: [15, 0],
231
236
  positioning: "center-left"
232
- }), (M = o == null ? void 0 : o.value) == null || M.addOverlay(h);
237
+ }), (S = n == null ? void 0 : n.value) == null || S.addOverlay(h);
233
238
  }
234
239
  function $() {
235
- var M;
240
+ var S;
236
241
  p != null && p.parentNode && p.parentNode.removeChild(p), p = document.createElement("div"), p.className = "ol-tooltip ol-tooltip-measure", f = new Overlay({
237
242
  element: p,
238
243
  offset: [0, -15],
239
244
  positioning: "bottom-center",
240
245
  stopEvent: !1,
241
246
  insertFirst: !1
242
- }), (M = o == null ? void 0 : o.value) == null || M.addOverlay(f);
247
+ }), (S = n == null ? void 0 : n.value) == null || S.addOverlay(f);
243
248
  }
244
- const y = (M) => {
245
- var C, V;
246
- const T = c.value.findIndex((E) => E.id === M);
249
+ const y = (S) => {
250
+ var C, P;
251
+ const T = c.value.findIndex((x) => x.id === S);
247
252
  if (T !== -1) {
248
253
  c.value.splice(T, 1);
249
- const E = document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");
250
- E[T] && ((V = (C = E[T]) == null ? void 0 : C.parentNode) == null || V.removeChild(E[T]));
254
+ const x = document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");
255
+ x[T] && ((P = (C = x[T]) == null ? void 0 : C.parentNode) == null || P.removeChild(x[T]));
251
256
  const N = m.getFeatures();
252
257
  N[T] && m.removeFeature(N[T]);
253
258
  }
254
- }, w = () => {
255
- r("close");
256
- }, k = () => Math.random().toString(36).substring(2, 9);
257
- return watch(() => i, () => {
258
- i.value && !s.value && (L(), x());
259
+ }, L = () => {
260
+ l("close");
261
+ }, w = () => Math.random().toString(36).substring(2, 9);
262
+ return watch(() => r, () => {
263
+ r.value && !s.value && (k(), V());
259
264
  }, { deep: !0, immediate: !0 }), t({
260
- addInteraction: x,
261
- removeInteraction: F
262
- }), (M, T) => i.value && M.viewMode !== "WxMiniprogram" ? (openBlock(), createElementBlock("div", _hoisted_1$4, [
265
+ addInteraction: V,
266
+ removeInteraction: E
267
+ }), (S, T) => r.value && S.viewMode !== "WxMiniprogram" ? (openBlock(), createElementBlock("div", _hoisted_1$4, [
263
268
  createElementVNode("div", { class: "header" }, [
264
269
  T[1] || (T[1] = createElementVNode("div", { class: "title" }, "测量", -1)),
265
270
  createElementVNode("i", {
266
- onClick: w,
271
+ onClick: L,
267
272
  class: "map-iconfont icon-close"
268
273
  })
269
274
  ]),
@@ -271,8 +276,8 @@ const formatLength = function(e, t) {
271
276
  T[2] || (T[2] = createElementVNode("div", { class: "tips" }, "在地图上点击多个点测量距离,距离单位", -1)),
272
277
  createVNode(unref(ElSelect), {
273
278
  class: "select-length-unit",
274
- modelValue: l.value,
275
- "onUpdate:modelValue": T[0] || (T[0] = (C) => l.value = C)
279
+ modelValue: i.value,
280
+ "onUpdate:modelValue": T[0] || (T[0] = (C) => i.value = C)
276
281
  }, {
277
282
  default: withCtx(() => [
278
283
  createVNode(unref(ElOption), {
@@ -292,18 +297,18 @@ const formatLength = function(e, t) {
292
297
  }, 8, ["modelValue"])
293
298
  ]),
294
299
  createElementVNode("div", _hoisted_3$1, [
295
- (openBlock(!0), createElementBlock(Fragment, null, renderList(c.value, (C, V) => (openBlock(), createElementBlock("div", {
300
+ (openBlock(!0), createElementBlock(Fragment, null, renderList(c.value, (C, P) => (openBlock(), createElementBlock("div", {
296
301
  class: "measure-history-item",
297
302
  key: C.id
298
303
  }, [
299
304
  createElementVNode("div", _hoisted_4, [
300
305
  T[3] || (T[3] = createElementVNode("i", { class: "map-iconfont icon-line" }, null, -1)),
301
- createElementVNode("span", _hoisted_5, "线段" + toDisplayString(V + 1), 1),
306
+ createElementVNode("span", _hoisted_5, "线段" + toDisplayString(P + 1), 1),
302
307
  createElementVNode("span", _hoisted_6, toDisplayString(C.value), 1)
303
308
  ]),
304
309
  createElementVNode("div", {
305
310
  class: "delete-button",
306
- onClick: (E) => y(C.id)
311
+ onClick: (x) => y(C.id)
307
312
  }, T[4] || (T[4] = [
308
313
  createElementVNode("i", { class: "map-iconfont icon-delete" }, null, -1)
309
314
  ]), 8, _hoisted_7)
@@ -311,7 +316,7 @@ const formatLength = function(e, t) {
311
316
  ])
312
317
  ])) : createCommentVNode("", !0);
313
318
  }
314
- }), Measure = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-f04be643"]]), mapInstance$8 = ref(), renderMarkerSetInstance = (e) => mapInstance$8.value = e, markerPosition = ref(""), marker = ref(), createIconStyle = (e) => new Style({
319
+ }), Measure = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-3277433d"]]), mapInstance$8 = ref(), renderMarkerSetInstance = (e) => mapInstance$8.value = e, markerPosition = ref(""), marker = ref(), createIconStyle = (e) => new Style({
315
320
  image: new Icon({
316
321
  src: CDN_URL + "map/poi-marker-default.png",
317
322
  anchor: [0.5, 1]
@@ -340,19 +345,19 @@ const formatLength = function(e, t) {
340
345
  padding: [2, 2, 2, 2]
341
346
  // 设置文本背景的内边距
342
347
  })
343
- }), renderMarker = (e, t = !0, n = !0) => {
348
+ }), renderMarker = (e, t = !0, o = !0) => {
344
349
  var d;
345
350
  if (!mapInstance$8.value || !e || e.split(",").length !== 2) return;
346
- const [o, r] = e.split(",").map(Number);
351
+ const [n, l] = e.split(",").map(Number);
347
352
  marker.value = new Feature({
348
- geometry: new Point(fromLonLat([o, r]))
353
+ geometry: new Point(fromLonLat([n, l]))
349
354
  });
350
- const i = n ? `${o}, ${r}` : "";
351
- (d = marker.value) == null || d.setStyle(createIconStyle(i));
352
- const l = new VectorSource({
355
+ const r = o ? `${n}, ${l}` : "";
356
+ (d = marker.value) == null || d.setStyle(createIconStyle(r));
357
+ const i = new VectorSource({
353
358
  features: [marker.value]
354
359
  }), c = new VectorLayer({
355
- source: l
360
+ source: i
356
361
  }), s = mapInstance$8.value.getView();
357
362
  if (mapInstance$8.value.addLayer(c), t) {
358
363
  const u = new Translate({
@@ -364,15 +369,15 @@ const formatLength = function(e, t) {
364
369
  markerPosition.value = `${f[0].toFixed(6)}, ${f[1].toFixed(6)}`, (v = marker.value) == null || v.setStyle(createIconStyle(markerPosition.value));
365
370
  }), mapInstance$8.value.addInteraction(u);
366
371
  }
367
- const m = new Point([o, r]);
372
+ const m = new Point([n, l]);
368
373
  s.setCenter(transform(m.getCoordinates(), projection.data, projection.mercator)), s.setZoom(mapZoom.findShip);
369
374
  }, setMarkerPosition = (e) => {
370
- var r, i;
375
+ var l, r;
371
376
  if (!mapInstance$8.value) return;
372
- const t = mapInstance$8.value.getView(), n = e.split(",").map(Number);
373
- (i = (r = marker.value) == null ? void 0 : r.getGeometry()) == null || i.setCoordinates(fromLonLat([n[0], n[1]]));
374
- const o = new Point([n[0], n[1]]);
375
- t.setCenter(transform(o.getCoordinates(), projection.data, projection.mercator)), t.setZoom(mapZoom.markerPosition);
377
+ const t = mapInstance$8.value.getView(), o = e.split(",").map(Number);
378
+ (r = (l = marker.value) == null ? void 0 : l.getGeometry()) == null || r.setCoordinates(fromLonLat([o[0], o[1]]));
379
+ const n = new Point([o[0], o[1]]);
380
+ t.setCenter(transform(n.getCoordinates(), projection.data, projection.mercator)), t.setZoom(mapZoom.markerPosition);
376
381
  }, CDN_URL = "https://static.zhihaoscm.cn/", tiandituKey = "a6e8f78974f2581f2ca00485b40c948f", zhongkeKey = "15c81cc0a191a232e0a0ca1a51c3ca81", baseMap = {
377
382
  // 矢量底图
378
383
  // zhongkeTile: `https://api.open.geovisearth.com/map/v1/vec/{z}/{x}/{y}?token=${zhongkeKey}&format=png&tmsIds=w`,
@@ -415,19 +420,12 @@ const formatLength = function(e, t) {
415
420
  // 墨卡托投影坐标 渲染坐标
416
421
  mercator: "EPSG:3857"
417
422
  }, LOG_DATE_FORMAT = "YYYY-MM-DD HH:mm:ss", DEFAULT_VALUE = "--";
418
- ref();
419
- const shipsLayer = ref(), largeAmountShipsLayer = ref(), selectShipsLayer = ref(), allShips = ref([]), selectSingleShipData = ref();
420
- ref();
421
- const trucksLayer = ref(), shipTrackLineFeatures = ref([]), trackLineVectorSource = ref(), shipTrackVectorLayer = ref();
422
- ref();
423
- ref();
424
- const shipLabels = ref([]), trackLabels = ref([]), showTrackLayer = ref(!1), allTracks = ref([]), currentTrackId = ref(""), showTrackAnimatMarker = ref(!1), hiddenOrther = ref(!1), showMeasure = ref(!1), getShowMeasure = () => showMeasure.value;
425
423
  function getIconFont(unicode = "") {
426
424
  return unicode.indexOf("&amp;") !== -1 && (unicode = unicode.replace("&amp;", "&")), unicode.indexOf("&amp") !== -1 && (unicode = unicode.replace("&amp", "&")), eval('("' + unicode.replace("&#x", "\\u").replace(";", "") + '")');
427
425
  }
428
426
  const multiplyPixelRatio = (e) => {
429
427
  const t = window.devicePixelRatio || 1;
430
- return e.map((n) => n.map((o) => o * t));
428
+ return e.map((o) => o.map((n) => n * t));
431
429
  }, adjustBounds = (e, t) => t.length === 2 ? [e[0] - t[0], e[1] - t[1], e[2] + t[0], e[3] + t[1]] : [e[0] + t[0], e[1] + t[1], e[2] + t[2], e[3] + t[3]], isOverlapping = (e, t) => e[0] <= t[2] && e[2] >= t[0] && e[1] <= t[3] && e[3] >= t[1], getIconStyle = (e) => new Style({
432
430
  text: new Text({
433
431
  font: "Normal 14px map-iconfont",
@@ -436,14 +434,14 @@ const multiplyPixelRatio = (e) => {
436
434
  offsetY: -14
437
435
  }),
438
436
  zIndex: 100
439
- }), getRotation = (e, t, n) => {
440
- function o(u) {
437
+ }), getRotation = (e, t, o) => {
438
+ function n(u) {
441
439
  return 180 * (u % (2 * Math.PI)) / Math.PI;
442
440
  }
443
- function r(u) {
441
+ function l(u) {
444
442
  return u % 360 * Math.PI / 180;
445
443
  }
446
- function i(u) {
444
+ function r(u) {
447
445
  if (!u) throw new Error("Coordinate is required");
448
446
  if (!Array.isArray(u)) {
449
447
  if (u.type === "Feature" && u.geometry !== null && u.geometry.type === "Point")
@@ -456,13 +454,13 @@ const multiplyPixelRatio = (e) => {
456
454
  "Coordinate must be GeoJSON Point or an Array of numbers"
457
455
  );
458
456
  }
459
- function l(u, h, p = {}) {
457
+ function i(u, h, p = {}) {
460
458
  if (p.final)
461
- return function(P, $) {
462
- return (l($, P) + 180) % 360;
459
+ return function(F, $) {
460
+ return (i($, F) + 180) % 360;
463
461
  }(u, h);
464
- const f = i(u), v = i(h), g = r(f[0]), L = r(v[0]), S = r(f[1]), I = r(v[1]), F = Math.sin(L - g) * Math.cos(I), x = Math.cos(S) * Math.sin(I) - Math.sin(S) * Math.cos(I) * Math.cos(L - g);
465
- return o(Math.atan2(F, x));
462
+ const f = r(u), v = r(h), g = l(f[0]), k = l(v[0]), M = l(f[1]), b = l(v[1]), E = Math.sin(k - g) * Math.cos(b), V = Math.cos(M) * Math.sin(b) - Math.sin(M) * Math.cos(b) * Math.cos(k - g);
463
+ return n(Math.atan2(E, V));
466
464
  }
467
465
  function c(u) {
468
466
  return !isNaN(u) && u !== null && !Array.isArray(u);
@@ -474,7 +472,7 @@ const multiplyPixelRatio = (e) => {
474
472
  const f = { type: "Feature" };
475
473
  return p.id !== void 0 && (f.id = p.id), p.bbox && (f.bbox = p.bbox), f.properties = h || {}, f.geometry = u, f;
476
474
  }
477
- const d = l(s(e), s(t), n);
475
+ const d = i(s(e), s(t), o);
478
476
  return d < 0 ? 360 + d : d;
479
477
  }, triangleModel = multiplyPixelRatio([
480
478
  [0, -8],
@@ -551,86 +549,93 @@ const multiplyPixelRatio = (e) => {
551
549
  isMapMoving.value = !1, e.render();
552
550
  });
553
551
  }, speedCondition = [[1, 10], [10, 20], [20, 1 / 0]], drawShipModelByZoom = { 14: [200, 30], 15: [115, 15], 16: [55, 8], 17: [25, 5], 18: [1, 1] }, setShipStyle = (e, t = !1) => new Style({
554
- renderer: (n, o) => {
555
- n = n;
556
- const r = o.context, i = o.feature.get("data");
557
- if (!i) return;
558
- o.feature.get("index") === 0 && (shipLabels.value = []);
552
+ renderer: (o, n) => {
553
+ var c, s;
554
+ o = o;
555
+ const l = n.context, r = n.feature.get("data");
556
+ if (!r) return;
557
+ const i = n.feature.get("index");
558
+ (i === 0 || i === void 0) && (shipLabels.value = []);
559
559
  try {
560
- const c = drawShipBody(r, i, n, t);
561
- c && (drawHeading(r, i, c, t), i.selected = e, !isMapMoving.value && e && setTimeout(() => {
562
- drawSelectBounds(r, c);
563
- }, 1)), drawShipLabel(r, i, n);
560
+ const m = drawShipBody(l, r, o, t);
561
+ m && (drawHeading(l, r, m, t), r.selected = e, !isMapMoving.value && e && (drawSelectBounds(l, m), (s = (c = trackLineVectorSource.value) == null ? void 0 : c.getFeatures()) != null && s.some((u) => {
562
+ const h = u.get("data");
563
+ return (h == null ? void 0 : h.id) === r.id;
564
+ }) || setTimeout(() => {
565
+ drawSelectBounds(l, m);
566
+ }, 1))), drawShipLabel(l, r, o), e && setTimeout(() => {
567
+ drawShipLabel(l, r, o);
568
+ }, 1);
564
569
  } catch {
565
570
  return !1;
566
571
  }
567
572
  }
568
- }), drawShipBody = (e, t, n, o) => {
573
+ }), drawShipBody = (e, t, o, n) => {
569
574
  if (!mapInstance$7.value) return;
570
- const r = Math.round(Number(mapInstance$7.value.getView().getZoom()));
571
- if (!r) return;
572
- let i = [];
573
- const [l, c] = drawShipModelByZoom[r] || [0, 0], [s, m] = n;
574
- if (r <= mapZoom.shipModelMax && r > mapZoom.shipModelMin && t.length >= l && t.breadth >= c)
575
- i = rotateShapeModel(drawCurrentShipShapeModel(t, r), t.angle).map((u) => {
575
+ const l = Math.round(Number(mapInstance$7.value.getView().getZoom()));
576
+ if (!l) return;
577
+ let r = [];
578
+ const [i, c] = drawShipModelByZoom[l] || [0, 0], [s, m] = o;
579
+ if (l <= mapZoom.shipModelMax && l > mapZoom.shipModelMin && t.length >= i && t.breadth >= c)
580
+ r = rotateShapeModel(drawCurrentShipShapeModel(t, l), t.angle).map((u) => {
576
581
  const [h, p] = u;
577
582
  return [s + h, m + p];
578
583
  });
579
584
  else {
580
585
  const d = rotateShapeModel(triangleModel, t.angle);
581
- n.length === 2 && (i = d.map((u) => {
586
+ o.length === 2 && (r = d.map((u) => {
582
587
  const [h, p] = u;
583
588
  return [s + h, m + p];
584
589
  }));
585
590
  }
586
- if (!(i.length > 2)) return !1;
591
+ if (!(r.length > 2)) return !1;
587
592
  if (t != null && t.length) {
588
- const d = i.length === 3 ? 30 : t.length * 0.4;
593
+ const d = r.length === 3 ? 30 : t.length * 0.4;
589
594
  e.beginPath(), e.arc(
590
- n[0],
591
- n[1],
595
+ o[0],
596
+ o[1],
592
597
  d,
593
598
  0,
594
599
  2 * Math.PI
595
600
  ), e.fillStyle = "rgba(255, 255, 255, 0.001)", e.fill();
596
601
  }
597
- e.save(), e.beginPath(), e.moveTo(i[0][0], i[0][1]);
598
- for (let d = 1; d < i.length; d++)
599
- e.lineTo(i[d][0], i[d][1]);
600
- return e.closePath(), e.strokeStyle = o ? "#ff0000" : "#000", e.lineWidth = o ? 2 : 1, e.stroke(), e.fillStyle = t.fill, e.fill(), e.restore(), i;
601
- }, drawHeading = (e, t, n, o) => {
602
- const [r, i] = n[0], l = getShipDirectPath(t);
603
- if (l) {
604
- const c = l.map(function(s) {
602
+ e.save(), e.beginPath(), e.moveTo(r[0][0], r[0][1]);
603
+ for (let d = 1; d < r.length; d++)
604
+ e.lineTo(r[d][0], r[d][1]);
605
+ return e.closePath(), e.strokeStyle = n ? "#ff0000" : "#000", e.lineWidth = n ? 2 : 1, e.stroke(), e.fillStyle = t.fill, e.fill(), e.restore(), r;
606
+ }, drawHeading = (e, t, o, n) => {
607
+ const [l, r] = o[0], i = getShipDirectPath(t);
608
+ if (i) {
609
+ const c = i.map(function(s) {
605
610
  const [m, d] = s;
606
- return [m + r, d + i];
611
+ return [m + l, d + r];
607
612
  });
608
613
  if (e.save(), e.beginPath(), t.angle > 0) {
609
- e.translate(r, i);
614
+ e.translate(l, r);
610
615
  const s = t.angle * Math.PI / 180;
611
- e.rotate(s), e.translate(-r, -i);
616
+ e.rotate(s), e.translate(-l, -r);
612
617
  }
613
- e.moveTo(r, i);
618
+ e.moveTo(l, r);
614
619
  for (let s = 1; s < c.length; s++) {
615
620
  const [m, d] = c[s];
616
621
  e.lineTo(m, d);
617
622
  }
618
- e.strokeStyle = o ? "#ff0000" : "#000", e.lineWidth = o ? 2 : 1, e.stroke(), e.restore();
623
+ e.strokeStyle = n ? "#ff0000" : "#000", e.lineWidth = n ? 2 : 1, e.stroke(), e.restore();
619
624
  }
620
625
  }, drawSelectBounds = (e, t) => {
621
- let [n, o, r, i] = getPixelFromCoordinate(t);
622
- const l = window.devicePixelRatio || 1, c = 4;
623
- n -= c, o -= c, r += c, i += c, e.save(), e.strokeStyle = "#ff0000", e.lineWidth = 4 * l;
624
- const s = 8 * l;
625
- e.beginPath(), e.moveTo(n + s, i), e.lineTo(n, i), e.lineTo(n, i - s), e.moveTo(n, o + s), e.lineTo(n, o), e.lineTo(n + s, o), e.moveTo(r - s, o), e.lineTo(r, o), e.lineTo(r, o + s), e.moveTo(r, i - s), e.lineTo(r, i), e.lineTo(r - s, i), e.stroke(), e.restore();
626
- }, drawShipLabel = (e, t, n) => {
627
- if (!t.selected && shipLabels.value.find((u) => u.name === t.name)) return;
628
- const [o, r] = n, i = o, l = r, c = t.name;
626
+ let [o, n, l, r] = getPixelFromCoordinate(t);
627
+ const i = window.devicePixelRatio || 1, c = 4;
628
+ o -= c, n -= c, l += c, r += c, e.save(), e.strokeStyle = "#ff0000", e.lineWidth = 4 * i;
629
+ const s = 8 * i;
630
+ e.beginPath(), e.moveTo(o + s, r), e.lineTo(o, r), e.lineTo(o, r - s), e.moveTo(o, n + s), e.lineTo(o, n), e.lineTo(o + s, n), e.moveTo(l - s, n), e.lineTo(l, n), e.lineTo(l, n + s), e.moveTo(l, r - s), e.lineTo(l, r), e.lineTo(l - s, r), e.stroke(), e.restore();
631
+ }, drawShipLabel = (e, t, o) => {
632
+ if (!t.selected && shipLabels.value.find((u) => u.id === t.id)) return;
633
+ const [n, l] = o, r = n, i = l, c = t.name;
629
634
  let s;
630
635
  t.leftIconColor && (s = { color: t.leftIconColor, icon: "&#xe599;" });
631
636
  const m = getShipCustomIcon(t), d = {
632
637
  id: t.id,
633
- center: [i, l],
638
+ center: [r, i],
634
639
  text: c,
635
640
  fill: t.fill,
636
641
  color: "#fff",
@@ -642,55 +647,55 @@ const multiplyPixelRatio = (e) => {
642
647
  blinkColors: t.blinkColors,
643
648
  type: "ShipName"
644
649
  };
645
- drawLabel(e, d, shipLabels.value, mapInstance$7.value);
650
+ mapInstance$7.value && drawLabel(e, d, shipLabels.value, mapInstance$7.value);
646
651
  }, drawCurrentShipShapeModel = (e, t) => {
647
- let n = 0;
648
- t <= 14 ? n = 0.058 : t === 15 ? n = 0.12 : t === 16 ? n = 0.22 : t === 17 ? n = 0.435 : t === 18 && (n = 0.857);
649
- const o = e.length / 4 * n, r = e.breadth * n;
650
- let i = cloneDeep(shipShapeModel);
651
- return i = i.map(([l, c]) => [l * r, c * o]), i;
652
+ let o = 0;
653
+ t <= 14 ? o = 0.058 : t === 15 ? o = 0.12 : t === 16 ? o = 0.22 : t === 17 ? o = 0.435 : t === 18 && (o = 0.857);
654
+ const n = e.length / 4 * o, l = e.breadth * o;
655
+ let r = cloneDeep(shipShapeModel);
656
+ return r = r.map(([i, c]) => [i * l, c * n]), r;
652
657
  }, getShipDirectPath = (e) => {
653
- const { speed: t, hdg: n, cog: o } = e;
654
- let r = "", i = null;
655
- if (t && t > 1 && (n !== null && n != 511 && o !== null ? o - n >= 3 ? r = "left" : o - n <= -3 ? r = "right" : r = "front" : r = "front", r && t))
656
- for (let l = 0; l < speedCondition.length; l++) {
657
- const c = speedCondition[l];
658
+ const { speed: t, hdg: o, cog: n } = e;
659
+ let l = "", r = null;
660
+ if (t && t > 1 && (o !== null && o != 511 && n !== null ? n - o >= 3 ? l = "left" : n - o <= -3 ? l = "right" : l = "front" : l = "front", l && t))
661
+ for (let i = 0; i < speedCondition.length; i++) {
662
+ const c = speedCondition[i];
658
663
  if (t >= c[0] && t < c[1]) {
659
- i = shipDirectPath[r][l];
664
+ r = shipDirectPath[l][i];
660
665
  break;
661
666
  }
662
667
  }
663
- return i;
668
+ return r;
664
669
  }, getShipCustomIcon = (e) => {
665
670
  const t = [];
666
671
  return e.existDevice && t.push("&#xe687;"), e.existMobile && t.push("&#xe688;"), e.existWaterGauge && t.push("&#xe686;"), t || [];
667
672
  }, mapInstance$6 = ref(), renderShipSetInstance = (e) => mapInstance$6.value = e;
668
673
  let shipsMarkerList = [], shipsVectorSource, largeAmountShipsSource;
669
674
  const selectedShipData = ref(null), selectedShips = ref([]);
670
- let selectShipsVectorSource;
675
+ let selectShipsVectorSource, hoveredFeature = null, hoveredFeatures = [];
671
676
  const renderShips = (e) => {
672
- var r, i, l, c;
677
+ var l, r, i, c;
673
678
  if (!mapInstance$6.value || showTrackLayer.value) return;
674
- const t = e.reduce((s, m) => (s.some((d) => d.id === m.id) || s.push(m), s), []), n = Math.round(Number(mapInstance$6.value.getView().getZoom()));
679
+ const t = e.reduce((s, m) => (s.some((d) => d.id === m.id) || s.push(m), s), []), o = Math.round(Number(mapInstance$6.value.getView().getZoom()));
675
680
  if (selectedShipData.value && nextTick(() => {
676
681
  selectSingleShipMarker(selectedShipData.value);
677
682
  }).then((s) => {
678
- }), !n || n < mapZoom.shipGreenDotMax) return;
679
- const o = [...t, ...selectedShips.value].reduce((s, m) => (s.some((d) => d.id === m.id) || s.push(m), s), []);
683
+ }), !o || o < mapZoom.shipGreenDotMax) return;
684
+ const n = [...t, ...selectedShips.value].reduce((s, m) => (s.some((d) => d.id === m.id) || s.push(m), s), []);
680
685
  if (allShips.value.forEach((s) => {
681
686
  var m;
682
- !o.some((d) => d.id === s.id) && ((m = s.blinkColors) != null && m.length) && checkBlinkLabelExist(mapInstance$6.value, shipLabels.value, s.id);
683
- }), allShips.value = o, !hiddenOrther.value)
684
- return n >= mapZoom.shipGreenDotMax && n < mapZoom.shipModelMin ? ((r = shipsLayer.value) == null || r.setVisible(!1), (i = largeAmountShipsLayer.value) == null || i.setVisible(!0), renderLargeAmountShips(allShips.value)) : ((l = largeAmountShipsLayer.value) == null || l.setVisible(!1), (c = shipsLayer.value) == null || c.setVisible(!0), renderShipsMarker(allShips.value));
687
+ !n.some((d) => d.id === s.id) && ((m = s.blinkColors) != null && m.length) && checkBlinkLabelExist(mapInstance$6.value, shipLabels.value, s.id);
688
+ }), allShips.value = n, !hiddenOrther.value)
689
+ return o >= mapZoom.shipGreenDotMax && o < mapZoom.shipModelMin ? ((l = shipsLayer.value) == null || l.setVisible(!1), (r = largeAmountShipsLayer.value) == null || r.setVisible(!0), renderLargeAmountShips(allShips.value)) : ((i = largeAmountShipsLayer.value) == null || i.setVisible(!1), (c = shipsLayer.value) == null || c.setVisible(!0), renderShipsMarker(allShips.value));
685
690
  }, renderLargeAmountShips = (e) => {
686
691
  if (!mapInstance$6.value) return;
687
- const t = e.map((n) => ({
692
+ const t = e.map((o) => ({
688
693
  type: "Feature",
689
694
  geometry: {
690
695
  type: "Point",
691
- coordinates: [n.lon, n.lat]
696
+ coordinates: [o.lon, o.lat]
692
697
  },
693
- properties: n
698
+ properties: o
694
699
  }));
695
700
  return largeAmountShipsSource == null || largeAmountShipsSource.clear(), largeAmountShipsSource = new VectorSource({
696
701
  features: new GeoJSON().readFeatures({
@@ -724,70 +729,86 @@ const renderShips = (e) => {
724
729
  // 将值旋转 180 度
725
730
  ],
726
731
  "shape-scale": [0.8, 1.2],
727
- "shape-stroke-color": "#000000",
728
- // 边框颜色为黑色
732
+ // 边框颜色为条件判断,悬浮时显示红色,否则黑色
733
+ "shape-stroke-color": [
734
+ "case",
735
+ ["==", ["get", "hover"], 0],
736
+ "#000000",
737
+ ["==", ["get", "hover"], 1],
738
+ "#FF0000",
739
+ "#000000"
740
+ // 默认颜色(黑色)
741
+ ],
729
742
  "shape-stroke-width": 0.5
730
- // 边框宽度为0.5px
731
743
  }
732
744
  }), mapInstance$6.value.addLayer(largeAmountShipsLayer.value), largeAmountShipsLayer.value;
733
745
  }, renderShipsMarker = (e) => {
734
- var n;
746
+ var o;
735
747
  if (!mapInstance$6.value) return;
736
748
  deleteAllShipMarkers();
737
749
  let t = convertShipMapData(e);
738
750
  if (t = customFilterShips(t), !!(t != null && t.length))
739
- return t.forEach((o, r) => {
740
- const i = [o.lon, o.lat], l = new Feature({
741
- geometry: new Point(fromLonLat(i))
751
+ return t.forEach((n, l) => {
752
+ const r = [n.lon, n.lat], i = new Feature({
753
+ geometry: new Point(fromLonLat(r))
742
754
  }), c = 1;
743
- l.set("clickGeometry", new Circle(fromLonLat(i), c)), l.set("data", o), l.set("index", r), l.setStyle(
755
+ i.set("clickGeometry", new Circle(fromLonLat(r), c)), i.set("data", n), i.set("index", l), i.setStyle(
744
756
  setShipStyle(!1)
745
757
  ), shipsMarkerList.push({
746
- ship: o,
747
- lonlat: i,
748
- feature: l
758
+ ship: n,
759
+ lonlat: r,
760
+ feature: i
749
761
  });
750
762
  }), shipsVectorSource = new VectorSource({
751
- features: shipsMarkerList.map((o) => o.feature)
763
+ features: shipsMarkerList.map((n) => n.feature)
752
764
  }), shipsLayer.value = new VectorLayer({
753
765
  source: shipsVectorSource,
754
766
  zIndex: 100
755
- }), (n = mapInstance$6.value) == null || n.addLayer(shipsLayer.value), shipsLayer.value;
767
+ }), (o = mapInstance$6.value) == null || o.addLayer(shipsLayer.value), shipsLayer.value;
756
768
  }, onShipsMarkerHover = () => {
757
769
  var o;
758
- let e = null, t = 0;
759
- const n = 100;
760
- (o = mapInstance$6.value) == null || o.on("pointermove", function(r) {
761
- var s, m, d, u;
762
- const i = Date.now();
763
- if (i - t < n)
770
+ let e = 0;
771
+ const t = 300;
772
+ (o = mapInstance$6.value) == null || o.on("pointermove", function(n) {
773
+ var c, s, m;
774
+ if (showDrawLayer.value) return;
775
+ const l = Date.now();
776
+ if (l - e < t)
764
777
  return;
765
- t = i;
766
- const l = (s = mapInstance$6.value) == null ? void 0 : s.forEachFeatureAtPixel(r.pixel, (h) => h), c = (m = mapInstance$6.value) == null ? void 0 : m.getTargetElement();
767
- if (c && (c.style.cursor = l ? "pointer" : ""), e !== l) {
768
- if (e) {
769
- const h = e.get("data");
770
- if (!(h != null && h.mmsi)) return;
771
- e.setStyle(
772
- setShipStyle(((d = selectedShipData.value) == null ? void 0 : d.id) === h.id, !1)
773
- );
778
+ e = l;
779
+ const r = (c = mapInstance$6.value) == null ? void 0 : c.forEachFeatureAtPixel(n.pixel, (d) => d), i = (s = mapInstance$6.value) == null ? void 0 : s.getTargetElement();
780
+ if (i && (i.style.cursor = r ? "pointer" : ""), hoveredFeature !== r) {
781
+ if (hoveredFeature) {
782
+ hoveredFeature.set("hover", 0);
783
+ const d = hoveredFeature.get("data");
784
+ d != null && d.mmsi && hoveredFeature.setStyle(
785
+ setShipStyle(!1, !1)
786
+ ), hoveredFeature = null;
774
787
  }
775
- if (l) {
776
- const h = l.get("data");
777
- if (!(h != null && h.mmsi)) return;
778
- e = l, l.setStyle(
779
- setShipStyle(((u = selectedShipData.value) == null ? void 0 : u.id) === h.id, !0)
788
+ if (r) {
789
+ hoveredFeature = r, r.set("hover", 1);
790
+ const d = r.get("data");
791
+ if (!(d != null && d.mmsi)) return;
792
+ hoveredFeatures.push(r), r.setStyle(
793
+ setShipStyle(((m = selectedShipData.value) == null ? void 0 : m.id) === d.id, !0)
780
794
  );
781
795
  } else
782
- e = null;
796
+ hoveredFeatures.forEach((d) => {
797
+ var h;
798
+ d.set("hover", 0);
799
+ const u = d.get("data");
800
+ u != null && u.mmsi && d.setStyle(
801
+ setShipStyle(((h = selectedShipData.value) == null ? void 0 : h.id) === u.id, !1)
802
+ );
803
+ }), hoveredFeatures = [];
783
804
  }
784
805
  });
785
806
  }, customFilterShips = (e) => {
786
807
  let t = cloneDeep(e);
787
- return t = t.filter((n) => {
788
- var r;
789
- const o = getFilterItem(n).every(({ btnShow: i, value: l }) => i ? !!l : !0);
790
- return (switchBtnShow.value.camera || switchBtnShow.value.mobile || switchBtnShow.value.waterGauge) && ((r = selectedShipData.value) == null ? void 0 : r.id) === n.id && clearSelectFeature(), o;
808
+ return t = t.filter((o) => {
809
+ var l;
810
+ const n = getFilterItem(o).every(({ btnShow: r, value: i }) => r ? !!i : !0);
811
+ return (switchBtnShow.value.camera || switchBtnShow.value.mobile || switchBtnShow.value.waterGauge) && ((l = selectedShipData.value) == null ? void 0 : l.id) === o.id && clearSelectFeature(), n;
791
812
  }), t;
792
813
  }, getFilterItem = (e) => [
793
814
  { btnShow: switchBtnShow.value.camera, value: e == null ? void 0 : e.existDevice },
@@ -798,40 +819,56 @@ const renderShips = (e) => {
798
819
  e.feature && (shipsVectorSource == null || shipsVectorSource.removeFeature(e.feature));
799
820
  }), clearAllInterval(), shipsMarkerList = [];
800
821
  }, selectSingleShipMarker = (e) => {
801
- var i;
822
+ var r;
802
823
  if (!mapInstance$6.value) return;
803
824
  const t = cloneDeep(selectSingleShipData.value);
804
825
  selectSingleShipData.value = convertShipMapData(e);
805
- const n = [selectSingleShipData.value.lon, selectSingleShipData.value.lat], o = new Feature({
806
- geometry: new Point(fromLonLat(n))
826
+ const o = [selectSingleShipData.value.lon, selectSingleShipData.value.lat], n = new Feature({
827
+ geometry: new Point(fromLonLat(o))
807
828
  });
808
- o.set("data", selectSingleShipData.value), o.setStyle(
829
+ if (n.set("data", selectSingleShipData.value), shipsLayer.value) {
830
+ const i = shipsLayer.value.getSource();
831
+ i && i.forEachFeature((c) => {
832
+ var s, m;
833
+ ((s = c.get("data")) == null ? void 0 : s.id) === ((m = selectSingleShipData.value) == null ? void 0 : m.id) && c.set("data", selectSingleShipData.value);
834
+ });
835
+ }
836
+ n.setStyle(
809
837
  setShipStyle(!0)
810
838
  ), shipsMarkerList.push({
811
839
  ship: selectSingleShipData.value,
812
- lonlat: n,
813
- feature: o
840
+ lonlat: o,
841
+ feature: n
814
842
  }), selectShipsVectorSource == null || selectShipsVectorSource.clear(), selectShipsVectorSource = new VectorSource({
815
- features: [o]
843
+ features: [n]
816
844
  }), selectShipsLayer.value = new VectorLayer({
817
- source: selectShipsVectorSource
845
+ source: selectShipsVectorSource,
846
+ updateWhileInteracting: !0
818
847
  }), shipsVectorSource && setVisibleFeatureById(shipsVectorSource, selectSingleShipData.value.id, !0);
819
- const r = (i = shipsLayer.value) == null ? void 0 : i.getSource();
820
- return r && (t && setVisibleFeatureById(r, t.id, !0), setVisibleFeatureById(r, selectSingleShipData.value.id, !1)), mapInstance$6.value.addLayer(selectShipsLayer.value), selectShipsLayer.value.setVisible(!0), selectShipsLayer.value;
821
- }, setVisibleFeatureById = (e, t, n) => {
822
- e && e.forEachFeature((o) => {
823
- const r = o.get("data");
824
- r && r.id === t && o.setStyle(n ? setShipStyle(!1, r.id) : setBlankStyle());
848
+ const l = (r = shipsLayer.value) == null ? void 0 : r.getSource();
849
+ return l && (t && setVisibleFeatureById(l, t.id, !0), setVisibleFeatureById(l, selectSingleShipData.value.id, !1)), mapInstance$6.value.addLayer(selectShipsLayer.value), selectShipsLayer.value.setVisible(!0), hideAllHoveredShips(), selectShipsLayer.value;
850
+ }, hideAllHoveredShips = () => {
851
+ hoveredFeatures == null || hoveredFeatures.forEach((e) => {
852
+ var o;
853
+ const t = e == null ? void 0 : e.get("data");
854
+ t && e && e.setStyle(
855
+ setShipStyle(((o = selectedShipData.value) == null ? void 0 : o.id) === t.id, !1)
856
+ );
825
857
  });
826
- }, findShip = (e, t, n = !0) => {
827
- var r, i, l, c, s;
858
+ }, setVisibleFeatureById = (e, t, o) => {
859
+ e && e.forEachFeature((n) => {
860
+ const l = n.get("data");
861
+ l && l.id === t && n.setStyle(o ? setShipStyle(!1, !1) : setBlankStyle());
862
+ });
863
+ }, findShip = (e, t, o = !0) => {
864
+ var l, r, i, c, s;
828
865
  if (!e || !mapInstance$6.value) return;
829
- const o = (l = (i = (r = shipsLayer.value) == null ? void 0 : r.getSource()) == null ? void 0 : i.getFeatures()) == null ? void 0 : l.find((m) => {
866
+ const n = (i = (r = (l = shipsLayer.value) == null ? void 0 : l.getSource()) == null ? void 0 : r.getFeatures()) == null ? void 0 : i.find((m) => {
830
867
  var d;
831
868
  return ((d = m.get("data")) == null ? void 0 : d.id) === e;
832
869
  });
833
- if (o)
834
- selectedShipData.value = o.get("data");
870
+ if (n)
871
+ selectedShipData.value = n.get("data");
835
872
  else if (t && t.lon && t.lat)
836
873
  selectedShipData.value = t;
837
874
  else {
@@ -841,7 +878,7 @@ const renderShips = (e) => {
841
878
  if (selectedShips.value.some((m) => {
842
879
  var d;
843
880
  return m.id === ((d = selectedShipData.value) == null ? void 0 : d.id);
844
- }) || selectedShips.value.push(selectedShipData.value), n && ((c = selectedShipData.value) != null && c.lon) && ((s = selectedShipData.value) != null && s.lat)) {
881
+ }) || selectedShips.value.push(selectedShipData.value), o && ((c = selectedShipData.value) != null && c.lon) && ((s = selectedShipData.value) != null && s.lat)) {
845
882
  const m = mapInstance$6.value.getView(), d = new Point([selectedShipData.value.lon, selectedShipData.value.lat]);
846
883
  m.setCenter(transform(d.getCoordinates(), projection.data, projection.mercator));
847
884
  const u = m.getZoom(), h = u < mapZoom.findShipMin ? mapZoom.findShip : u;
@@ -849,7 +886,7 @@ const renderShips = (e) => {
849
886
  }
850
887
  return setTimeout(() => {
851
888
  t && selectSingleShipMarker(t);
852
- }, 50), o;
889
+ }, 50), n;
853
890
  }, clearSelectFeature = () => {
854
891
  var e;
855
892
  if (selectedShipData.value && shipsVectorSource && selectSingleShipData.value) {
@@ -875,146 +912,147 @@ const renderShips = (e) => {
875
912
  }, rerenderShip = () => {
876
913
  renderShips(allShips.value);
877
914
  }, clearShipData = (e = !0) => {
878
- shipsVectorSource == null || shipsVectorSource.clear(), shipsMarkerList = [], e && (selectShipsVectorSource == null || selectShipsVectorSource.clear());
879
- }, labelAlpha = 0.8, pixelRatio = window.devicePixelRatio || 1, labelFont = `500 ${12 * pixelRatio}px Arial`, labelOutSize = 2 * pixelRatio, labelHeight = 10 * pixelRatio, fillRectRadius = (e, t, n, o, r, i, l = 4) => {
880
- e.beginPath(), e.moveTo(t + l, n), e.arcTo(t + o, n, t + o, n + l, l), e.arcTo(t + o, n + r, t + o - l, n + r, l), e.arcTo(t, n + r, t, n + r - l, l), e.arcTo(t, n, t + l, n, l), e.closePath(), e.fillStyle = i, e.fill();
915
+ shipsVectorSource == null || shipsVectorSource.clear(), shipsMarkerList = [], selectedShips.value = [], shipLabels.value = [], e && (selectShipsVectorSource == null || selectShipsVectorSource.clear());
916
+ }, labelAlpha = 0.8, pixelRatio = window.devicePixelRatio || 1, labelFont = `500 ${12 * pixelRatio}px Arial`, labelOutSize = 2 * pixelRatio, labelHeight = 10 * pixelRatio, fillRectRadius = (e, t, o, n, l, r, i = 4) => {
917
+ e.beginPath(), e.moveTo(t + i, o), e.arcTo(t + n, o, t + n, o + i, i), e.arcTo(t + n, o + l, t + n - i, o + l, i), e.arcTo(t, o + l, t, o + l - i, i), e.arcTo(t, o, t + i, o, i), e.closePath(), e.fillStyle = r, e.fill();
881
918
  }, getPixelFromCoordinate = (e) => {
882
919
  if (!e || e.length === 0)
883
920
  throw new Error("Points array is empty or invalid.");
884
- let t = 1 / 0, n = 1 / 0, o = -1 / 0, r = -1 / 0;
885
- for (const [i, l] of e)
886
- i < t && (t = i), l < n && (n = l), i > o && (o = i), l > r && (r = l);
887
- return [t, n, o, r];
921
+ let t = 1 / 0, o = 1 / 0, n = -1 / 0, l = -1 / 0;
922
+ for (const [r, i] of e)
923
+ r < t && (t = r), i < o && (o = i), r > n && (n = r), i > l && (l = i);
924
+ return [t, o, n, l];
888
925
  }, calculatePolygonCentroid = (e) => {
889
926
  if (!Array.isArray(e) || e.length < 3)
890
927
  throw new Error("A polygon must have at least 3 coordinates.");
891
- let t = 0, n = 0, o = 0;
892
- const r = e.length;
893
- for (let c = 0; c < r - 1; c++) {
928
+ let t = 0, o = 0, n = 0;
929
+ const l = e.length;
930
+ for (let c = 0; c < l - 1; c++) {
894
931
  const [s, m] = e[c], [d, u] = e[c + 1], h = s * u - d * m;
895
- o += h, t += (s + d) * h, n += (m + u) * h;
932
+ n += h, t += (s + d) * h, o += (m + u) * h;
896
933
  }
897
- if (o *= 0.5, o === 0)
934
+ if (n *= 0.5, n === 0)
898
935
  throw new Error("多边形面积为零");
899
- const i = t / (6 * o), l = n / (6 * o);
900
- return [i, l];
936
+ const r = t / (6 * n), i = o / (6 * n);
937
+ return [r, i];
901
938
  }, rotateShapeModel = (e, t) => {
902
- const [n, o] = calculatePolygonCentroid(e), r = t * Math.PI / 180, i = Math.cos(r), l = Math.sin(r);
939
+ const [o, n] = calculatePolygonCentroid(e), l = t * Math.PI / 180, r = Math.cos(l), i = Math.sin(l);
903
940
  return e.map(([c, s]) => {
904
- const m = c - n, d = s - o, u = m * i - d * l + n, h = m * l + d * i + o;
941
+ const m = c - o, d = s - n, u = m * r - d * i + o, h = m * i + d * r + n;
905
942
  return [u, h];
906
943
  });
907
944
  }, getTopLeftPoint = (e) => [e[0], e[3]], getBottomLeftPoint = (e) => [e[2], e[3]], getBottomRightPoint = (e) => [e[2], e[1]], getTopRighttPoint = (e) => [e[0], e[1]];
908
- function calculateBounds(e, t, n, o, r) {
909
- let i, l, c, s;
945
+ function calculateBounds(e, t, o, n, l) {
946
+ let r, i, c, s;
910
947
  const m = e[0], d = e[1];
911
948
  switch (t) {
912
949
  case 0:
913
- i = m + r, l = i + n, s = d - r, c = s - o;
950
+ r = m + l, i = r + o, s = d - l, c = s - n;
914
951
  break;
915
952
  case 1:
916
- i = m + r, l = i + n, s = d + o / 2, c = s - o;
953
+ r = m + l, i = r + o, s = d + n / 2, c = s - n;
917
954
  break;
918
955
  case 2:
919
- i = m + r, l = i + n, s = d + r + o, c = s - o;
956
+ r = m + l, i = r + o, s = d + l + n, c = s - n;
920
957
  break;
921
958
  case 3:
922
- i = m - n / 2, l = i + n, s = d + r + o, c = s - o;
959
+ r = m - o / 2, i = r + o, s = d + l + n, c = s - n;
923
960
  break;
924
961
  case 4:
925
- l = m, i = l - n, s = d + r + o, c = s - o;
962
+ i = m, r = i - o, s = d + l + n, c = s - n;
926
963
  break;
927
964
  case 5:
928
- l = m - r, i = l - n, s = d + o / 2, c = s - o;
965
+ i = m - l, r = i - o, s = d + n / 2, c = s - n;
929
966
  break;
930
967
  case 6:
931
- l = m, i = l - n, s = d - r, c = s - o;
968
+ i = m, r = i - o, s = d - l, c = s - n;
932
969
  break;
933
970
  case 7:
934
- i = m - n / 2, l = i + n, s = d - r, c = s - o;
971
+ r = m - o / 2, i = r + o, s = d - l, c = s - n;
935
972
  }
936
- if (!(!i || !c || !l || !s))
937
- return [Math.min(i, l), Math.min(c, s), Math.max(i, l), Math.max(c, s) + 1];
973
+ if (!(!r || !c || !i || !s))
974
+ return [Math.min(r, i), Math.min(c, s), Math.max(r, i), Math.max(c, s) + 1];
938
975
  }
939
- function calculateAnchorPoint(e, t, n = 70, o = 20, r = 20) {
940
- const i = [0, 0];
976
+ function calculateAnchorPoint(e, t, o = 70, n = 20, l = 20) {
977
+ const r = [0, 0];
941
978
  switch (t) {
942
979
  case 0:
943
- i[0] = e[0] + r, i[1] = e[1] - r - o / 2;
980
+ r[0] = e[0] + l, r[1] = e[1] - l - n / 2;
944
981
  break;
945
982
  case 1:
946
- i[0] = e[0] + r, i[1] = e[1];
983
+ r[0] = e[0] + l, r[1] = e[1];
947
984
  break;
948
985
  case 2:
949
- i[0] = e[0] + r, i[1] = e[1] + r + o / 2;
986
+ r[0] = e[0] + l, r[1] = e[1] + l + n / 2;
950
987
  break;
951
988
  case 3:
952
- i[0] = e[0], i[1] = e[1] + r + o / 4;
989
+ r[0] = e[0], r[1] = e[1] + l + n / 4;
953
990
  break;
954
991
  case 4:
955
- i[0] = Math.max(e[0] - r, e[0] - n / 2), i[1] = e[1] + r + o / 4;
992
+ r[0] = Math.max(e[0] - l, e[0] - o / 2), r[1] = e[1] + l + n / 4;
956
993
  break;
957
994
  case 5:
958
- i[0] = e[0] - r, i[1] = e[1];
995
+ r[0] = e[0] - l, r[1] = e[1];
959
996
  break;
960
997
  case 6:
961
- i[0] = Math.max(e[0] - r, e[0] - n / 2), i[1] = e[1] - r - o / 4;
998
+ r[0] = Math.max(e[0] - l, e[0] - o / 2), r[1] = e[1] - l - n / 4;
962
999
  break;
963
1000
  case 7:
964
- i[0] = e[0], i[1] = e[1] - r - o / 4;
1001
+ r[0] = e[0], r[1] = e[1] - l - n / 4;
965
1002
  }
966
- return i;
1003
+ return r;
967
1004
  }
968
- function drawLabelBody(e, t, n) {
1005
+ function drawLabelBody(e, t, o) {
969
1006
  if (!e) return;
970
1007
  const {
971
- font: o,
972
- labelOutSize: r = 2,
973
- labelHeight: i,
974
- center: l,
1008
+ font: n,
1009
+ labelOutSize: l = 2,
1010
+ labelHeight: r,
1011
+ center: i,
975
1012
  text: c,
976
1013
  id: s,
977
1014
  leftIcon: m,
978
1015
  shipColor: d,
979
1016
  lineLength: u = 20,
980
- selected: h
981
- } = n;
982
- e.save(), o && (e.font = o);
983
- let p = e.measureText(c).width + 4 * r;
984
- (m || d) && (p += i + 6 * r), e.restore();
985
- let f, v = 20, g = -1, L = i + 3 * r;
1017
+ selected: h,
1018
+ blinkColors: p
1019
+ } = o;
1020
+ e.save(), n && (e.font = n);
1021
+ let f = e.measureText(c).width + 4 * l;
1022
+ (m || d) && (f += r + 6 * l), e.restore();
1023
+ let v, g = 20, k = -1, M = r + 3 * l;
986
1024
  if (u)
987
- for (let S = 0; S < 8; S++) {
988
- f = calculateBounds(l, S, p, L, u);
989
- let I = !1;
990
- for (let F = 0; F < t.length; ++F) {
991
- let x = t[F].bounds, P = [
992
- x[0] - v,
993
- x[1] - v,
994
- x[2] + v,
995
- x[3] + v
1025
+ for (let b = 0; b < 8; b++) {
1026
+ v = calculateBounds(i, b, f, M, u);
1027
+ let E = !1;
1028
+ for (let V = 0; V < t.length; ++V) {
1029
+ let F = t[V].bounds, $ = [
1030
+ F[0] - g,
1031
+ F[1] - g,
1032
+ F[2] + g,
1033
+ F[3] + g
996
1034
  ];
997
- if (f && isOverlapping(f, P)) {
998
- I = !0;
1035
+ if (v && isOverlapping(v, $)) {
1036
+ E = !0;
999
1037
  break;
1000
1038
  }
1001
1039
  }
1002
- if (!I) {
1003
- g = S;
1040
+ if (!E) {
1041
+ k = b;
1004
1042
  break;
1005
1043
  }
1006
1044
  }
1007
1045
  else
1008
- g = 0, f = calculateBounds(l, g, p, L, u);
1009
- if (h && g === -1 && (g = 0), f && g > -1) {
1010
- let S = getBottomLeftPoint(f), I = getTopRighttPoint(f);
1046
+ k = 0, v = calculateBounds(i, k, f, M, u);
1047
+ if (((p == null ? void 0 : p.length) > 1 || h) && (k = 0, v = calculateBounds(i, k, f, M, u)), v && k > -1) {
1048
+ let b = getBottomLeftPoint(v), E = getTopRighttPoint(v);
1011
1049
  return {
1012
- center: l,
1013
- x: calculateAnchorPoint(l, g, p, L, u),
1014
- l: I,
1015
- r: S,
1016
- bounds: f,
1017
- position: g,
1050
+ center: i,
1051
+ x: calculateAnchorPoint(i, k, f, M, u),
1052
+ l: E,
1053
+ r: b,
1054
+ bounds: v,
1055
+ position: k,
1018
1056
  name: c,
1019
1057
  id: s
1020
1058
  };
@@ -1023,61 +1061,62 @@ function drawLabelBody(e, t, n) {
1023
1061
  }
1024
1062
  const drawText = (e, t) => {
1025
1063
  if (!e) return;
1026
- const { center: n, text: o, textColor: r, leftIcon: i, rightIcons: l, font: c } = t;
1064
+ const { center: o, text: n, textColor: l, leftIcon: r, rightIcons: i, font: c } = t;
1027
1065
  e.save(), e.setTransform(1, 0, 0, 1, 0, 0);
1028
- let [s, m] = n;
1029
- if (i) {
1066
+ let [s, m] = o;
1067
+ if (r) {
1030
1068
  e.font = `${18 * pixelRatio}px map-iconfont`;
1031
- let d = getIconFont(i.icon);
1032
- e.fillStyle = i.color, e.fillText(d, s + labelOutSize - 3 * pixelRatio, m + 2.6 * pixelRatio), s += 23 * pixelRatio;
1069
+ let d = getIconFont(r.icon);
1070
+ e.fillStyle = r.color, e.fillText(d, s + labelOutSize - 3 * pixelRatio, m + 2.6 * pixelRatio), s += 23 * pixelRatio;
1033
1071
  }
1034
- if (l != null && l.length) {
1072
+ if (i != null && i.length) {
1035
1073
  e.font = `${12 * pixelRatio}px map-iconfont`, e.fillStyle = "#3370ff";
1036
- const d = e.measureText(o).width + 6 * pixelRatio;
1037
- l.forEach((u, h) => {
1074
+ const d = e.measureText(n).width + 6 * pixelRatio;
1075
+ i.forEach((u, h) => {
1038
1076
  const p = getIconFont(u), f = 20 * pixelRatio * h;
1039
1077
  e.fillText(p, s + d + f, m);
1040
1078
  });
1041
1079
  }
1042
- e.font = c || labelFont, e.fillStyle = r, e.fillText(o, s + 2, m), e.restore();
1080
+ e.font = c || labelFont, e.fillStyle = l, e.fillText(n, s + 2, m), e.restore();
1043
1081
  }, drawPolygon = (e, t) => {
1044
1082
  let {
1045
- points: n,
1046
- strokeColor: o,
1047
- fillColor: r,
1048
- shouldClosePath: i,
1049
- translation: l,
1083
+ points: o,
1084
+ strokeColor: n,
1085
+ fillColor: l,
1086
+ shouldClosePath: r,
1087
+ translation: i,
1050
1088
  rotation: c,
1051
1089
  rotationCenter: s,
1052
1090
  scale: m,
1053
1091
  globalAlpha: d
1054
1092
  } = t;
1055
- if (d || (d = 1), n && e) {
1056
- e.save(), e.beginPath(), c && c !== 0 && s == null && e.rotate(c), l && e.translate(l[0], l[1]), c && (s != null && s.length) && e.rotate(c), m && e.scale(m, m), e.moveTo(n[0][0], n[0][1]);
1057
- for (let u = 1; u < n.length; u++)
1058
- e.lineTo(n[u][0], n[u][1]);
1059
- i && e.closePath(), o && (e.strokeStyle = o, e.stroke()), r && i && (d && (e.globalAlpha = d), e.fillStyle = r, e.fill()), e.restore();
1093
+ if (d || (d = 1), o && e) {
1094
+ e.save(), e.beginPath(), c && c !== 0 && s == null && e.rotate(c), i && e.translate(i[0], i[1]), c && (s != null && s.length) && e.rotate(c), m && e.scale(m, m), e.moveTo(o[0][0], o[0][1]);
1095
+ for (let u = 1; u < o.length; u++)
1096
+ e.lineTo(o[u][0], o[u][1]);
1097
+ r && e.closePath(), n && (e.strokeStyle = n, e.stroke()), l && r && (d && (e.globalAlpha = d), e.fillStyle = l, e.fill()), e.restore();
1060
1098
  }
1061
- }, intervalIds = {}, drawLabel = (e, t, n, o) => {
1062
- var p, f, v, g, L, S, I;
1063
- let { center: r, id: i, text: l, color: c, textColor: s, bgColor: m, leftIcon: d, rightIcons: u, type: h } = t;
1064
- if (r && l) {
1099
+ }, intervalIds = {}, drawLabel = (e, t, o, n) => {
1100
+ var f, v, g, k, M, b, E, V;
1101
+ let { center: l, id: r, text: i, color: c, textColor: s, bgColor: m, leftIcon: d, rightIcons: u, type: h, blinkColors: p } = t;
1102
+ if (l && i) {
1065
1103
  const F = {
1066
1104
  font: labelFont,
1067
1105
  labelOutSize,
1068
1106
  labelHeight,
1069
- center: r,
1070
- text: l,
1071
- id: i,
1107
+ center: l,
1108
+ text: i,
1109
+ id: r,
1072
1110
  leftIcon: d,
1111
+ blinkColors: p,
1073
1112
  selected: t.selected
1074
1113
  };
1075
- (p = t.blinkColors) != null && p.length && t.fill && (m = t.fill, s = getForegroundColor(t.fill));
1076
- const x = drawLabelBody(e, n, F);
1077
- if (x) {
1078
- const { x: P, bounds: $, l: y } = x, w = [getTopLeftPoint($), getBottomLeftPoint($), getBottomRightPoint($), getTopRighttPoint($)];
1079
- n.find((E) => E.name === l) || n.push(x), drawPolygon(e, {
1080
- points: [r, P],
1114
+ (f = t.blinkColors) != null && f.length && t.fill && (m = t.fill, s = getForegroundColor(t.fill));
1115
+ const $ = drawLabelBody(e, o, F);
1116
+ if ($) {
1117
+ const { x: y, bounds: L, l: w } = $, S = [getTopLeftPoint(L), getBottomLeftPoint(L), getBottomRightPoint(L), getTopRighttPoint(L)];
1118
+ o.find((R) => R.name === i) || o.push($), drawPolygon(e, {
1119
+ points: [l, w],
1081
1120
  strokeColor: c,
1082
1121
  fillColor: "#000",
1083
1122
  shouldClosePath: !0,
@@ -1087,140 +1126,146 @@ const drawText = (e, t) => {
1087
1126
  scale: void 0,
1088
1127
  globalAlpha: labelAlpha
1089
1128
  }), u != null && u.length && u.forEach(() => {
1090
- w[1][0] += pixelRatio * 18, w[2][0] += pixelRatio * 18;
1129
+ S[1][0] += pixelRatio * 18, S[2][0] += pixelRatio * 18;
1091
1130
  });
1092
- const M = {
1093
- points: w,
1131
+ const C = {
1132
+ points: S,
1094
1133
  strokeColor: c,
1095
1134
  fillColor: m,
1096
1135
  shouldClosePath: !0
1097
- }, [T, C] = y, V = {
1098
- center: [T, C + labelOutSize + labelHeight + 1],
1099
- text: l,
1136
+ }, [P, x] = w, N = {
1137
+ center: [P, x + labelOutSize + labelHeight + 1],
1138
+ text: i,
1100
1139
  textColor: s,
1101
1140
  leftIcon: d,
1102
1141
  rightIcons: u,
1103
1142
  blinkColors: t.blinkColors
1104
1143
  };
1105
- if (drawPolygon(e, M), drawText(e, V), t != null && t.blinkColors && t.blinkColors.length > 0) {
1106
- let E = Date.now(), N = 0;
1107
- const B = t.blinkColors;
1108
- !!!((g = (v = (f = selectShipsLayer.value) == null ? void 0 : f.getSource()) == null ? void 0 : v.getFeatures()) != null && g.find((R) => {
1109
- var A;
1110
- return ((A = R.get("data")) == null ? void 0 : A.id) === t.id;
1111
- }) || (I = (S = (L = shipsLayer.value) == null ? void 0 : L.getSource()) == null ? void 0 : S.getFeatures()) != null && I.find((R) => {
1112
- var A;
1113
- return ((A = R.get("data")) == null ? void 0 : A.id) === t.id;
1114
- })) || hiddenOrther.value ? (clearInterval(intervalIds[t.id]), deleteLabelFromArray(n, t.id)) : (intervalIds[t.id] && clearInterval(intervalIds[t.id]), intervalIds[t.id] = window.setInterval(() => {
1115
- const R = Date.now();
1116
- R - E >= 500 && (N = (N + 1) % B.length, E = R, M.fillColor = B[N], drawPolygon(e, M), V.textColor = getForegroundColor(M.fillColor), drawText(e, V)), checkBlinkLabelExist(o, n, t.id);
1144
+ if (drawPolygon(e, C), drawText(e, N), t != null && t.blinkColors && t.blinkColors.length > 0) {
1145
+ let R = Date.now(), B = 0;
1146
+ const D = t.blinkColors;
1147
+ !!!((k = (g = (v = selectShipsLayer.value) == null ? void 0 : v.getSource()) == null ? void 0 : g.getFeatures()) != null && k.find((A) => {
1148
+ var O;
1149
+ return ((O = A.get("data")) == null ? void 0 : O.id) === t.id;
1150
+ }) || (E = (b = (M = shipsLayer.value) == null ? void 0 : M.getSource()) == null ? void 0 : b.getFeatures()) != null && E.find((A) => {
1151
+ var O;
1152
+ return ((O = A.get("data")) == null ? void 0 : O.id) === t.id;
1153
+ })) || hiddenOrther.value && ((V = selectSingleShipData.value) == null ? void 0 : V.id) !== t.id ? deleteLabelFromArray(o, t.id) : (intervalIds[t.id] && clearInterval(intervalIds[t.id]), intervalIds[t.id] = window.setInterval(() => {
1154
+ const A = Date.now();
1155
+ A - R >= 500 && (B = (B + 1) % D.length, R = A, C.fillColor = D[B], drawPolygon(e, C), N.textColor = getForegroundColor(C.fillColor), drawText(e, N)), checkBlinkLabelExist(n, o, t.id);
1117
1156
  }, 500));
1118
1157
  } else
1119
- shipLabels.value.find((N) => N.name === l) && (clearInterval(intervalIds[t.id]), drawPolygon(e, M), drawText(e, V));
1158
+ shipLabels.value.find((B) => B.name === i) && (clearInterval(intervalIds[t.id]), drawPolygon(e, C), drawText(e, N));
1120
1159
  }
1121
1160
  }
1122
1161
  return null;
1123
- }, checkBlinkLabelExist = (e, t, n) => {
1124
- var l, c, s, m, d, u, h;
1125
- const o = shipsMarkerList == null ? void 0 : shipsMarkerList.some((p) => {
1162
+ }, checkBlinkLabelExist = (e, t, o) => {
1163
+ var i, c, s, m, d, u, h;
1164
+ const n = shipsMarkerList == null ? void 0 : shipsMarkerList.some((p) => {
1126
1165
  var f, v, g;
1127
- return ((f = p.ship) == null ? void 0 : f.id) === n && ((g = (v = p.ship) == null ? void 0 : v.blinkColors) == null ? void 0 : g.length) > 0;
1128
- }), r = [
1129
- ...((c = (l = shipsLayer.value) == null ? void 0 : l.getSource()) == null ? void 0 : c.getFeatures()) || [],
1166
+ return ((f = p.ship) == null ? void 0 : f.id) === o && ((g = (v = p.ship) == null ? void 0 : v.blinkColors) == null ? void 0 : g.length) > 0;
1167
+ }), l = [
1168
+ ...((c = (i = shipsLayer.value) == null ? void 0 : i.getSource()) == null ? void 0 : c.getFeatures()) || [],
1130
1169
  ...((m = (s = selectShipsLayer.value) == null ? void 0 : s.getSource()) == null ? void 0 : m.getFeatures()) || []
1131
1170
  ].some((p) => {
1132
1171
  const f = p.get("data");
1133
- if ((f == null ? void 0 : f.id) === n) {
1172
+ if ((f == null ? void 0 : f.id) === o) {
1134
1173
  const v = e == null ? void 0 : e.getView().calculateExtent();
1135
1174
  if (!v) return !1;
1136
1175
  const g = fromLonLat([f.lon, f.lat]);
1137
1176
  return g[0] >= v[0] && g[0] <= v[2] && g[1] >= v[1] && g[1] <= v[3];
1138
1177
  }
1139
1178
  return !1;
1140
- }), i = (u = (d = trackLineVectorSource.value) == null ? void 0 : d.getFeatures()) == null ? void 0 : u.some((p) => {
1179
+ }), r = (u = (d = trackLineVectorSource.value) == null ? void 0 : d.getFeatures()) == null ? void 0 : u.some((p) => {
1141
1180
  const f = p.get("data");
1142
- return (f == null ? void 0 : f.id) === n;
1181
+ return (f == null ? void 0 : f.id) === o;
1143
1182
  });
1144
- (!((h = shipsLayer.value) != null && h.getVisible()) || !i && (!r || !o)) && (clearInterval(intervalIds[n]), deleteLabelFromArray(e, t, n));
1183
+ (((h = shipsLayer.value) == null ? void 0 : h.getVisible()) === !1 && t.some((p) => {
1184
+ var f;
1185
+ return p.id !== ((f = selectSingleShipData.value) == null ? void 0 : f.id) && p.id === o;
1186
+ }) || (!r || !l) && (!l || !n)) && deleteLabelFromArray(e, t, o);
1145
1187
  }, clearAllInterval = () => {
1146
1188
  Object.keys(intervalIds).forEach((e) => {
1147
1189
  clearInterval(e);
1148
1190
  });
1149
- }, deleteLabelFromArray = (e, t, n) => {
1150
- var r, i, l, c, s, m, d, u;
1151
- const o = t.findIndex((h) => h.id === n);
1152
- if (o !== -1) {
1153
- t.splice(o, 1);
1154
- const h = (i = (r = shipsLayer.value) == null ? void 0 : r.getSource()) == null ? void 0 : i.getFeatures().find((f) => {
1191
+ }, deleteLabelFromArray = (e, t, o) => {
1192
+ var l, r, i, c, s, m, d, u;
1193
+ clearInterval(intervalIds[o]);
1194
+ const n = t.findIndex((h) => h.id === o);
1195
+ if (n !== -1) {
1196
+ t.splice(n, 1);
1197
+ const h = (r = (l = shipsLayer.value) == null ? void 0 : l.getSource()) == null ? void 0 : r.getFeatures().find((f) => {
1155
1198
  var v;
1156
- return ((v = f.get("data")) == null ? void 0 : v.id) === n;
1199
+ return ((v = f.get("data")) == null ? void 0 : v.id) === o;
1157
1200
  });
1158
- h && ((c = (l = shipsLayer.value) == null ? void 0 : l.getSource()) == null || c.removeFeature(h));
1201
+ h && ((c = (i = shipsLayer.value) == null ? void 0 : i.getSource()) == null || c.removeFeature(h));
1159
1202
  const p = (m = (s = selectShipsLayer.value) == null ? void 0 : s.getSource()) == null ? void 0 : m.getFeatures().find((f) => {
1160
1203
  var v;
1161
- return ((v = f.get("data")) == null ? void 0 : v.id) === n;
1204
+ return ((v = f.get("data")) == null ? void 0 : v.id) === o;
1162
1205
  });
1163
1206
  p && ((u = (d = selectShipsLayer.value) == null ? void 0 : d.getSource()) == null || u.removeFeature(p)), e && e.render();
1164
1207
  }
1208
+ }, deleteLabelFromArrayById = () => {
1209
+ mapInstance$9.value && selectSingleShipData.value && deleteLabelFromArray(mapInstance$9.value, shipLabels.value, selectSingleShipData.value.id);
1165
1210
  }, PI = Math.PI, a = 6378245, ee = 0.006693421622965943;
1166
1211
  function transformLat(e, t) {
1167
- let n = -100 + 2 * e + 3 * t + 0.2 * t * t + 0.1 * e * t + 0.2 * Math.sqrt(Math.abs(e));
1168
- return n += (20 * Math.sin(6 * e * PI) + 20 * Math.sin(2 * e * PI)) * 2 / 3, n += (20 * Math.sin(t * PI) + 40 * Math.sin(t / 3 * PI)) * 2 / 3, n += (160 * Math.sin(t / 12 * PI) + 320 * Math.sin(t * PI / 30)) * 2 / 3, n;
1212
+ let o = -100 + 2 * e + 3 * t + 0.2 * t * t + 0.1 * e * t + 0.2 * Math.sqrt(Math.abs(e));
1213
+ return o += (20 * Math.sin(6 * e * PI) + 20 * Math.sin(2 * e * PI)) * 2 / 3, o += (20 * Math.sin(t * PI) + 40 * Math.sin(t / 3 * PI)) * 2 / 3, o += (160 * Math.sin(t / 12 * PI) + 320 * Math.sin(t * PI / 30)) * 2 / 3, o;
1169
1214
  }
1170
1215
  function transformLng(e, t) {
1171
- let n = 300 + e + 2 * t + 0.1 * e * e + 0.1 * e * t + 0.1 * Math.sqrt(Math.abs(e));
1172
- return n += (20 * Math.sin(6 * e * PI) + 20 * Math.sin(2 * e * PI)) * 2 / 3, n += (20 * Math.sin(e * PI) + 40 * Math.sin(e / 3 * PI)) * 2 / 3, n += (150 * Math.sin(e / 12 * PI) + 300 * Math.sin(e / 30 * PI)) * 2 / 3, n;
1216
+ let o = 300 + e + 2 * t + 0.1 * e * e + 0.1 * e * t + 0.1 * Math.sqrt(Math.abs(e));
1217
+ return o += (20 * Math.sin(6 * e * PI) + 20 * Math.sin(2 * e * PI)) * 2 / 3, o += (20 * Math.sin(e * PI) + 40 * Math.sin(e / 3 * PI)) * 2 / 3, o += (150 * Math.sin(e / 12 * PI) + 300 * Math.sin(e / 30 * PI)) * 2 / 3, o;
1173
1218
  }
1174
1219
  function outOfChina(e, t) {
1175
1220
  return !(e > 73.66 && e < 135.05 && t > 3.86 && t < 53.55);
1176
1221
  }
1177
1222
  function gcj02ToWgs84(e) {
1178
- const [t, n] = e.split(",").map(Number);
1179
- if (outOfChina(t, n))
1180
- return `${t.toFixed(6)}, ${n.toFixed(6)}`;
1223
+ const [t, o] = e.split(",").map(Number);
1224
+ if (outOfChina(t, o))
1225
+ return `${t.toFixed(6)}, ${o.toFixed(6)}`;
1181
1226
  {
1182
- let o = transformLat(t - 105, n - 35), r = transformLng(t - 105, n - 35);
1183
- const i = n / 180 * PI;
1184
- let l = Math.sin(i);
1185
- l = 1 - ee * l * l;
1186
- const c = Math.sqrt(l);
1187
- o = o * 180 / (a * (1 - ee) / (l * c) * PI), r = r * 180 / (a / c * Math.cos(i) * PI);
1188
- const s = n + o, m = t + r;
1189
- return `${(t * 2 - m).toFixed(6)}, ${(n * 2 - s).toFixed(6)}`;
1227
+ let n = transformLat(t - 105, o - 35), l = transformLng(t - 105, o - 35);
1228
+ const r = o / 180 * PI;
1229
+ let i = Math.sin(r);
1230
+ i = 1 - ee * i * i;
1231
+ const c = Math.sqrt(i);
1232
+ n = n * 180 / (a * (1 - ee) / (i * c) * PI), l = l * 180 / (a / c * Math.cos(r) * PI);
1233
+ const s = o + n, m = t + l;
1234
+ return `${(t * 2 - m).toFixed(6)}, ${(o * 2 - s).toFixed(6)}`;
1190
1235
  }
1191
1236
  }
1192
1237
  function calculateCirclePoints(e, t) {
1193
- const n = fromLonLat(e), o = t * 1e3, r = [
1194
- n[0] - o,
1195
- n[1] - o,
1196
- n[0] + o,
1197
- n[1] + o
1198
- ], i = transformExtent(r, projection.mercator, projection.data);
1238
+ const o = fromLonLat(e), n = t * 1e3, l = [
1239
+ o[0] - n,
1240
+ o[1] - n,
1241
+ o[0] + n,
1242
+ o[1] + n
1243
+ ], r = transformExtent(l, projection.mercator, projection.data);
1199
1244
  return {
1200
- leftTopPoint: { lng: i[0], lat: i[3] },
1201
- rightTopPoint: { lng: i[2], lat: i[3] },
1202
- rightBottomPoint: { lng: i[2], lat: i[1] },
1203
- leftBottomPoint: { lng: i[0], lat: i[1] }
1245
+ leftTopPoint: { lng: r[0], lat: r[3] },
1246
+ rightTopPoint: { lng: r[2], lat: r[3] },
1247
+ rightBottomPoint: { lng: r[2], lat: r[1] },
1248
+ leftBottomPoint: { lng: r[0], lat: r[1] }
1204
1249
  };
1205
1250
  }
1206
1251
  const equatorialCircumference = 2003750834e-2;
1207
1252
  function lonLatToMercator(e) {
1208
1253
  const t = e[0] * equatorialCircumference / 180;
1209
- let n = Math.log(Math.tan((90 + e[1]) * Math.PI / 360)) / (Math.PI / 180);
1210
- return n = n * equatorialCircumference / 180, [t, n];
1254
+ let o = Math.log(Math.tan((90 + e[1]) * Math.PI / 360)) / (Math.PI / 180);
1255
+ return o = o * equatorialCircumference / 180, [t, o];
1211
1256
  }
1212
1257
  function mercatorToLonLat(e, t = "lonlat") {
1213
- const n = { lon: 0, lat: 0 }, o = e[0] / equatorialCircumference * 180;
1214
- let r = e[1] / equatorialCircumference * 180;
1215
- return r = 180 / Math.PI * (2 * Math.atan(Math.exp(r * Math.PI / 180)) - Math.PI / 2), n.lon = o, n.lat = r, t === "lonlat" ? n : [o, r];
1258
+ const o = { lon: 0, lat: 0 }, n = e[0] / equatorialCircumference * 180;
1259
+ let l = e[1] / equatorialCircumference * 180;
1260
+ return l = 180 / Math.PI * (2 * Math.atan(Math.exp(l * Math.PI / 180)) - Math.PI / 2), o.lon = n, o.lat = l, t === "lonlat" ? o : [n, l];
1216
1261
  }
1217
1262
  function calculateBoundingBox(e) {
1218
- let t = 1 / 0, n = -1 / 0, o = 1 / 0, r = -1 / 0;
1263
+ let t = 1 / 0, o = -1 / 0, n = 1 / 0, l = -1 / 0;
1219
1264
  e.forEach((v) => {
1220
- const [g, L] = v;
1221
- t = Math.min(t, L), n = Math.max(n, L), o = Math.min(o, g), r = Math.max(r, g);
1265
+ const [g, k] = v;
1266
+ t = Math.min(t, k), o = Math.max(o, k), n = Math.min(n, g), l = Math.max(l, g);
1222
1267
  });
1223
- const i = r - o, l = n - t, c = Math.max(i, l), s = (o + r) / 2, m = (t + n) / 2, d = c / 2, u = s - d, h = s + d, p = m - d, f = m + d;
1268
+ const r = l - n, i = o - t, c = Math.max(r, i), s = (n + l) / 2, m = (t + o) / 2, d = c / 2, u = s - d, h = s + d, p = m - d, f = m + d;
1224
1269
  return [h, p, u, f];
1225
1270
  }
1226
1271
  const transformUtils = {
@@ -1230,61 +1275,58 @@ const transformUtils = {
1230
1275
  mercatorToLonLat,
1231
1276
  calculateBoundingBox,
1232
1277
  transform
1233
- }, mapInstance$5 = ref(), renderTrackStyleSetInstance = (e) => mapInstance$5.value = e, stopIcon = "&#xe6e2;", stopColor = "#E31818", slowIcon = "&#xe703;", slowColor = "#1890FF", dropletsIcon = "&#xe6d2", trackList$1 = ref([]);
1234
- let animationFeature;
1235
- const renderTrackLine = (e, t, n) => {
1236
- var l, c, s;
1237
- const o = e[t];
1238
- if (!o) return;
1239
- allTracks.value[t] = o, trackList$1.value = [];
1240
- let r = o;
1241
- o.length > 5e3 ? o.filter((m, d) => d % 5 === 0) : o.length > 4e3 ? o.filter((m, d) => d % 4 === 0) : o.length > 2e3 && o.filter((m, d) => d % 2 === 0), trackList$1.value = r.map((m, d) => {
1242
- if (Number(m.lon) > 180 || Number(m.lat) > 180) {
1243
- const [u, h] = formatUtils.convertSixHundredThousandToLatLng(m.lon, m.lat);
1244
- m.lon = u, m.lat = h;
1278
+ }, mapInstance$5 = ref(), renderTrackStyleSetInstance = (e) => mapInstance$5.value = e, stopIcon = "&#xe6e2;", stopColor = "#E31818", slowIcon = "&#xe703;", slowColor = "#1890FF", dropletsIcon = "&#xe6d2", trackList$1 = ref([]), renderTrackLine = (e, t, o) => {
1279
+ var s, m, d;
1280
+ const n = e[t];
1281
+ if (!n) return;
1282
+ allTracks.value[t] = n, trackList$1.value = [];
1283
+ const r = Math.max(1, Math.floor(n.length / 50)), i = n.filter((u, h) => h % r === 0);
1284
+ trackList$1.value = i.map((u, h) => {
1285
+ if (Number(u.lon) > 180 || Number(u.lat) > 180) {
1286
+ const [p, f] = formatUtils.convertSixHundredThousandToLatLng(u.lon, u.lat);
1287
+ u.lon = p, u.lat = f;
1245
1288
  }
1246
- return m.center = [m.lon, m.lat], m.centerPoint = transformUtils.lonLatToMercator(m.center), m.id = t, m.index = d, m.time = hooks(m.createdAt).format("YYYY-MM-DD HH:mm:ss"), m;
1289
+ return u.center = [u.lon, u.lat], u.centerPoint = transformUtils.lonLatToMercator(u.center), u.id = t, u.index = h, u.time = hooks(u.createdAt).format("YYYY-MM-DD HH:mm:ss"), u;
1247
1290
  });
1248
- const i = trackList$1.value.map((m) => m.centerPoint);
1249
- if (i.length >= 2) {
1250
- const m = new LineString(i), d = new Feature({ geometry: m });
1251
- d.setStyle(
1291
+ const c = trackList$1.value.map((u) => u.centerPoint);
1292
+ if (c.length >= 2) {
1293
+ const u = new LineString(c), h = new Feature({ geometry: u });
1294
+ h.setStyle(
1252
1295
  new Style({
1253
1296
  stroke: new Stroke({
1254
- color: n,
1297
+ color: o,
1255
1298
  width: 2
1256
1299
  })
1257
1300
  })
1258
- ), d.setId(t), d.set("type", "line"), (c = (l = shipTrackVectorLayer.value) == null ? void 0 : l.getSource()) == null || c.clear(), shipTrackLineFeatures.value = [];
1259
- const u = shipTrackLineFeatures.value.findIndex((p) => p.getId() === t);
1260
- u >= 0 ? shipTrackLineFeatures.value[u] = d : shipTrackLineFeatures.value.push(d);
1261
- const h = createAnimatedIconFeature(n, i);
1262
- trackLineVectorSource.value = new VectorSource({
1301
+ ), h.setId(t), h.set("type", "line"), (m = (s = shipTrackVectorLayer.value) == null ? void 0 : s.getSource()) == null || m.clear(), shipTrackLineFeatures.value = [];
1302
+ const p = shipTrackLineFeatures.value.findIndex((f) => f.getId() === t);
1303
+ p >= 0 ? shipTrackLineFeatures.value[p] = h : shipTrackLineFeatures.value.push(h), createAnimatedIconFeature(o, c), trackLineVectorSource.value = new VectorSource({
1263
1304
  features: [...shipTrackLineFeatures.value]
1264
- }), animationFeature = h, console.log(animationFeature), shipTrackVectorLayer.value = new VectorLayer({
1305
+ }), shipTrackVectorLayer.value = new VectorLayer({
1265
1306
  source: trackLineVectorSource.value,
1266
- zIndex: 102
1267
- }), renderPoint(n), (s = mapInstance$5.value) == null || s.addLayer(shipTrackVectorLayer.value);
1307
+ zIndex: 102,
1308
+ updateWhileInteracting: !0
1309
+ }), renderPoint(o), (d = mapInstance$5.value) == null || d.addLayer(shipTrackVectorLayer.value);
1268
1310
  }
1269
1311
  }, handlePlay = (e, t) => {
1270
- const n = allTracks.value[String(e)];
1271
- playAnimation(n.map((o) => [o.lon, o.lat]), t);
1312
+ const o = allTracks.value[String(e)];
1313
+ playAnimation(o.map((n) => [n.lon, n.lat]), t);
1272
1314
  }, removeShipTrackLineFeatureByIndex = (e, t) => {
1273
1315
  e >= 0 && e < shipTrackLineFeatures.value.length && (shipTrackLineFeatures.value.splice(e, 1), delete allTracks.value[t]), trackLineVectorSource.value = new VectorSource({
1274
1316
  features: [...shipTrackLineFeatures.value]
1275
1317
  }), shipTrackVectorLayer.value && shipTrackVectorLayer.value.setSource(trackLineVectorSource.value);
1276
1318
  }, createAnimatedIconFeature = (e, t) => {
1277
- const n = new Feature({
1319
+ const o = new Feature({
1278
1320
  geometry: new Point(fromLonLat([t[0][0], t[0][1]]))
1279
1321
  // 初始位置
1280
- }), o = new Style({
1322
+ }), n = new Style({
1281
1323
  text: new Text({
1282
1324
  font: "700 14px map-iconfont",
1283
1325
  text: getIconFont("&#xe6bc;"),
1284
1326
  fill: new Fill({ color: e })
1285
1327
  })
1286
1328
  });
1287
- return n.setStyle(o), n;
1329
+ return o.setStyle(n), o;
1288
1330
  }, geoMarkerStyle = new Style({
1289
1331
  text: new Text({
1290
1332
  font: "700 20px map-iconfont",
@@ -1299,22 +1341,22 @@ const trackAnimating = ref(!1);
1299
1341
  let distance = 0, lastTime = Date.now(), moveFeatureHandler = null;
1300
1342
  const moveFeature = (e, t) => {
1301
1343
  var u, h, p;
1302
- const n = Number(50 * t), o = ((u = e.frameState) == null ? void 0 : u.time) ?? Date.now(), r = o - lastTime;
1303
- if (distance = (distance + n * r / 1e6) % 2, lastTime = o, distance >= 1) {
1344
+ const o = Number(50 * t), n = ((u = e.frameState) == null ? void 0 : u.time) ?? Date.now(), l = n - lastTime;
1345
+ if (distance = (distance + o * l / 1e6) % 2, lastTime = n, distance >= 1) {
1304
1346
  stopAnimation();
1305
1347
  return;
1306
1348
  }
1307
- const i = linePath.getCoordinateAt(
1349
+ const r = linePath.getCoordinateAt(
1308
1350
  distance > 1 ? 2 - distance : distance
1309
- ), l = linePath.getCoordinateAt(
1351
+ ), i = linePath.getCoordinateAt(
1310
1352
  distance > 1 ? distance - 0.01 : distance
1311
1353
  ), c = linePath.getCoordinateAt(
1312
1354
  distance > 1 ? 2 - distance : distance + 0.01
1313
1355
  ), m = getRotation(
1314
- transformUtils.mercatorToLonLat(l, "array"),
1356
+ transformUtils.mercatorToLonLat(i, "array"),
1315
1357
  transformUtils.mercatorToLonLat(c, "array")
1316
1358
  ) * Math.PI / 180;
1317
- (h = geoMarkerStyle.getText()) == null || h.setRotation(m), position.setCoordinates(i);
1359
+ (h = geoMarkerStyle.getText()) == null || h.setRotation(m), position.setCoordinates(r);
1318
1360
  const d = getVectorContext(e);
1319
1361
  d.context_.save(), d.setStyle(geoMarkerStyle), d.drawGeometry(position), d.context_.restore(), (p = mapInstance$5.value) == null || p.render();
1320
1362
  }, startAnimation = () => {
@@ -1324,7 +1366,7 @@ const moveFeature = (e, t) => {
1324
1366
  var e;
1325
1367
  trackAnimating.value && (trackAnimating.value = !1, geoMarker == null || geoMarker.setGeometry(void 0), moveFeatureHandler && vectorLayer && vectorLayer.un("postrender", moveFeatureHandler), vectorLayer && ((e = mapInstance$5.value) == null || e.removeLayer(vectorLayer)), vectorLayer = null, geoMarker = null);
1326
1368
  }, playAnimation = (e, t) => {
1327
- var o;
1369
+ var n;
1328
1370
  trackAnimating.value && stopAnimation(), polyline = new Polyline({
1329
1371
  factor: 1e6
1330
1372
  }).writeGeometry(new LineString(e)), linePath = new Polyline({
@@ -1336,8 +1378,8 @@ const moveFeature = (e, t) => {
1336
1378
  type: "icon",
1337
1379
  geometry: new Point(linePath.getFirstCoordinate())
1338
1380
  });
1339
- const n = startMarker.getGeometry();
1340
- position = n ? n.clone() : new Point([0, 0]), geoMarker = new Feature({
1381
+ const o = startMarker.getGeometry();
1382
+ position = o ? o.clone() : new Point([0, 0]), geoMarker = new Feature({
1341
1383
  type: "geoMarker",
1342
1384
  style: geoMarkerStyle,
1343
1385
  geometry: position
@@ -1345,13 +1387,13 @@ const moveFeature = (e, t) => {
1345
1387
  source: new VectorSource({
1346
1388
  features: [geoMarker]
1347
1389
  })
1348
- }), (o = mapInstance$5.value) == null || o.addLayer(vectorLayer), moveFeatureHandler = (r) => moveFeature(r, t), startAnimation();
1390
+ }), (n = mapInstance$5.value) == null || n.addLayer(vectorLayer), moveFeatureHandler = (l) => moveFeature(l, t), startAnimation();
1349
1391
  }, renderPoint = (e) => {
1350
1392
  if (!mapInstance$5.value) return;
1351
1393
  const t = trackList$1.value || [];
1352
1394
  if (!(t && t.length > 1)) return [];
1353
- const n = { 16: 24, 17: 15, default: 4 }, o = [], r = t.length;
1354
- for (let c = 0; c < r; c++) {
1395
+ const o = { 16: 24, 17: 15, default: 4 }, n = [], l = t.length;
1396
+ for (let c = 0; c < l; c++) {
1355
1397
  t[c].index = c;
1356
1398
  const s = mapInstance$5.value.getPixelFromCoordinate(t[c].centerPoint);
1357
1399
  if (s) {
@@ -1360,22 +1402,22 @@ const moveFeature = (e, t) => {
1360
1402
  const d = mapInstance$5.value.getView().getZoom();
1361
1403
  if (!d) return;
1362
1404
  if (d > 15) {
1363
- const h = n[d] || n.default;
1405
+ const h = o[d] || o.default;
1364
1406
  m = adjustBounds(m, [h, h]);
1365
1407
  }
1366
1408
  let u = !0;
1367
1409
  if (t[c].state !== "0") {
1368
- for (let h = 0; h < o.length; h++)
1369
- if (isOverlapping(m, o[h].bounds)) {
1410
+ for (let h = 0; h < n.length; h++)
1411
+ if (isOverlapping(m, n[h].bounds)) {
1370
1412
  u = !1;
1371
1413
  break;
1372
1414
  }
1373
1415
  }
1374
- u && (t[c].bounds = m, o.push(t[c]));
1416
+ u && (t[c].bounds = m, n.push(t[c]));
1375
1417
  }
1376
1418
  }
1377
- const i = getIconStyle(stopIcon), l = getIconStyle(slowIcon);
1378
- o.forEach((c, s) => {
1419
+ const r = getIconStyle(stopIcon), i = getIconStyle(slowIcon);
1420
+ n.forEach((c, s) => {
1379
1421
  var u, h;
1380
1422
  const m = new Feature({
1381
1423
  geometry: new Point(c.centerPoint)
@@ -1415,27 +1457,27 @@ const moveFeature = (e, t) => {
1415
1457
  }),
1416
1458
  zIndex: 99
1417
1459
  }), v = [];
1418
- Number(c.state) === 0 ? ((u = f.getText()) == null || u.setFill(new Fill({ color: stopColor })), v.push(i)) : Number(c.state) === 1 && ((h = f.getText()) == null || h.setFill(new Fill({ color: slowColor })), v.push(l)), v.push(f), p.setStyle(v), trackLineVectorSource.value.addFeature(p);
1460
+ Number(c.state) === 0 ? ((u = f.getText()) == null || u.setFill(new Fill({ color: stopColor })), v.push(r)) : Number(c.state) === 1 && ((h = f.getText()) == null || h.setFill(new Fill({ color: slowColor })), v.push(i)), v.push(f), p.setStyle(v), trackLineVectorSource.value.addFeature(p);
1419
1461
  }
1420
- }), renderArrow(o, e), renderIconPoint();
1462
+ }), renderArrow(n, e), renderIconPoint();
1421
1463
  }, renderArrow = (e, t) => {
1422
- const n = e.length;
1423
- n || (e.push(trackList$1.value[0]), e.push(trackList$1.value[trackList$1.value.length - 1]));
1424
- for (let o = 0; o < n - 1; o++) {
1425
- let r;
1426
- const i = e[o], l = (e[o + 1].index + i.index) / 2;
1427
- if (l % 2 === 0)
1428
- r = trackList$1.value[l].centerPoint;
1464
+ const o = e.length;
1465
+ o || (e.push(trackList$1.value[0]), e.push(trackList$1.value[trackList$1.value.length - 1]));
1466
+ for (let n = 0; n < o - 1; n++) {
1467
+ let l;
1468
+ const r = e[n], i = (e[n + 1].index + r.index) / 2;
1469
+ if (i % 2 === 0)
1470
+ l = trackList$1.value[i].centerPoint;
1429
1471
  else {
1430
- const c = trackList$1.value[Math.floor(l)], s = trackList$1.value[Math.ceil(l)];
1472
+ const c = trackList$1.value[Math.floor(i)], s = trackList$1.value[Math.ceil(i)];
1431
1473
  if (c && s) {
1432
1474
  const [m, d] = c.centerPoint, [u, h] = s.centerPoint;
1433
- r = [(m + u) / 2, (d + h) / 2];
1475
+ l = [(m + u) / 2, (d + h) / 2];
1434
1476
  }
1435
1477
  }
1436
- if (r) {
1478
+ if (l) {
1437
1479
  const c = new Feature({
1438
- geometry: new Point(r)
1480
+ geometry: new Point(l)
1439
1481
  });
1440
1482
  c.set("type", "track_arrow"), c.setStyle(
1441
1483
  new Style({
@@ -1445,8 +1487,8 @@ const moveFeature = (e, t) => {
1445
1487
  fill: new Fill({ color: t }),
1446
1488
  // 设置箭头旋转 角度转为弧度
1447
1489
  rotation: getRotation(
1448
- e[o].center,
1449
- e[o + 1].center
1490
+ e[n].center,
1491
+ e[n + 1].center
1450
1492
  ) * (Math.PI / 180)
1451
1493
  })
1452
1494
  })
@@ -1454,29 +1496,29 @@ const moveFeature = (e, t) => {
1454
1496
  }
1455
1497
  }
1456
1498
  }, renderIconPoint = () => {
1457
- const e = "&#xe69b;", t = "#fcdc3f", n = "#ff0000";
1458
- (trackList$1.value.length < 2 ? [trackList$1.value[0]] : [trackList$1.value[0], trackList$1.value[trackList$1.value.length - 1]]).forEach((r) => {
1459
- const i = new Feature({
1460
- geometry: new Point(r.centerPoint)
1499
+ const e = "&#xe69b;", t = "#fcdc3f", o = "#ff0000";
1500
+ (trackList$1.value.length < 2 ? [trackList$1.value[0]] : [trackList$1.value[0], trackList$1.value[trackList$1.value.length - 1]]).forEach((l) => {
1501
+ const r = new Feature({
1502
+ geometry: new Point(l.centerPoint)
1461
1503
  });
1462
- i.set("type", "track_begin"), i.set("data", r);
1463
- const l = r.index === 0 && trackList$1.value.length >= 2 ? t : n;
1464
- i.setStyle(
1504
+ r.set("type", "track_begin"), r.set("data", l);
1505
+ const i = l.index === 0 && trackList$1.value.length >= 2 ? t : o;
1506
+ r.setStyle(
1465
1507
  new Style({
1466
1508
  text: new Text({
1467
1509
  font: "Normal 14px map-iconfont",
1468
1510
  text: getIconFont(e),
1469
- fill: new Fill({ color: l })
1511
+ fill: new Fill({ color: i })
1470
1512
  }),
1471
1513
  zIndex: 101
1472
1514
  })
1473
- ), trackLineVectorSource.value.addFeature(i);
1515
+ ), trackLineVectorSource.value.addFeature(r);
1474
1516
  });
1475
1517
  }, setTrackLabelStyle = (e, t) => new Style({
1476
- renderer: (n, o) => {
1477
- const r = o.context, c = {
1518
+ renderer: (o, n) => {
1519
+ const l = n.context, c = {
1478
1520
  id: e.id || "",
1479
- center: n,
1521
+ center: o,
1480
1522
  text: e.time,
1481
1523
  color: t,
1482
1524
  textColor: "#000",
@@ -1484,91 +1526,91 @@ const moveFeature = (e, t) => {
1484
1526
  selected: !0,
1485
1527
  type: "TrackTime"
1486
1528
  };
1487
- drawLabel(r, c, trackLabels.value);
1529
+ drawLabel(l, c, trackLabels.value, mapInstance$5.value);
1488
1530
  }
1489
- }), mapInstance$4 = ref(), renderCustomOverlaySetInstance = (e) => mapInstance$4.value = e, drawCustomContent = (e, t, n, o = "top-left", r = !1, i = !0) => {
1531
+ }), mapInstance$4 = ref(), renderCustomOverlaySetInstance = (e) => mapInstance$4.value = e, drawCustomContent = (e, t, o, n = "top-left", l = !1, r = !0) => {
1490
1532
  var u, h;
1491
1533
  if (!t || !mapInstance$4.value) return;
1492
- i && document.querySelectorAll(".truck-custom-content").forEach((p) => {
1534
+ r && document.querySelectorAll(".truck-custom-content").forEach((p) => {
1493
1535
  var f;
1494
1536
  return (f = p.parentNode) == null ? void 0 : f.removeChild(p);
1495
1537
  });
1496
- const l = document.createElement("div");
1497
- l.innerHTML = n;
1538
+ const i = document.createElement("div");
1539
+ i.innerHTML = o;
1498
1540
  const c = new Overlay({
1499
- element: l,
1541
+ element: i,
1500
1542
  position: t,
1501
1543
  // 初始位置
1502
- positioning: o,
1503
- stopEvent: r
1544
+ positioning: n,
1545
+ stopEvent: l
1504
1546
  // 设置不阻拦事件
1505
1547
  });
1506
- if (r) {
1507
- let p = !1, f = [0, 0], v = [0, 0], g = 0, L = 0;
1508
- l.addEventListener("mousedown", function(S) {
1509
- var F;
1510
- p = !0, g = S.clientX, L = S.clientY;
1511
- const I = (F = mapInstance$4.value) == null ? void 0 : F.getCoordinateFromPixel([S.clientX - 200, S.clientY - 200]);
1512
- I && (f = I), v = [
1513
- S.clientX - l.getBoundingClientRect().left + 160,
1514
- S.clientY - l.getBoundingClientRect().top + 84
1515
- ], S.preventDefault(), console.log(e, g, L);
1516
- }), document.addEventListener("mousemove", function(S) {
1517
- var I;
1548
+ if (l) {
1549
+ let p = !1, f = [0, 0], v = [0, 0], g = 0, k = 0;
1550
+ i.addEventListener("mousedown", function(M) {
1551
+ var E;
1552
+ p = !0, g = M.clientX, k = M.clientY;
1553
+ const b = (E = mapInstance$4.value) == null ? void 0 : E.getCoordinateFromPixel([M.clientX - 200, M.clientY - 200]);
1554
+ b && (f = b), v = [
1555
+ M.clientX - i.getBoundingClientRect().left + 160,
1556
+ M.clientY - i.getBoundingClientRect().top + 84
1557
+ ], M.preventDefault(), console.log(e, g, k);
1558
+ }), document.addEventListener("mousemove", function(M) {
1559
+ var b;
1518
1560
  if (p) {
1519
- const F = (I = mapInstance$4.value) == null ? void 0 : I.getCoordinateFromPixel([S.clientX - v[0], S.clientY - v[1]]), x = F[0] - f[0], P = F[1] - f[1];
1520
- c.setPosition([f[0] + x, f[1] + P]);
1561
+ const E = (b = mapInstance$4.value) == null ? void 0 : b.getCoordinateFromPixel([M.clientX - v[0], M.clientY - v[1]]), V = E[0] - f[0], F = E[1] - f[1];
1562
+ c.setPosition([f[0] + V, f[1] + F]);
1521
1563
  }
1522
1564
  }), document.addEventListener("mouseup", function() {
1523
1565
  p = !1;
1524
1566
  });
1525
1567
  }
1526
1568
  (u = mapInstance$4.value) == null || u.addOverlay(c);
1527
- const s = l.querySelector(".close-button");
1569
+ const s = i.querySelector(".close-button");
1528
1570
  s && s.addEventListener("click", () => {
1529
1571
  var p, f;
1530
- (p = mapInstance$4.value) == null || p.removeOverlay(c), (f = l.parentNode) == null || f.removeChild(l);
1572
+ (p = mapInstance$4.value) == null || p.removeOverlay(c), (f = i.parentNode) == null || f.removeChild(i);
1531
1573
  });
1532
1574
  const m = JSON.parse(JSON.stringify(t)), d = (h = mapInstance$4.value) == null ? void 0 : h.getCoordinateFromPixel(m);
1533
1575
  return c.setPosition(d), c;
1534
1576
  }, mapInstance$3 = ref(), renderTrackSetInstance = (e) => mapInstance$3.value = e, showTracks = ref([]), trackList = ref([]);
1535
1577
  ref(null);
1536
- const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship") => {
1578
+ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, l = "ship") => {
1537
1579
  var d;
1538
- if (console.log(r), nextTick(() => {
1580
+ if (console.log(l), nextTick(() => {
1539
1581
  hiddenAllShips(), clearShipData(!1);
1540
1582
  }).then((u) => {
1541
1583
  }), (t == null ? void 0 : t.length) < 2) {
1542
1584
  ((d = showTracks.value) == null ? void 0 : d.findIndex((u) => u.id === e)) < 0 && showTracks.value.push({ id: e, length: "" });
1543
1585
  return;
1544
1586
  }
1545
- const i = {};
1587
+ const r = {};
1546
1588
  t.forEach((u) => {
1547
1589
  u.state ? u.state = Number(u.state) : delete u.state;
1548
- }), trackId.value = e, i[e] = t, trackList.value = t;
1549
- const l = ["#ff0000", "#00ff00", "#0079ff", "#ffa500", "#800080", "#008080", "#ffc0cb", "#800000", "#000080", "#808000"], c = i[e].map(
1590
+ }), trackId.value = e, r[e] = t, trackList.value = t;
1591
+ const i = ["#ff0000", "#00ff00", "#0079ff", "#ffa500", "#800080", "#008080", "#ffc0cb", "#800000", "#000080", "#808000"], c = r[e].map(
1550
1592
  (u) => transform([u.lon, u.lat], projection.data, projection.mercator)
1551
- ), s = new LineString(c), m = formatUtils.formatLength(s, o) || "--";
1593
+ ), s = new LineString(c), m = formatUtils.formatLength(s, n) || "--";
1552
1594
  nextTick(() => {
1553
1595
  var h, p;
1554
1596
  const u = (h = showTracks.value) == null ? void 0 : h.findIndex((f) => f.id === e);
1555
- u < 0 ? showTracks.value.push({ id: e, length: m }) : showTracks.value[u].length = m, ++cursor.value, cursor.value > l.length && (cursor.value = 0), renderTrackLine(i, e, n), nextTick(() => {
1597
+ u < 0 ? showTracks.value.push({ id: e, length: m }) : showTracks.value[u].length = m, ++cursor.value, cursor.value > i.length && (cursor.value = 0), renderTrackLine(r, e, o), nextTick(() => {
1556
1598
  resetTrackView(e);
1557
1599
  }).then(() => {
1558
1600
  }), (p = mapInstance$3.value) == null || p.on("moveend", () => {
1559
- showTrackLayer.value && (trackLabels.value = [], renderTrackLine(i, e, n));
1560
- }), renderTrackPointPopup();
1601
+ showTrackLayer.value && (trackLabels.value = [], renderTrackLine(r, e, o));
1602
+ }), l === "ship" && renderTrackPointPopup();
1561
1603
  }).then(() => {
1562
1604
  });
1563
1605
  }, renderTrackPointPopup = () => {
1564
1606
  var t;
1565
1607
  const e = ref(null);
1566
- (t = mapInstance$3.value) == null || t.on("pointermove", (n) => {
1567
- var r, i, l, c;
1568
- e.value && ((r = mapInstance$3.value) == null || r.removeOverlay(e.value));
1569
- const o = (i = mapInstance$3.value) == null ? void 0 : i.forEachFeatureAtPixel(n.pixel, (s) => s);
1570
- if (o) {
1571
- const s = o.get("data");
1608
+ (t = mapInstance$3.value) == null || t.on("pointermove", (o) => {
1609
+ var l, r, i, c;
1610
+ e.value && ((l = mapInstance$3.value) == null || l.removeOverlay(e.value));
1611
+ const n = (r = mapInstance$3.value) == null ? void 0 : r.forEachFeatureAtPixel(o.pixel, (s) => s);
1612
+ if (n) {
1613
+ const s = n.get("data");
1572
1614
  if (!(s != null && s.time)) return;
1573
1615
  let m = "";
1574
1616
  s != null && s.stayTime && (m = `
@@ -1608,7 +1650,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1608
1650
  <div class="item-item">${s.time}</div>
1609
1651
  </div>
1610
1652
  ${m ?? m}
1611
- </div>`, u = (l = mapInstance$3.value) == null ? void 0 : l.getPixelFromCoordinate(n.coordinate);
1653
+ </div>`, u = (i = mapInstance$3.value) == null ? void 0 : i.getPixelFromCoordinate(o.coordinate);
1612
1654
  if (u) {
1613
1655
  const h = drawCustomContent(s.time, u, d, "top-left");
1614
1656
  h && (e.value = h);
@@ -1622,21 +1664,21 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1622
1664
  }, playTrack = (e, t) => {
1623
1665
  handlePlay(String(e), t);
1624
1666
  }, resetTrackView = (e) => {
1625
- var r;
1626
- const t = mapInstance$3.value.getView(), n = e ? shipTrackLineFeatures.value.find((i) => i.getId() === e) : shipTrackLineFeatures.value[0];
1627
- if (!n) return;
1628
- const o = (r = n == null ? void 0 : n.getGeometry()) == null ? void 0 : r.getExtent();
1629
- if (o != null && o.length)
1667
+ var l;
1668
+ const t = mapInstance$3.value.getView(), o = e ? shipTrackLineFeatures.value.find((r) => r.getId() === e) : shipTrackLineFeatures.value[0];
1669
+ if (!o) return;
1670
+ const n = (l = o == null ? void 0 : o.getGeometry()) == null ? void 0 : l.getExtent();
1671
+ if (n != null && n.length)
1630
1672
  try {
1631
- const i = buffer(o, Math.max(o[2] - o[0], o[3] - o[1]) * 0.02);
1632
- t.fit(i);
1633
- } catch (i) {
1634
- console.log(i);
1673
+ const r = buffer(n, Math.max(n[2] - n[0], n[3] - n[1]) * 0.02);
1674
+ t.fit(r);
1675
+ } catch (r) {
1676
+ console.log(r);
1635
1677
  }
1636
1678
  }, formatMinutesToDDHHMM = (e) => {
1637
- const t = hooks.duration(e, "minutes"), n = Math.floor(t.asDays()), o = t.hours(), r = t.minutes();
1638
- let i = `${String(r).padStart(2, "0")}分`;
1639
- return o !== 0 && (i = `${String(o).padStart(2, "0")}时${i}`), n !== 0 && (i = `${String(n).padStart(2, "0")}天${i}`), i;
1679
+ const t = hooks.duration(e, "minutes"), o = Math.floor(t.asDays()), n = t.hours(), l = t.minutes();
1680
+ let r = `${String(l).padStart(2, "0")}分`;
1681
+ return n !== 0 && (r = `${String(n).padStart(2, "0")}时${r}`), o !== 0 && (r = `${String(o).padStart(2, "0")}天${r}`), r;
1640
1682
  }, _hoisted_1$3 = {
1641
1683
  key: 0,
1642
1684
  class: "more-tool-panel"
@@ -1652,24 +1694,24 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1652
1694
  emits: ["switchGreenDot", "switchMapTile"],
1653
1695
  setup(e, { emit: t }) {
1654
1696
  var p, f;
1655
- const n = inject("mapInstance"), o = e, r = t, i = ref(((f = (p = n == null ? void 0 : n.value) == null ? void 0 : p.getView()) == null ? void 0 : f.getZoom()) || mapZoom.default), l = ref(!1), c = ref(null), s = ref(!0), m = () => {
1656
- o.disableGreenDot || i.value >= mapZoom.shipGreenDotMax || (s.value = !s.value, r("switchGreenDot", s.value));
1697
+ const o = inject("mapInstance"), n = e, l = t, r = ref(((f = (p = o == null ? void 0 : o.value) == null ? void 0 : p.getView()) == null ? void 0 : f.getZoom()) || mapZoom.default), i = ref(!1), c = ref(null), s = ref(!0), m = () => {
1698
+ n.disableGreenDot || r.value >= mapZoom.shipGreenDotMax || (s.value = !s.value, l("switchGreenDot", s.value));
1657
1699
  }, d = () => {
1658
- r("switchMapTile", o.mapTileMode === BaseMapType.vector ? BaseMapType.satellite : BaseMapType.vector);
1700
+ l("switchMapTile", n.mapTileMode === BaseMapType.vector ? BaseMapType.satellite : BaseMapType.vector);
1659
1701
  }, u = () => {
1660
1702
  var v, g;
1661
- l.value ? (showMeasure.value = !1, (v = c.value) == null || v.removeInteraction()) : (showMeasure.value = !0, (g = c.value) == null || g.addInteraction()), l.value = !l.value;
1703
+ i.value ? (v = c.value) == null || v.removeInteraction() : (g = c.value) == null || g.addInteraction(), i.value = !i.value;
1662
1704
  }, h = () => {
1663
1705
  var v;
1664
- (v = c.value) == null || v.removeInteraction(), l.value = !1;
1706
+ (v = c.value) == null || v.removeInteraction(), i.value = !1;
1665
1707
  };
1666
1708
  return onMounted(() => {
1667
1709
  nextTick(() => {
1668
1710
  var v;
1669
- (v = n == null ? void 0 : n.value) == null || v.on("moveend", () => {
1670
- var L, S;
1671
- const g = (S = (L = n == null ? void 0 : n.value) == null ? void 0 : L.getView()) == null ? void 0 : S.getZoom();
1672
- g && (i.value = g);
1711
+ (v = o == null ? void 0 : o.value) == null || v.on("moveend", () => {
1712
+ var k, M;
1713
+ const g = (M = (k = o == null ? void 0 : o.value) == null ? void 0 : k.getView()) == null ? void 0 : M.getZoom();
1714
+ g && (r.value = g);
1673
1715
  });
1674
1716
  });
1675
1717
  }), (v, g) => (openBlock(), createElementBlock(Fragment, null, [
@@ -1680,7 +1722,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1680
1722
  createElementVNode("div", _hoisted_2$1, [
1681
1723
  v.vehicleMode === "ship" ? (openBlock(), createElementBlock("div", {
1682
1724
  key: 0,
1683
- class: normalizeClass(["switch-btn", `${l.value && "active"}`]),
1725
+ class: normalizeClass(["switch-btn", `${i.value && "active"}`]),
1684
1726
  onClick: u
1685
1727
  }, g[5] || (g[5] = [
1686
1728
  createElementVNode("i", { class: "map-iconfont icon-measure" }, null, -1),
@@ -1688,7 +1730,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1688
1730
  ]), 2)) : createCommentVNode("", !0),
1689
1731
  v.vehicleMode === "ship" ? (openBlock(), createElementBlock("div", {
1690
1732
  key: 1,
1691
- class: normalizeClass(`switch-btn ${s.value && "active"} ${(v.disableGreenDot || i.value >= unref(mapZoom).shipGreenDotMax) && "disabled"}`),
1733
+ class: normalizeClass(`switch-btn ${s.value && "active"} ${(v.disableGreenDot || r.value >= unref(mapZoom).shipGreenDotMax) && "disabled"}`),
1692
1734
  onClick: m
1693
1735
  }, g[6] || (g[6] = [
1694
1736
  createElementVNode("i", { class: "map-iconfont icon-ship" }, null, -1),
@@ -1697,7 +1739,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1697
1739
  v.vehicleMode === "ship" ? (openBlock(), createElementBlock("div", {
1698
1740
  key: 2,
1699
1741
  class: normalizeClass(`switch-btn ${v.mapTileMode === unref(BaseMapType).satellite && "active"}`),
1700
- onClick: g[0] || (g[0] = (L) => d())
1742
+ onClick: g[0] || (g[0] = (k) => d())
1701
1743
  }, g[7] || (g[7] = [
1702
1744
  createElementVNode("i", { class: "map-iconfont icon-space" }, null, -1),
1703
1745
  createElementVNode("div", { class: "button-text" }, "图层", -1)
@@ -1705,7 +1747,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1705
1747
  v.vehicleMode === "truck" ? (openBlock(), createElementBlock("div", {
1706
1748
  key: 3,
1707
1749
  class: normalizeClass(`switch-btn ${v.mapTileMode === unref(BaseMapType).satellite && "active"}`),
1708
- onClick: g[1] || (g[1] = (L) => d())
1750
+ onClick: g[1] || (g[1] = (k) => d())
1709
1751
  }, g[8] || (g[8] = [
1710
1752
  createElementVNode("i", { class: "map-iconfont icon-space" }, null, -1),
1711
1753
  createElementVNode("div", { class: "button-text" }, "卫星", -1)
@@ -1713,14 +1755,14 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1713
1755
  v.showTrackLayer ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [
1714
1756
  createElementVNode("div", {
1715
1757
  class: "switch-btn multiple",
1716
- onClick: g[2] || (g[2] = (L) => unref(playTrack)(unref(currentTrackId), 1))
1758
+ onClick: g[2] || (g[2] = (k) => unref(playTrack)(unref(currentTrackId), 1))
1717
1759
  }, g[9] || (g[9] = [
1718
1760
  createElementVNode("i", { class: "map-iconfont icon-play" }, null, -1),
1719
1761
  createElementVNode("div", { class: "button-text" }, "播放轨迹", -1)
1720
1762
  ])),
1721
1763
  createElementVNode("div", {
1722
1764
  class: "switch-btn multiple",
1723
- onClick: g[3] || (g[3] = (L) => unref(resetTrackView)())
1765
+ onClick: g[3] || (g[3] = (k) => unref(resetTrackView)())
1724
1766
  }, g[10] || (g[10] = [
1725
1767
  createElementVNode("i", { class: "map-iconfont icon-center" }, null, -1),
1726
1768
  createElementVNode("div", { class: "button-text" }, "轨迹居中", -1)
@@ -1731,7 +1773,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1731
1773
  ])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1732
1774
  v.vehicleMode === "ship" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1733
1775
  createElementVNode("div", {
1734
- class: normalizeClass(["switch-btn", `${l.value && "active"}`]),
1776
+ class: normalizeClass(["switch-btn", `${i.value && "active"}`]),
1735
1777
  onClick: u
1736
1778
  }, g[11] || (g[11] = [
1737
1779
  createElementVNode("i", { class: "map-iconfont icon-measure" }, null, -1),
@@ -1739,7 +1781,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1739
1781
  ]), 2),
1740
1782
  v.vehicleMode === "ship" ? (openBlock(), createElementBlock("div", {
1741
1783
  key: 0,
1742
- class: normalizeClass(`switch-btn ${s.value && "active"} ${(v.disableGreenDot || i.value >= unref(mapZoom).shipGreenDotMax) && "disabled"}`),
1784
+ class: normalizeClass(`switch-btn ${s.value && "active"} ${(v.disableGreenDot || r.value >= unref(mapZoom).shipGreenDotMax) && "disabled"}`),
1743
1785
  onClick: m
1744
1786
  }, g[12] || (g[12] = [
1745
1787
  createElementVNode("i", { class: "map-iconfont icon-ship" }, null, -1),
@@ -1756,32 +1798,32 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1756
1798
  ], 64))
1757
1799
  ], 2),
1758
1800
  createElementVNode("div", _hoisted_3, [
1759
- l.value ? (openBlock(), createBlock(Measure, {
1801
+ i.value ? (openBlock(), createBlock(Measure, {
1760
1802
  key: 0,
1761
1803
  ref_key: "measureRef",
1762
1804
  ref: c,
1763
- visible: l.value,
1764
- "onUpdate:visible": g[4] || (g[4] = (L) => l.value = L),
1805
+ visible: i.value,
1806
+ "onUpdate:visible": g[4] || (g[4] = (k) => i.value = k),
1765
1807
  onClose: h,
1766
1808
  "view-mode": v.viewMode
1767
1809
  }, null, 8, ["visible", "view-mode"])) : createCommentVNode("", !0)
1768
1810
  ])
1769
1811
  ], 64));
1770
1812
  }
1771
- }), ToolPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-6b24cf3c"]]), _hoisted_1$2 = { id: "scale-line-container" }, _sfc_main$3 = /* @__PURE__ */ defineComponent({
1813
+ }), ToolPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-79266143"]]), _hoisted_1$2 = { id: "scale-line-container" }, _sfc_main$3 = /* @__PURE__ */ defineComponent({
1772
1814
  __name: "scaleLine",
1773
1815
  setup(e, { expose: t }) {
1774
- const n = inject("mapInstance");
1816
+ const o = inject("mapInstance");
1775
1817
  return t({
1776
- setScaleLine: (r) => {
1818
+ setScaleLine: (l) => {
1777
1819
  var c;
1778
- r || (r = "metric");
1779
- const i = new ScaleLine$1({
1780
- units: r
1781
- }), l = document.getElementById("scale-line-container");
1782
- l && (i.setTarget(l), (c = n == null ? void 0 : n.value) == null || c.addControl(i));
1820
+ l || (l = "metric");
1821
+ const r = new ScaleLine$1({
1822
+ units: l
1823
+ }), i = document.getElementById("scale-line-container");
1824
+ i && (r.setTarget(i), (c = o == null ? void 0 : o.value) == null || c.addControl(r));
1783
1825
  }
1784
- }), (r, i) => (openBlock(), createElementBlock("div", _hoisted_1$2));
1826
+ }), (l, r) => (openBlock(), createElementBlock("div", _hoisted_1$2));
1785
1827
  }
1786
1828
  }), ScaleLine = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-d666f80d"]]), _hoisted_1$1 = { class: "zoom" }, _sfc_main$2 = /* @__PURE__ */ defineComponent({
1787
1829
  __name: "zoomControl",
@@ -1791,22 +1833,22 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1791
1833
  }
1792
1834
  },
1793
1835
  setup(e) {
1794
- const t = inject("mapInstance"), n = () => {
1836
+ const t = inject("mapInstance"), o = () => {
1795
1837
  if (!t.value) return;
1796
- const r = t.value.getView(), i = r.getZoom();
1797
- i && r.setZoom(i + 1);
1798
- }, o = () => {
1838
+ const l = t.value.getView(), r = l.getZoom();
1839
+ r && l.setZoom(r + 1);
1840
+ }, n = () => {
1799
1841
  if (!t.value) return;
1800
- const r = t.value.getView(), i = r.getZoom();
1801
- i && r.setZoom(i - 1);
1842
+ const l = t.value.getView(), r = l.getZoom();
1843
+ r && l.setZoom(r - 1);
1802
1844
  };
1803
- return (r, i) => (openBlock(), createElementBlock("div", _hoisted_1$1, [
1845
+ return (l, r) => (openBlock(), createElementBlock("div", _hoisted_1$1, [
1804
1846
  createElementVNode("div", {
1805
- onClick: n,
1847
+ onClick: o,
1806
1848
  class: "button big-button"
1807
1849
  }, "+"),
1808
1850
  createElementVNode("div", {
1809
- onClick: o,
1851
+ onClick: n,
1810
1852
  class: "button small-button"
1811
1853
  }, "-")
1812
1854
  ]));
@@ -1818,14 +1860,14 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship")
1818
1860
  mapTile: { default: BaseMapType.satellite }
1819
1861
  },
1820
1862
  setup(e) {
1821
- useCssVars((i) => ({
1822
- "0d38823b": r.value
1863
+ useCssVars((r) => ({
1864
+ "0d38823b": l.value
1823
1865
  }));
1824
- const t = e, n = computed(() => t.type === COPY_RIGHT_TYPE.HORIZONTAL ? `map/tdt-copyright-h${t.mapTile === BaseMapType.satellite ? "-w" : ""}.svg` : `map/tdt-copyright-v${t.mapTile === BaseMapType.satellite ? "-w" : ""}.svg`), o = computed(() => t.type === COPY_RIGHT_TYPE.HORIZONTAL ? "400px" : "168px"), r = computed(() => t.type === COPY_RIGHT_TYPE.HORIZONTAL ? "auto auto 0 5px" : "0 auto auto 5px");
1825
- return (i, l) => (openBlock(), createElementBlock("div", _hoisted_1, [
1866
+ const t = e, o = computed(() => t.type === COPY_RIGHT_TYPE.HORIZONTAL ? `map/tdt-copyright-h${t.mapTile === BaseMapType.satellite ? "-w" : ""}.svg` : `map/tdt-copyright-v${t.mapTile === BaseMapType.satellite ? "-w" : ""}.svg`), n = computed(() => t.type === COPY_RIGHT_TYPE.HORIZONTAL ? "400px" : "168px"), l = computed(() => t.type === COPY_RIGHT_TYPE.HORIZONTAL ? "auto auto 0 5px" : "0 auto auto 5px");
1867
+ return (r, i) => (openBlock(), createElementBlock("div", _hoisted_1, [
1826
1868
  createElementVNode("img", {
1827
- src: unref(CDN_URL) + n.value,
1828
- width: o.value,
1869
+ src: unref(CDN_URL) + o.value,
1870
+ width: n.value,
1829
1871
  class: "logo",
1830
1872
  alt: ""
1831
1873
  }, null, 8, _hoisted_2)
@@ -1843,31 +1885,31 @@ cameraImage.crossOrigin = "anonymous";
1843
1885
  const loadImage = new Image();
1844
1886
  loadImage.src = `${CDN_URL}/map/map-load.svg`;
1845
1887
  loadImage.crossOrigin = "anonymous";
1846
- const setTruckStyle = (e, t, n, o) => new Style({
1847
- renderer: (r, i) => {
1848
- const l = i.context;
1849
- l.save();
1888
+ const setTruckStyle = (e, t, o, n) => new Style({
1889
+ renderer: (l, r) => {
1890
+ const i = r.context;
1891
+ i.save();
1850
1892
  let c = 1;
1851
- l.scale(c, c);
1852
- let [s, m] = r;
1893
+ i.scale(c, c);
1894
+ let [s, m] = l;
1853
1895
  s = Number(s) / c - 20, m = Number(m) / c;
1854
1896
  const d = s - 70, u = m - 68;
1855
1897
  let h = 180;
1856
1898
  const p = 56, f = "#FFFFFF";
1857
1899
  let v = 176;
1858
1900
  const g = 52;
1859
- let L = "#164AFF", S = "#FFFFFF";
1860
- n === CAR_COLOR.YELLOW ? (v = 176, L = "#FFC81E", S = "rgba(0,0,0,0.88)") : n === CAR_COLOR.Y_GREEN && (h = 200, v = 196, L = "#8FED7C", S = "rgba(0,0,0,0.88)"), o != null && o.length && (h += o.length * 56), fillRectRadius(l, d, u, h, p, f), fillRectRadius(l, d + 2, u + 2, v, g, L), n === CAR_COLOR.Y_GREEN && fillRectRadius(l, d + 2, u + 2, 68, g, "#FFC81E"), l.save(), l.restore(), l.fillStyle = S, l.font = "bold 28px Arial", l.textAlign = "left", l.textBaseline = "middle";
1861
- const I = `${t.slice(0, 2) + " · " + t.slice(2)}`;
1862
- if (l.fillText(I, d + 12, u + 32), l.save(), l.restore(), o != null && o.length) {
1863
- const x = l.measureText(I).width + 12;
1864
- let P = 0;
1865
- o.forEach(($) => {
1866
- $ === DEVICE_TYPE.CAMERA && (l.drawImage(cameraImage, s - 54 + x + P * 56, m - 64, 50, 50), ++P), $ === DEVICE_TYPE.LOAD && (l.drawImage(loadImage, s - 54 + x + P * 56, m - 64, 50, 50), ++P);
1901
+ let k = "#164AFF", M = "#FFFFFF";
1902
+ o === CAR_COLOR.YELLOW ? (v = 176, k = "#FFC81E", M = "rgba(0,0,0,0.88)") : o === CAR_COLOR.Y_GREEN && (h = 200, v = 196, k = "#8FED7C", M = "rgba(0,0,0,0.88)"), n != null && n.length && (h += n.length * 56), fillRectRadius(i, d, u, h, p, f), fillRectRadius(i, d + 2, u + 2, v, g, k), o === CAR_COLOR.Y_GREEN && fillRectRadius(i, d + 2, u + 2, 68, g, "#FFC81E"), i.save(), i.restore(), i.fillStyle = M, i.font = "bold 28px Arial", i.textAlign = "left", i.textBaseline = "middle";
1903
+ const b = `${t.slice(0, 2) + " · " + t.slice(2)}`;
1904
+ if (i.fillText(b, d + 12, u + 32), i.save(), i.restore(), n != null && n.length) {
1905
+ const V = i.measureText(b).width + 12;
1906
+ let F = 0;
1907
+ n.forEach(($) => {
1908
+ $ === DEVICE_TYPE.CAMERA && (i.drawImage(cameraImage, s - 54 + V + F * 56, m - 64, 50, 50), ++F), $ === DEVICE_TYPE.LOAD && (i.drawImage(loadImage, s - 54 + V + F * 56, m - 64, 50, 50), ++F);
1867
1909
  });
1868
1910
  }
1869
- const F = dotImage;
1870
- l.drawImage(F, s + h / 2 - 90, m, 50 / c, 50 / c), l.restore();
1911
+ const E = dotImage;
1912
+ i.drawImage(E, s + h / 2 - 90, m, 50 / c, 50 / c), i.restore();
1871
1913
  }
1872
1914
  }), mapInstance$2 = ref(), renderDashboardSetInstance = (e) => mapInstance$2.value = e;
1873
1915
  ref([]);
@@ -1875,15 +1917,15 @@ let truckMarkerList = [], trucksVectorSource;
1875
1917
  const renderTrucksMarker = (e) => {
1876
1918
  if (deleteAllTruckMarkers(), !!mapInstance$2.value)
1877
1919
  return e.forEach((t) => {
1878
- const n = formatUtils.convertSixHundredThousandToLatLng(t.lon, t.lat), o = new Feature({
1879
- geometry: new Point(fromLonLat(n))
1920
+ const o = formatUtils.convertSixHundredThousandToLatLng(t.lon, t.lat), n = new Feature({
1921
+ geometry: new Point(fromLonLat(o))
1880
1922
  });
1881
- o.set("data", t), o.setStyle(
1923
+ n.set("data", t), n.setStyle(
1882
1924
  setTruckStyle(!1, t.vno, t.vclColor ?? 0, t.icons ?? [])
1883
1925
  ), truckMarkerList.push({
1884
1926
  name: t.vno,
1885
- lonlat: n,
1886
- feature: o
1927
+ lonlat: o,
1928
+ feature: n
1887
1929
  });
1888
1930
  }), trucksVectorSource = new VectorSource({
1889
1931
  features: truckMarkerList.map((t) => t.feature)
@@ -1896,31 +1938,31 @@ const renderTrucksMarker = (e) => {
1896
1938
  }), truckMarkerList = [];
1897
1939
  }, mapInstance$1 = ref(), renderTruckSetInstance = (e) => mapInstance$1.value = e, vehicle = ref(null), focusShipData = ref(), currentTruckOverlay = ref(null), findTruck = async (e, t) => {
1898
1940
  if (!mapInstance$1.value || (focusShipData.value = e, !(e != null && e.lon && (e != null && e.lat)))) return;
1899
- const n = Math.abs(Number(e.lon)) > 180 ? formatUtils.convertSixHundredThousandToLatLng(e.lon, e.lat) : [e.lon, e.lat], o = mapInstance$1.value.getPixelFromCoordinate(transform(n, projection.data, projection.mercator));
1900
- currentTruckOverlay.value = e ? drawTruckIcon(e.vno, o, (e == null ? void 0 : e.drc) ?? "", t) ?? null : null;
1901
- const r = mapInstance$1.value.getView(), i = new Point(n);
1902
- r.setCenter(transform(i.getCoordinates(), projection.data, projection.mercator));
1941
+ const o = Math.abs(Number(e.lon)) > 180 ? formatUtils.convertSixHundredThousandToLatLng(e.lon, e.lat) : [e.lon, e.lat], n = mapInstance$1.value.getPixelFromCoordinate(transform(o, projection.data, projection.mercator));
1942
+ currentTruckOverlay.value = e ? drawTruckIcon(e.vno, n, (e == null ? void 0 : e.drc) ?? "", t) ?? null : null;
1943
+ const l = mapInstance$1.value.getView(), r = new Point(o);
1944
+ l.setCenter(transform(r.getCoordinates(), projection.data, projection.mercator));
1903
1945
  }, clearAllTruck = () => {
1904
1946
  vehicle.value.clearAllShip();
1905
- }, drawTruckIcon = (e, t, n, o) => {
1906
- let r = `<div id="${e}" class="ol-custom-content truck-custom-content" style="width: 80px; height: 80px; transform: rotate(${n}deg);">
1947
+ }, drawTruckIcon = (e, t, o, n) => {
1948
+ let l = `<div id="${e}" class="ol-custom-content truck-custom-content" style="width: 80px; height: 80px; transform: rotate(${o}deg);">
1907
1949
  <img src="${CDN_URL}map/car-icon.gif" width="100%" height="100%" />
1908
1950
  </div>`;
1909
- return o && (r += o), drawCustomContent(e, t, r, "center-center");
1951
+ return n && (l += n), drawCustomContent(e, t, l, "center-center");
1910
1952
  }, removeTruckIcon = () => {
1911
1953
  var t;
1912
1954
  const e = (t = currentTruckOverlay.value) == null ? void 0 : t.getElement();
1913
1955
  e && (e.innerHTML = "");
1914
1956
  }, zoomTruckIcon = () => {
1915
- var i;
1957
+ var r;
1916
1958
  if (!mapInstance$1.value) return;
1917
- const e = mapInstance$1.value.getView().getZoom(), t = 120, n = 60;
1918
- function o(l) {
1919
- return l < 14 ? n : l >= 14 && l <= 18 ? Math.round((l - 14) * (t - n) / 4 + n) : t;
1959
+ const e = mapInstance$1.value.getView().getZoom(), t = 120, o = 60;
1960
+ function n(i) {
1961
+ return i < 14 ? o : i >= 14 && i <= 18 ? Math.round((i - 14) * (t - o) / 4 + o) : t;
1920
1962
  }
1921
- const r = o(e);
1922
- (i = document.querySelectorAll(".truck-custom-content")) == null || i.forEach((l) => {
1923
- l.style.width = `${r}px`, l.style.height = `${r}px`;
1963
+ const l = n(e);
1964
+ (r = document.querySelectorAll(".truck-custom-content")) == null || r.forEach((i) => {
1965
+ i.style.width = `${l}px`, i.style.height = `${l}px`;
1924
1966
  });
1925
1967
  }, mapInstance = ref(), drawPolygonSetInstance = (e) => mapInstance.value = e;
1926
1968
  let layerState = "drawn", drawnState = "undrawn";
@@ -1966,28 +2008,28 @@ function createHelpTooltip() {
1966
2008
  }
1967
2009
  let squareLimitError = !1, lineLimitError = !1;
1968
2010
  const validateSquareLimit = (e) => {
1969
- let n = 1 / 0, o = -1 / 0, r = 1 / 0, i = -1 / 0;
2011
+ let o = 1 / 0, n = -1 / 0, l = 1 / 0, r = -1 / 0;
1970
2012
  e == null || e.forEach((s) => {
1971
2013
  const m = transform(s, projection.mercator, projection.data), d = m[0], u = m[1];
1972
- n = Math.min(n, u), o = Math.max(o, u), r = Math.min(r, d), i = Math.max(i, d);
2014
+ o = Math.min(o, u), n = Math.max(n, u), l = Math.min(l, d), r = Math.max(r, d);
1973
2015
  });
1974
- const l = (o - n) * 111, c = (i - r) * 111;
1975
- squareLimitError = l > 150 || c > 150;
2016
+ const i = (n - o) * 111, c = (r - l) * 111;
2017
+ squareLimitError = i > 150 || c > 150;
1976
2018
  };
1977
2019
  let storeFeature, callbackFunction = null;
1978
2020
  const addInteraction = (e) => {
1979
- var n, o;
1980
- e && (callbackFunction = e), drawVector || init(), drawnState = "undrawn", layerState = "drawn", (n = mapInstance.value) == null || n.addLayer(drawVector), draw = new Draw({
2021
+ var o, n;
2022
+ showDrawLayer.value = !0, e && (callbackFunction = e), drawVector || init(), drawnState = "undrawn", layerState = "drawn", drawVector && ((o = mapInstance.value) == null || o.addLayer(drawVector)), draw = new Draw({
1981
2023
  type: "Polygon",
1982
2024
  source,
1983
2025
  trace: !0,
1984
2026
  style: [drawPolygonStyle.drawing, circleStyle]
1985
- }), (o = mapInstance.value) == null || o.addInteraction(draw), createMeasureTooltip(), createHelpTooltip();
2027
+ }), storeFeature || ((n = mapInstance.value) == null || n.addInteraction(draw), createHelpTooltip()), createMeasureTooltip();
1986
2028
  let t;
1987
- draw.on("drawstart", function(r) {
1988
- var i;
1989
- layerState = "drawn", sketch = r.feature, t = (i = sketch.getGeometry()) == null ? void 0 : i.on("change", function(l) {
1990
- const c = l.target, s = formatUtils.formatArea(c, LENGTH_UNIT.NM), d = c.getCoordinates()[0], u = new LineString([d[d.length - 2], d[d.length - 1]]), h = formatUtils.formatLength(u, LENGTH_UNIT.NM);
2029
+ draw.on("drawstart", function(l) {
2030
+ var r;
2031
+ layerState = "drawn", sketch = l.feature, t = (r = sketch.getGeometry()) == null ? void 0 : r.on("change", function(i) {
2032
+ const c = i.target, s = formatUtils.formatArea(c, LENGTH_UNIT.NM), d = c.getCoordinates()[0], u = new LineString([d[d.length - 2], d[d.length - 1]]), h = formatUtils.formatLength(u, LENGTH_UNIT.NM);
1991
2033
  if (lineLimitError = Number(getLength(u) / 1e3) > 150, validateSquareLimit(d), measureTooltipElement && s && (measureTooltipElement.innerHTML = `
1992
2034
  <span class="text">面积:${s}${lineLimitError || squareLimitError ? '<span class="error pl-12">超出可以绘画的距离</span>' : ""}</span>
1993
2035
  `), helpTooltipElement && s) {
@@ -1999,63 +2041,63 @@ const addInteraction = (e) => {
1999
2041
  `;
2000
2042
  }
2001
2043
  }), drawnState = "drawing";
2002
- }), draw.on("drawend", function(r) {
2003
- if (r.feature.getGeometry()) {
2004
- storeFeature = r.feature;
2005
- const i = endFn(r.feature);
2006
- i != null && i.length && callbackFunction && callbackFunction(i);
2044
+ }), draw.on("drawend", function(l) {
2045
+ if (l.feature.getGeometry()) {
2046
+ storeFeature = l.feature;
2047
+ const r = endFn(l.feature);
2048
+ r != null && r.length && callbackFunction && callbackFunction(r);
2007
2049
  }
2008
2050
  if (sketch = null, measureTooltipElement = null, createMeasureTooltip(), t && unByKey(t), drawnState = "drawend", draw && mapInstance.value) {
2009
- const i = mapInstance.value.getInteractions().getArray().find((l) => getUid(l) === getUid(draw));
2010
- i && mapInstance.value.removeInteraction(i), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement);
2051
+ const r = mapInstance.value.getInteractions().getArray().find((i) => getUid(i) === getUid(draw));
2052
+ r && mapInstance.value.removeInteraction(r), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement);
2011
2053
  }
2012
2054
  });
2013
2055
  }, removeInteraction = () => {
2014
- var e, t, n;
2056
+ var e, t, o;
2015
2057
  if (mapInstance.value) {
2016
- if (document.querySelectorAll(".ol-tooltip.ol-tooltip-draw-polygon").forEach((o) => {
2017
- var r;
2018
- (r = o == null ? void 0 : o.parentNode) == null || r.removeChild(o);
2019
- }), source.clear(), (e = mapInstance.value) == null || e.removeLayer(drawVector), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement), ((t = mapInstance.value) == null ? void 0 : t.getTargetElement()).style.cursor = "", document.querySelector("#map").style.cursor = "", draw) {
2020
- const o = mapInstance.value.getInteractions().getArray().find((r) => getUid(r) === getUid(draw));
2021
- o && ((n = mapInstance.value) == null || n.removeInteraction(o));
2058
+ if (showDrawLayer.value = !1, document.querySelectorAll(".ol-tooltip.ol-tooltip-draw-polygon").forEach((n) => {
2059
+ var l;
2060
+ (l = n == null ? void 0 : n.parentNode) == null || l.removeChild(n);
2061
+ }), source.clear(), drawVector && ((e = mapInstance.value) == null || e.removeLayer(drawVector)), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement), ((t = mapInstance.value) == null ? void 0 : t.getTargetElement()).style.cursor = "", document.querySelector("#map").style.cursor = "", draw) {
2062
+ const n = mapInstance.value.getInteractions().getArray().find((l) => getUid(l) === getUid(draw));
2063
+ n && ((o = mapInstance.value) == null || o.removeInteraction(n));
2022
2064
  }
2023
2065
  drawnState = "undrawn", layerState = "destroyed";
2024
2066
  }
2025
2067
  }, endFn = (e) => {
2026
- var t, n, o;
2068
+ var t, o, n;
2027
2069
  if (e.getGeometry()) {
2028
- const r = [], l = e.getGeometry().getCoordinates();
2029
- (t = l[0]) == null || t.forEach((s) => {
2030
- r.push(transform(s, projection.mercator, projection.data));
2070
+ const l = [], i = e.getGeometry().getCoordinates();
2071
+ (t = i[0]) == null || t.forEach((s) => {
2072
+ l.push(transform(s, projection.mercator, projection.data));
2031
2073
  });
2032
- const c = l[0][l[0].length - 2];
2033
- if (c && measureTooltip.setPosition(c), measureTooltip.setOffset([10, 0]), measureTooltipElement && (measureTooltipElement.innerHTML += '<span class="delete-icon"><i class="map-iconfont icon-delete" /></div>'), (n = document.querySelector(".delete-icon")) == null || n.addEventListener("click", () => {
2074
+ const c = i[0][i[0].length - 2];
2075
+ if (c && measureTooltip.setPosition(c), measureTooltip.setOffset([10, 0]), measureTooltipElement && (measureTooltipElement.innerHTML += '<span class="delete-icon"><i class="map-iconfont icon-delete" /></div>'), (o = document.querySelector(".delete-icon")) == null || o.addEventListener("click", () => {
2034
2076
  reset();
2035
2077
  }), !lineLimitError && !squareLimitError)
2036
- return r;
2037
- draw && ((o = mapInstance.value) == null || o.removeInteraction(draw)), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement);
2078
+ return l;
2079
+ draw && ((n = mapInstance.value) == null || n.removeInteraction(draw)), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement);
2038
2080
  }
2039
2081
  }, initFeature = (e) => {
2040
- var t, n;
2082
+ var t, o;
2041
2083
  if (e && (callbackFunction = e), layerState = "drawn", storeFeature) {
2042
- const o = storeFeature.getGeometry();
2043
- if (!o) return;
2044
- const r = formatUtils.formatArea(o, LENGTH_UNIT.NM);
2084
+ const n = storeFeature.getGeometry();
2085
+ if (!n) return;
2086
+ const l = formatUtils.formatArea(n, LENGTH_UNIT.NM);
2045
2087
  measureTooltipElement && (measureTooltipElement.innerHTML = `
2046
- <span class="text">面积:${r}${lineLimitError || squareLimitError ? '<span class="error pl-12">超出可以绘画的距离</span>' : ""}</span>
2047
- `), (t = drawVector.getSource()) == null || t.addFeature(storeFeature);
2048
- const i = endFn(storeFeature);
2049
- i != null && i.length && callbackFunction && callbackFunction(i);
2050
- const l = getCenter(storeFeature.getGeometry().getExtent());
2051
- (n = mapInstance.value) == null || n.getView().setCenter(l);
2088
+ <span class="text">面积:${l}${lineLimitError || squareLimitError ? '<span class="error pl-12">超出可以绘画的距离</span>' : ""}</span>
2089
+ `), drawVector && ((t = drawVector.getSource()) == null || t.addFeature(storeFeature));
2090
+ const r = endFn(storeFeature);
2091
+ r != null && r.length && callbackFunction && callbackFunction(r);
2092
+ const i = getCenter(storeFeature.getGeometry().getExtent());
2093
+ (o = mapInstance.value) == null || o.getView().setCenter(i);
2052
2094
  }
2053
2095
  }, pointerMoveHandler = function(e) {
2054
- var n;
2096
+ var o;
2055
2097
  if (e.dragging)
2056
2098
  return;
2057
2099
  let t = "点击选择起点";
2058
- sketch && (t = "单击继续,双击结束"), helpTooltipElement && (helpTooltipElement.innerHTML = t, helpTooltip.setPosition(e.coordinate), helpTooltipElement.classList.remove("hidden")), layerState === "drawn" && (((n = mapInstance.value) == null ? void 0 : n.getTargetElement()).style.cursor = "crosshair");
2100
+ sketch && (t = "单击继续,双击结束"), helpTooltipElement && (helpTooltipElement.innerHTML = t, helpTooltip.setPosition(e.coordinate), helpTooltipElement.classList.remove("hidden")), layerState === "drawn" && (((o = mapInstance.value) == null ? void 0 : o.getTargetElement()).style.cursor = "crosshair");
2059
2101
  }, init = () => {
2060
2102
  mapInstance.value && (circleStyle = new Style({
2061
2103
  image: new CircleStyle({
@@ -2077,20 +2119,23 @@ const addInteraction = (e) => {
2077
2119
  }), mapInstance.value.on(["dblclick"], function(e) {
2078
2120
  drawnState !== "undrawn" && (e.stopPropagation(), e.preventDefault());
2079
2121
  }));
2122
+ }, destroy = () => {
2123
+ storeFeature = null, drawVector = null, removeInteraction();
2080
2124
  }, reset = () => {
2081
- removeInteraction(), addInteraction(), storeFeature = null;
2125
+ destroy(), addInteraction();
2082
2126
  }, drawPolygonTool = {
2083
2127
  addInteraction,
2084
2128
  removeInteraction,
2085
2129
  initFeature,
2086
- reset
2087
- }, setPointStyle = (e, t, n) => {
2088
- const o = new Image();
2089
- o.crossOrigin = "anonymous";
2090
- const r = new Image();
2091
- r.crossOrigin = "anonymous";
2092
- const { color: i, url: l, activeUrl: c, activeColor: s, imgWidth: m, imgHeight: d } = n;
2093
- return (c || l) && (e ? r.src = CDN_URL + (c || l) : o.src = CDN_URL + (l || c)), new Style({
2130
+ reset,
2131
+ destroy
2132
+ }, setPointStyle = (e, t, o) => {
2133
+ const n = new Image();
2134
+ n.crossOrigin = "anonymous";
2135
+ const l = new Image();
2136
+ l.crossOrigin = "anonymous";
2137
+ const { color: r, url: i, activeUrl: c, activeColor: s, imgWidth: m, imgHeight: d } = o;
2138
+ return (c || i) && (e ? l.src = CDN_URL + (c || i) : n.src = CDN_URL + (i || c)), new Style({
2094
2139
  renderer: (u, h) => {
2095
2140
  const p = h.context;
2096
2141
  p.save();
@@ -2098,12 +2143,12 @@ const addInteraction = (e) => {
2098
2143
  let [v, g] = u;
2099
2144
  if (v = Number(v), g = Number(g), t) {
2100
2145
  p.font = `${12 * f}px Arial`;
2101
- const L = p.measureText(t).width, S = v - L / 2 - (f <= 1 ? 8 : f), I = g + 6 * f, F = L + 4, x = 16 * f, P = e && s || i;
2102
- fillRectRadius(p, S, I + (f <= 1 ? 6 : 13 * f), F, x, P), p.save(), p.restore(), p.fillStyle = e ? "#FFFFFF" : "#000000", p.textAlign = "center", p.textBaseline = "middle", p.fillText(t, S + (L + 4) / 2, I + (f <= 1 ? 16 : 22 * f)), p.save(), p.restore();
2146
+ const k = p.measureText(t).width, M = v - k / 2 - (f <= 1 ? 10 : -3), b = g + (f <= 1 ? 0 : 10) + 6 * f, E = k + 4, V = 16 * f, F = e && s || r;
2147
+ fillRectRadius(p, M, b + (f <= 1 ? 6 : 13 * f), E, V, F), p.save(), p.restore(), p.fillStyle = e ? "#FFFFFF" : "#000000", p.textAlign = "center", p.textBaseline = "middle", p.fillText(t, M + (k + 4) / 2, b + (f <= 1 ? 15 : 22 * f)), p.save(), p.restore();
2103
2148
  }
2104
- if (l || c) {
2105
- const L = e ? r : o;
2106
- p.drawImage(L, v - (m || L.width) / 2, g - (d || L.height) / 2, 30 * f, 30 * f);
2149
+ if (i || c) {
2150
+ const k = e ? l : n;
2151
+ p.drawImage(k, v - (m || k.width) / 2, g - (d || k.height) / 2, 30 * f, 30 * f);
2107
2152
  }
2108
2153
  p.restore();
2109
2154
  }
@@ -2116,39 +2161,39 @@ class PointMarkerClass {
2116
2161
  * 配置渲染点的样式
2117
2162
  * @param options
2118
2163
  */
2119
- constructor(t, n) {
2120
- b(this, "mapInstance");
2164
+ constructor(t, o) {
2165
+ I(this, "mapInstance");
2121
2166
  // 渲染的数据
2122
- b(this, "pointMarkerList", []);
2167
+ I(this, "pointMarkerList", []);
2123
2168
  // 绘制点渲染层数据
2124
- b(this, "pointsVectorSource");
2169
+ I(this, "pointsVectorSource");
2125
2170
  // 当前高亮的数据
2126
- b(this, "highlightPoint");
2127
- b(this, "pointLayer");
2171
+ I(this, "highlightPoint");
2172
+ I(this, "pointLayer");
2128
2173
  // 颜色等其他设置
2129
- b(this, "options");
2174
+ I(this, "options");
2130
2175
  // 使用坐标点区域自动缩放地图层级
2131
- b(this, "resetPointsView", (t) => {
2176
+ I(this, "resetPointsView", (t, o = 0.02) => {
2132
2177
  var i;
2133
2178
  if (!this.mapInstance || t.length === 0) return;
2134
2179
  const n = (i = this.mapInstance) == null ? void 0 : i.getView();
2135
2180
  if (!n) return;
2136
2181
  const r = t.map(
2137
- (l) => transform(l, projection.data, projection.mercator)
2138
- ).reduce((l, c) => [
2139
- Math.min(l[0], c[0]),
2140
- Math.min(l[1], c[1]),
2141
- Math.max(l[2], c[0]),
2142
- Math.max(l[3], c[1])
2182
+ (c) => transform(c, projection.data, projection.mercator)
2183
+ ).reduce((c, s) => [
2184
+ Math.min(c[0], s[0]),
2185
+ Math.min(c[1], s[1]),
2186
+ Math.max(c[2], s[0]),
2187
+ Math.max(c[3], s[1])
2143
2188
  ], [1 / 0, 1 / 0, -1 / 0, -1 / 0]);
2144
2189
  try {
2145
- const l = buffer(r, Math.max(r[2] - r[0], r[3] - r[1]) * 0.02);
2146
- n.fit(l);
2147
- } catch (l) {
2148
- console.error("Failed to zoom to points:", l);
2190
+ const c = buffer(r, Math.max(r[2] - r[0], r[3] - r[1]) * o);
2191
+ n.fit(c);
2192
+ } catch (c) {
2193
+ console.error("Failed to zoom to points:", c);
2149
2194
  }
2150
2195
  });
2151
- this.mapInstance = t, this.options = n;
2196
+ this.mapInstance = t, this.options = o;
2152
2197
  }
2153
2198
  /**
2154
2199
  * 渲染
@@ -2166,49 +2211,49 @@ class PointMarkerClass {
2166
2211
  * pointType
2167
2212
  */
2168
2213
  renderPointMarker(t) {
2169
- if (!this.mapInstance) return;
2170
- let n = {};
2171
- t.forEach((o) => {
2172
- var i;
2173
- const r = [o.lon, o.lat];
2174
- if (((i = this.highlightPoint) == null ? void 0 : i.id) === o.id)
2175
- n = {
2176
- id: o.id,
2177
- name: o.name,
2178
- lonlat: [Number(o.lon), Number(o.lat)],
2179
- pointType: o.pointType
2214
+ if (this.deleteAllPointMarkers(), !this.mapInstance) return;
2215
+ let o = {};
2216
+ t.forEach((n) => {
2217
+ var r;
2218
+ const l = [n.lon, n.lat];
2219
+ if (((r = this.highlightPoint) == null ? void 0 : r.id) === n.id)
2220
+ o = {
2221
+ id: n.id,
2222
+ name: n.name,
2223
+ lonlat: [Number(n.lon), Number(n.lat)],
2224
+ pointType: n.pointType
2180
2225
  };
2181
2226
  else {
2182
- const l = this.getFeature(o, r);
2227
+ const i = this.getFeature(n, l);
2183
2228
  this.pointMarkerList.push({
2184
- id: o.id,
2185
- name: o.name,
2186
- lonlat: [Number(o.lon), Number(o.lat)],
2187
- feature: l,
2188
- pointType: o.pointType
2229
+ id: n.id,
2230
+ name: n.name,
2231
+ lonlat: [Number(n.lon), Number(n.lat)],
2232
+ feature: i,
2233
+ pointType: n.pointType
2189
2234
  });
2190
2235
  }
2191
- }), n && n.lonlat && (n.feature = this.getFeature(n, n.lonlat), this.pointMarkerList.push(n)), this.pointsVectorSource = new VectorSource({
2192
- features: [...this.pointMarkerList.map((o) => o.feature)]
2236
+ }), o && o.lonlat && (o.feature = this.getFeature(o, o.lonlat), this.pointMarkerList.push(o)), this.pointsVectorSource = new VectorSource({
2237
+ features: [...this.pointMarkerList.map((n) => n.feature)]
2193
2238
  }), this.pointLayer = new VectorLayer({
2194
2239
  source: this.pointsVectorSource
2195
2240
  }), this.mapInstance.addLayer(this.pointLayer);
2196
2241
  }
2197
2242
  // 删除 未选中的渲染点
2198
2243
  deleteAllPointMarkers(t) {
2199
- this.pointMarkerList.forEach((n) => {
2200
- var o;
2201
- n.feature && t !== n.id && ((o = this.pointsVectorSource) == null || o.removeFeature(n.feature));
2244
+ this.pointMarkerList.forEach((o) => {
2245
+ var n;
2246
+ o.feature && t !== o.id && ((n = this.pointsVectorSource) == null || n.removeFeature(o.feature));
2202
2247
  });
2203
2248
  }
2204
2249
  // 取消高亮
2205
2250
  cancelHighlightTruckMarker() {
2206
2251
  if (!this.highlightPoint)
2207
2252
  return;
2208
- const { id: t, name: n } = this.highlightPoint;
2209
- this.highlightPoint = void 0, this.pointMarkerList.find((o) => {
2210
- o.id === t && o.feature.setStyle(
2211
- setPointStyle(!1, n, this.options)
2253
+ const { id: t, name: o } = this.highlightPoint;
2254
+ this.highlightPoint = void 0, this.pointMarkerList.find((n) => {
2255
+ n.id === t && n.feature.setStyle(
2256
+ setPointStyle(!1, o, this.options)
2212
2257
  );
2213
2258
  });
2214
2259
  }
@@ -2230,24 +2275,24 @@ class PointMarkerClass {
2230
2275
  */
2231
2276
  highlightPointMarker(t) {
2232
2277
  if (!this.mapInstance) return;
2233
- const { id: n, name: o, fullName: r, lon: i, lat: l, pointType: c } = t, s = [Number(i), Number(l)];
2278
+ const { id: o, name: n, fullName: l, lon: r, lat: i, pointType: c } = t, s = [Number(r), Number(i)];
2234
2279
  this.highlightPoint = {
2235
- id: n,
2236
- name: o,
2237
- fullName: r,
2280
+ id: o,
2281
+ name: n,
2282
+ fullName: l,
2238
2283
  lonlat: s,
2239
2284
  pointType: c
2240
2285
  }, this.setPointCenter(s);
2241
2286
  }
2242
2287
  // 获取feature
2243
- getFeature(t, n) {
2244
- var r;
2245
- const o = new Feature({
2246
- geometry: new Point(fromLonLat(n))
2288
+ getFeature(t, o) {
2289
+ var l;
2290
+ const n = new Feature({
2291
+ geometry: new Point(fromLonLat(o))
2247
2292
  });
2248
- return o.set("data", t), o.setStyle(
2249
- setPointStyle(((r = this.highlightPoint) == null ? void 0 : r.id) === t.id, t.name, this.options)
2250
- ), o;
2293
+ return n.set("data", t), n.setStyle(
2294
+ setPointStyle(((l = this.highlightPoint) == null ? void 0 : l.id) === t.id, t.name, this.options)
2295
+ ), n;
2251
2296
  }
2252
2297
  /**
2253
2298
  *
@@ -2257,12 +2302,12 @@ class PointMarkerClass {
2257
2302
  * type 0: 不改变地图大小 1: 等于customZoom 2: 地图当前zoom > 传入的customZoom(缩小地图) 3: 地图当前zoom < 传入的customZoom(放大地图)
2258
2303
  * }
2259
2304
  */
2260
- setPointCenter(t, n = { customZoom: mapZoom.findShip, type: 1 }) {
2305
+ setPointCenter(t, o = { customZoom: mapZoom.findShip, type: 1 }) {
2261
2306
  if (!this.mapInstance) return;
2262
- const { customZoom: o = mapZoom.findShip, type: r = 1 } = n, i = this.mapInstance.getView(), l = i.getZoom();
2263
- (r === 1 || l > o && r === 2 || l < o && r === 3) && i.setZoom(o);
2307
+ const { customZoom: n = mapZoom.findShip, type: l = 1 } = o, r = this.mapInstance.getView(), i = r.getZoom();
2308
+ (l === 1 || i > n && l === 2 || i < n && l === 3) && r.setZoom(n);
2264
2309
  const c = new Point(t);
2265
- i.setCenter(transform(c.getCoordinates(), projection.data, projection.mercator));
2310
+ r.setCenter(transform(c.getCoordinates(), projection.data, projection.mercator));
2266
2311
  }
2267
2312
  }
2268
2313
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -2278,17 +2323,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2278
2323
  showToolPanel: { type: Boolean }
2279
2324
  },
2280
2325
  emits: ["zoomChanged", "extentChanged"],
2281
- setup(e, { expose: t, emit: n }) {
2282
- const o = ref();
2283
- provide("mapInstance", o);
2284
- const r = ref(null), i = ref(null), l = ref(null), c = n, s = e, m = ref(s.zoom || mapZoom.default), d = ref(!1), u = ref(!0), h = ref(!0), p = ref(!0), f = {
2326
+ setup(e, { expose: t, emit: o }) {
2327
+ const n = ref();
2328
+ provide("mapInstance", n);
2329
+ const l = ref(null), r = ref(null), i = ref(null), c = o, s = e, m = ref(s.zoom || mapZoom.default), d = ref(!1), u = ref(!0), h = ref(!0), p = ref(!0), f = {
2285
2330
  tiandituTile: new TileLayer({ source: new XYZ({ url: baseMap.tiandituTile }) }),
2286
2331
  tiandituTileMark: new TileLayer({ source: new XYZ({ url: baseMap.tiandituTileMark }) }),
2287
2332
  tiandituImgTile: new TileLayer({ source: new XYZ({ url: baseMap.tiandituImgTile }), visible: !1 }),
2288
2333
  tiandituImgTileMark: new TileLayer({ source: new XYZ({ url: baseMap.tiandituImgTileMark }), visible: !1 }),
2289
2334
  greenMark: new TileLayer({ source: new XYZ({ url: baseMap.greenTile }) })
2290
2335
  }, v = () => {
2291
- var w, k;
2336
+ var L, w;
2292
2337
  const y = {
2293
2338
  projection: projection.mercator,
2294
2339
  // 地图投影坐标系
@@ -2306,7 +2351,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2306
2351
  // 禁用旋转
2307
2352
  multiWorld: !0
2308
2353
  };
2309
- o.value = new Map$1({
2354
+ n.value = new Map$1({
2310
2355
  target: "map",
2311
2356
  // 对应页面里 id 为 map 的元素
2312
2357
  layers: [
@@ -2318,7 +2363,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2318
2363
  f.greenMark
2319
2364
  ],
2320
2365
  view: new View(y)
2321
- }), g(), s.showToolPanel === void 0 ? p.value = !0 : p.value = s.showToolPanel, (w = i.value) == null || w.setScaleLine(s.vehicleMode === "ship" ? "nautical" : "metric"), (k = o.value) == null || k.on("moveend", F), L(y.zoom < mapZoom.shipGreenDotMax), I(s.vehicleMode === "ship" || s.viewMode === "findShip" ? BaseMapType.satellite : BaseMapType.vector), s.viewMode === "findShip" && s.mmsi && s.shipData && nextTick(() => {
2366
+ }), g(), s.showToolPanel === void 0 ? p.value = !0 : p.value = s.showToolPanel, (L = r.value) == null || L.setScaleLine(s.vehicleMode === "ship" ? "nautical" : "metric"), (w = n.value) == null || w.on("moveend", E), k(y.zoom < mapZoom.shipGreenDotMax), b(s.vehicleMode === "ship" || s.viewMode === "findShip" ? BaseMapType.satellite : BaseMapType.vector), s.viewMode === "findShip" && s.mmsi && s.shipData && nextTick(() => {
2322
2367
  findShip(String(s.mmsi), s.shipData);
2323
2368
  }), onShipsMarkerHover();
2324
2369
  };
@@ -2326,69 +2371,69 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2326
2371
  v();
2327
2372
  });
2328
2373
  const g = () => {
2329
- o.value && (renderCustomOverlaySetInstance(o.value), renderTruckSetInstance(o.value), drawPolygonSetInstance(o.value), renderShipStyleSetInstance(o.value), renderTrackStyleSetInstance(o.value), renderDashboardSetInstance(o.value), renderMarkerSetInstance(o.value), renderShipSetInstance(o.value), renderTrackSetInstance(o.value));
2330
- }, L = (y) => {
2331
- var w;
2332
- s.vehicleMode !== "ship" && (y = !1), (w = o.value) == null || w.getLayers().forEach((k) => {
2333
- getUid(k) === getUid(f.greenMark) && (k.setVisible(y), u.value = y);
2374
+ n.value && (renderCustomOverlaySetInstance(n.value), renderTruckSetInstance(n.value), drawPolygonSetInstance(n.value), renderShipStyleSetInstance(n.value), renderTrackStyleSetInstance(n.value), renderDashboardSetInstance(n.value), renderMarkerSetInstance(n.value), renderShipSetInstance(n.value), renderTrackSetInstance(n.value));
2375
+ }, k = (y) => {
2376
+ var L;
2377
+ s.vehicleMode !== "ship" && (y = !1), (L = n.value) == null || L.getLayers().forEach((w) => {
2378
+ getUid(w) === getUid(f.greenMark) && (w.setVisible(y), u.value = y);
2334
2379
  });
2335
- }, S = ref(BaseMapType.satellite), I = (y) => {
2336
- var w;
2337
- S.value = y, (w = o.value) == null || w.getLayers().forEach((k) => {
2338
- (getUid(k) === getUid(f.tiandituTile) || getUid(k) === getUid(f.tiandituTileMark) || getUid(k) === getUid(f.tiandituImgTile) || getUid(k) === getUid(f.tiandituImgTileMark)) && k.setVisible(!1), (y === BaseMapType.vector && (getUid(k) === getUid(f.tiandituTile) || getUid(k) === getUid(f.tiandituTileMark)) || y === BaseMapType.satellite && (getUid(k) === getUid(f.tiandituImgTile) || getUid(k) === getUid(f.tiandituImgTileMark))) && k.setVisible(!0);
2380
+ }, M = ref(BaseMapType.satellite), b = (y) => {
2381
+ var L;
2382
+ M.value = y, (L = n.value) == null || L.getLayers().forEach((w) => {
2383
+ (getUid(w) === getUid(f.tiandituTile) || getUid(w) === getUid(f.tiandituTileMark) || getUid(w) === getUid(f.tiandituImgTile) || getUid(w) === getUid(f.tiandituImgTileMark)) && w.setVisible(!1), (y === BaseMapType.vector && (getUid(w) === getUid(f.tiandituTile) || getUid(w) === getUid(f.tiandituTileMark)) || y === BaseMapType.satellite && (getUid(w) === getUid(f.tiandituImgTile) || getUid(w) === getUid(f.tiandituImgTileMark))) && w.setVisible(!0);
2339
2384
  });
2340
- }, F = () => {
2341
- const y = o.value.getView(), w = y.getZoom();
2342
- w && x(w);
2343
- const k = y.calculateExtent(o.value.getSize());
2344
- k && w && P(k, w);
2345
- }, x = (y) => {
2346
- var M, T, C, V, E;
2347
- m.value = y, L(y < mapZoom.shipGreenDotMax);
2348
- const w = (M = o.value) == null ? void 0 : M.getLayers(), k = s.vehicleMode === "ship" ? w == null ? void 0 : w.getArray().find((N) => getUid(N) === getUid(f.greenMark)) : void 0;
2349
- showTrackLayer.value ? (h.value = !1, k == null || k.setVisible(!1), (T = shipsLayer.value) == null || T.setVisible(!1), (C = largeAmountShipsLayer.value) == null || C.setVisible(!1)) : !d.value && u.value && y <= mapZoom.shipGreenDotMax ? (h.value = !0, k == null || k.setVisible(!0), (V = shipsLayer.value) == null || V.setVisible(!1), (E = largeAmountShipsLayer.value) == null || E.setVisible(!1)) : (h.value = !1, k == null || k.setVisible(!1)), c("zoomChanged", y);
2350
- }, P = (y, w) => {
2351
- const k = transform([y[0], y[1]], projection.mercator, projection.data), M = transform([y[2], y[3]], projection.mercator, projection.data);
2352
- c("extentChanged", { extent: [k, M], zoom: w });
2385
+ }, E = () => {
2386
+ const y = n.value.getView(), L = y.getZoom();
2387
+ L && V(L);
2388
+ const w = y.calculateExtent(n.value.getSize());
2389
+ w && L && F(w, L);
2390
+ }, V = (y) => {
2391
+ var S, T, C, P, x;
2392
+ m.value = y, k(y < mapZoom.shipGreenDotMax);
2393
+ const L = (S = n.value) == null ? void 0 : S.getLayers(), w = s.vehicleMode === "ship" ? L == null ? void 0 : L.getArray().find((N) => getUid(N) === getUid(f.greenMark)) : void 0;
2394
+ showTrackLayer.value ? (h.value = !1, w == null || w.setVisible(!1), (T = shipsLayer.value) == null || T.setVisible(!1), (C = largeAmountShipsLayer.value) == null || C.setVisible(!1)) : !d.value && u.value && y <= mapZoom.shipGreenDotMax ? (h.value = !0, w == null || w.setVisible(!0), (P = shipsLayer.value) == null || P.setVisible(!1), (x = largeAmountShipsLayer.value) == null || x.setVisible(!1)) : (h.value = !1, w == null || w.setVisible(!1)), c("zoomChanged", y);
2395
+ }, F = (y, L) => {
2396
+ const w = transform([y[0], y[1]], projection.mercator, projection.data), S = transform([y[2], y[3]], projection.mercator, projection.data);
2397
+ c("extentChanged", { extent: [w, S], zoom: L });
2353
2398
  };
2354
2399
  return t({
2355
- mapInstance: o,
2400
+ mapInstance: n,
2356
2401
  initMap: v,
2357
- pointRender: (y, w) => new PointMarkerClass(y, w),
2402
+ pointRender: (y, L) => new PointMarkerClass(y, L),
2358
2403
  renderTrucksMarker,
2359
2404
  renderShip: renderShips,
2360
- renderTrack: (y, w, k) => {
2361
- var M, T;
2362
- currentTrackId.value = y, showTrackLayer.value = !0, d.value = !0, hiddenAllShips(), (T = (M = largeAmountShipsLayer.value) == null ? void 0 : M.getSource()) == null || T.clear(), renderTrack(y, s.vehicleMode === "ship" ? w.reverse() : w, k, LENGTH_UNIT.NM);
2405
+ renderTrack: (y, L, w) => {
2406
+ var S, T;
2407
+ showDrawLayer.value = !0, currentTrackId.value = y, showTrackLayer.value = !0, d.value = !0, hiddenAllShips(), (T = (S = largeAmountShipsLayer.value) == null ? void 0 : S.getSource()) == null || T.clear(), renderTrack(y, s.vehicleMode === "ship" ? L.reverse() : L, w, LENGTH_UNIT.NM);
2363
2408
  },
2364
2409
  findTruck,
2365
2410
  removeTruckIcon,
2366
2411
  clearAllTruck,
2367
- closeTrack: () => {
2368
- var y, w;
2369
- showTrackLayer.value = !1, (y = shipTrackVectorLayer.value) == null || y.setVisible(!1), (w = selectShipsLayer.value) == null || w.setVisible(!0), d.value = !1, L(m.value < mapZoom.shipGreenDotMax), allTracks.value = [], stopAnimation();
2412
+ closeTrack: (y = !1) => {
2413
+ var L, w, S;
2414
+ showDrawLayer.value = !1, showTrackLayer.value = !1, (L = shipTrackVectorLayer.value) == null || L.setVisible(!1), (w = selectShipsLayer.value) == null || w.setVisible(!0), d.value = !1, k(m.value < mapZoom.shipGreenDotMax), y && (allTracks.value = [], (S = trackLineVectorSource.value) == null || S.clear()), stopAnimation();
2370
2415
  },
2371
2416
  closeTruckTrack: () => {
2372
- var y, w;
2373
- showTrackLayer.value = !1, (y = shipTrackVectorLayer.value) == null || y.setVisible(!1), (w = selectShipsLayer.value) == null || w.setVisible(!0), stopAnimation();
2417
+ var y, L;
2418
+ showTrackLayer.value = !1, (y = shipTrackVectorLayer.value) == null || y.setVisible(!1), (L = selectShipsLayer.value) == null || L.setVisible(!0), stopAnimation();
2374
2419
  },
2375
2420
  resetTrackView,
2376
2421
  playTrack,
2377
2422
  clearSelectFeature,
2378
2423
  findShip,
2379
- focusShip: (y, w, k = !0) => {
2380
- var M, T;
2381
- hiddenOrther.value = k, (M = shipsLayer.value) == null || M.setVisible(!k), (T = largeAmountShipsLayer.value) == null || T.setVisible(!1), findShip(y, w);
2424
+ focusShip: (y, L, w = !0) => {
2425
+ var S, T;
2426
+ hiddenOrther.value = w, (S = shipsLayer.value) == null || S.setVisible(!w), w || rerenderShip(), (T = largeAmountShipsLayer.value) == null || T.setVisible(!1), findShip(y, L);
2382
2427
  },
2383
2428
  clearShipData,
2384
2429
  showTracks,
2385
2430
  removeAllTrackLayer,
2386
2431
  switchFilterItem,
2387
2432
  rerenderShip,
2388
- switchGreenDot: () => L(!1),
2433
+ switchGreenDot: () => k(!1),
2389
2434
  zoomTruckIcon,
2390
- renderTruckTrack: (y, w, k) => {
2391
- showTrackLayer.value = !0, renderTrack(y, w, k, LENGTH_UNIT.KM, "truck");
2435
+ renderTruckTrack: (y, L, w) => {
2436
+ showTrackLayer.value = !0, renderTrack(y, L, w, LENGTH_UNIT.KM, "truck");
2392
2437
  },
2393
2438
  drawCustomContent,
2394
2439
  removerLayer: removeShipTrackLineFeatureByIndex,
@@ -2398,22 +2443,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2398
2443
  },
2399
2444
  getZoomAndCenter: () => {
2400
2445
  var T;
2401
- const y = (T = o.value) == null ? void 0 : T.getView();
2446
+ const y = (T = n.value) == null ? void 0 : T.getView();
2402
2447
  if (!y) return null;
2403
- const w = Math.round(Number(y.getZoom())), { lon: k, lat: M } = transformUtils.mercatorToLonLat(y.getCenter());
2404
- return { zoom: w, center: [k, M] };
2448
+ const L = Math.round(Number(y.getZoom())), { lon: w, lat: S } = transformUtils.mercatorToLonLat(y.getCenter());
2449
+ return { zoom: L, center: [w, S] };
2405
2450
  },
2406
2451
  setCenter: (y) => {
2407
- var M;
2408
- const w = (M = o.value) == null ? void 0 : M.getView();
2409
- if (!w) return null;
2410
- const k = new Point(y);
2411
- w.setCenter(transform(k.getCoordinates(), projection.data, projection.mercator));
2452
+ var S;
2453
+ const L = (S = n.value) == null ? void 0 : S.getView();
2454
+ if (!L) return null;
2455
+ const w = new Point(y);
2456
+ L.setCenter(transform(w.getCoordinates(), projection.data, projection.mercator));
2412
2457
  },
2458
+ deleteLabelFromArray: deleteLabelFromArrayById,
2413
2459
  drawPolygonTool,
2414
2460
  setMapInstance: g,
2415
2461
  store: {
2416
- getShowMeasure: getShowMeasure()
2462
+ showDrawLayer: () => showDrawLayer.value
2417
2463
  },
2418
2464
  config: {
2419
2465
  mapZoom,
@@ -2423,12 +2469,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2423
2469
  transform: transformUtils,
2424
2470
  format: formatUtils
2425
2471
  }
2426
- }), (y, w) => (openBlock(), createElementBlock("div", {
2472
+ }), (y, L) => (openBlock(), createElementBlock("div", {
2427
2473
  class: "map-page map-container",
2428
2474
  ref_key: "pageRef",
2429
- ref: r
2475
+ ref: l
2430
2476
  }, [
2431
- w[0] || (w[0] = createElementVNode("div", {
2477
+ L[0] || (L[0] = createElementVNode("div", {
2432
2478
  id: "map",
2433
2479
  class: "map"
2434
2480
  }, null, -1)),
@@ -2438,9 +2484,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2438
2484
  "view-mode": y.viewMode,
2439
2485
  "disable-green-dot": d.value,
2440
2486
  "show-track-layer": unref(showTrackLayer),
2441
- "map-tile-mode": S.value,
2442
- onSwitchGreenDot: L,
2443
- onSwitchMapTile: I
2487
+ "map-tile-mode": M.value,
2488
+ onSwitchGreenDot: k,
2489
+ onSwitchMapTile: b
2444
2490
  }, {
2445
2491
  toolPanel: withCtx(() => [
2446
2492
  renderSlot(y.$slots, "toolPanel", {}, void 0, !0)
@@ -2450,20 +2496,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2450
2496
  y.viewMode !== "WxMiniprogram" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
2451
2497
  createVNode(ScaleLine, {
2452
2498
  ref_key: "scaleLineControl",
2453
- ref: i
2499
+ ref: r
2454
2500
  }, null, 512),
2455
2501
  createVNode(ZoomControl, {
2456
2502
  ref_key: "zoomControl",
2457
- ref: l
2503
+ ref: i
2458
2504
  }, null, 512)
2459
2505
  ], 64)) : createCommentVNode("", !0),
2460
2506
  createVNode(Copyright, {
2461
2507
  type: y.logoType,
2462
- "map-tile": S.value
2508
+ "map-tile": M.value
2463
2509
  }, null, 8, ["type", "map-tile"])
2464
2510
  ], 512));
2465
2511
  }
2466
- }), Map = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b6c57705"]]), ZhMap = withInstall(Map);
2512
+ }), Map = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6751c660"]]), ZhMap = withInstall(Map);
2467
2513
  export {
2468
2514
  BaseMapType as B,
2469
2515
  CDN_URL as C,