zhihao-ui 1.2.26 → 1.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/es/{BaseInfo-DCB7xgRw.js → BaseInfo-XETJaruy.js} +1 -1
  2. package/dist/es/{Button-Va8xfPJd.js → Button-CzjgaPIL.js} +2 -2
  3. package/dist/es/{DatePicker-BrD1XS6-.js → DatePicker-DNgii92T.js} +2 -2
  4. package/dist/es/{DetailHeader-C13bJw_K.js → DetailHeader-C7L01g9Z.js} +3 -3
  5. package/dist/es/{DetailSubTitle-BgbefcLD.js → DetailSubTitle-ChWfR3qA.js} +2 -2
  6. package/dist/es/{Dialog-D1K_vH8I.js → Dialog-Cky8TKRM.js} +3 -3
  7. package/dist/es/{DiyDataTable-Chu357SY.js → DiyDataTable-D1s7-cdV.js} +4 -4
  8. package/dist/es/{EditInfoPair-XiseN2F2.js → EditInfoPair-C0EG8kUd.js} +3 -3
  9. package/dist/es/{FileWrapper-CAwHicjK.js → FileWrapper-CmvheBNp.js} +4 -4
  10. package/dist/es/{Grid-CshEwvAH.js → Grid-CfJ_U3gi.js} +1 -1
  11. package/dist/es/{InfoPair-DhVT8u-f.js → InfoPair-JA1pAAyP.js} +3 -3
  12. package/dist/es/{Input-CeiPnMtt.js → Input-12ajHBoj.js} +3 -3
  13. package/dist/es/{Loading-bv2DpqBO.js → Loading-CHji9tKE.js} +2 -2
  14. package/dist/es/{Map-DhceUygQ.js → Map-Bq9kPMot.js} +761 -510
  15. package/dist/es/{MessageBox-2Vpy3Mva.js → MessageBox-1NCCwju7.js} +2 -2
  16. package/dist/es/{MoneyInput-Deg1aj66.js → MoneyInput-PI2K9BeH.js} +9 -9
  17. package/dist/es/{PageHeadPanel-BWjWkx8n.js → PageHeadPanel-CBDItYUC.js} +2 -2
  18. package/dist/es/{Table-9BngZpmt.js → Table-BBWU5wYF.js} +5 -5
  19. package/dist/es/{ToolTips-Bw2lHQxC.js → ToolTips-BBCd543g.js} +3 -3
  20. package/dist/es/index.js +61 -50
  21. package/dist/es/{utils-D-zYpBSZ.js → utils-BIGjF-zg.js} +3 -3
  22. package/dist/es/{vendor-gTOtiVzA.js → vendor-BhAIOWbw.js} +39 -38
  23. package/dist/index.css +1 -1
  24. package/dist/types/components/Map/enum/ship.d.ts +40 -0
  25. package/dist/types/components/Map/index.d.ts +26 -24
  26. package/dist/types/components/Map/interface/entity/point.d.ts +10 -0
  27. package/dist/types/components/Map/interface/entity/render.d.ts +2 -0
  28. package/dist/types/components/Map/interface/entity/shipInfoVo.d.ts +2 -0
  29. package/dist/types/components/Map/interface/entity/shipMapData.d.ts +2 -1
  30. package/dist/types/components/Map/render/canvasRender/renderPointStyle.d.ts +8 -0
  31. package/dist/types/components/Map/render/renderPoint.d.ts +80 -0
  32. package/dist/umd/index.css +1 -1
  33. package/dist/umd/index.umd.cjs +47 -11
  34. package/package.json +1 -1
@@ -1,114 +1,117 @@
1
- var B = Object.defineProperty;
2
- var R = (e, t, o) => t in e ? B(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o;
3
- var I = (e, t, o) => R(e, typeof t != "symbol" ? t + "" : t, o);
1
+ var R = Object.defineProperty;
2
+ var A = (e, t, n) => t in e ? R(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
+ var S = (e, t, n) => A(e, typeof t != "symbol" ? t + "" : t, n);
4
+ import { n as getArea, o as getLength, V as VectorSource, p as VectorLayer, S as Style, C as CircleStyle, F as Fill, q as Stroke, D as Draw, O as Overlay, u as unByKey, r as ElSelect, s as ElOption, T as Text, t as fromLonLat, v as transformExtent, h as hooks, L as LineString, w as Feature, P as Point, x as Polyline, y as getVectorContext, e as cloneDeep, G as GeoJSON, W as WebGLPointsLayer, z as Circle, A as transform, B as buffer, H as ScaleLine$1, I as Icon, J as Translate, K as toLonLat, M as MultiPoint, N as getCenter, Q as TileLayer, X as XYZ, R as Map$1, U as View } from "./vendor-BhAIOWbw.js";
4
5
  import { defineComponent, inject, useModel, ref, watch, openBlock, createElementBlock, createElementVNode, createVNode, unref, withCtx, Fragment, renderList, toDisplayString, createCommentVNode, mergeModels, nextTick, onMounted, normalizeClass, renderSlot, createBlock, provide } from "vue";
5
- import { n as getArea, o as getLength, V as VectorSource, p as VectorLayer, S as Style, C as CircleStyle, F as Fill, q as Stroke, D as Draw, O as Overlay, u as unByKey, r as ElSelect, s as ElOption, T as Text, t as fromLonLat, v as transformExtent, h as hooks, L as LineString, w as Feature, P as Point, x as Polyline, y as getVectorContext, e as cloneDeep, G as GeoJSON, W as WebGLPointsLayer, z as transform, A as buffer, B as ScaleLine$1, I as Icon, H as Translate, J as toLonLat, M as MultiPoint, K as getCenter, N as TileLayer, X as XYZ, Q as Map$1, R as View } from "./vendor-gTOtiVzA.js";
6
- import { _ as _export_sfc } from "./Button-Va8xfPJd.js";
7
- import { w as withInstall } from "./utils-D-zYpBSZ.js";
8
- var BaseMapType = /* @__PURE__ */ ((e) => (e[e.vector = 0] = "vector", e[e.satellite = 1] = "satellite", e))(BaseMapType || {}), 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 || {});
6
+ import { _ as _export_sfc } from "./Button-CzjgaPIL.js";
7
+ import { w as withInstall } from "./utils-BIGjF-zg.js";
8
+ var BaseMapType = /* @__PURE__ */ ((e) => (e[e.vector = 0] = "vector", e[e.satellite = 1] = "satellite", e))(BaseMapType || {}), 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 || {});
9
9
  class ShipMapData {
10
- constructor(t, o, n, r, l, i, s, c, d, m, u, f, p, y, h, g, L, T, b, C, F, v, S) {
11
- I(this, "id");
10
+ constructor(t, n, o, r, l, i, s, c, d, m, u, f, p, y, h, g, M, T, b, C, x, v, w, k) {
11
+ S(this, "id");
12
12
  // mmsi
13
- I(this, "mmsi");
13
+ S(this, "mmsi");
14
14
  // 船舶三角形填充色
15
- I(this, "fill");
15
+ S(this, "fill");
16
16
  // 船类型 "7": "货船",
17
- I(this, "shipType");
17
+ S(this, "shipType");
18
18
  // 船名
19
- I(this, "name");
19
+ S(this, "name");
20
20
  // 长度
21
- I(this, "length");
21
+ S(this, "length");
22
22
  // 宽度
23
- I(this, "breadth");
23
+ S(this, "breadth");
24
24
  // 经度
25
- I(this, "lon");
25
+ S(this, "lon");
26
26
  // 纬度
27
- I(this, "lat");
27
+ S(this, "lat");
28
28
  // 时间
29
- I(this, "createdAt");
29
+ S(this, "createdAt");
30
30
  // 速度
31
- I(this, "speed");
31
+ S(this, "speed");
32
32
  // 来源
33
- I(this, "from");
33
+ S(this, "from");
34
34
  // 船状态 "stop":"静止","sail":"航行","work":"作业","danger":"危险","other":"其他"
35
- I(this, "sailStatus");
35
+ S(this, "sailStatus");
36
36
  // 船艏向
37
- I(this, "hdg");
37
+ S(this, "hdg");
38
38
  // 航迹向
39
- I(this, "cog");
39
+ S(this, "cog");
40
40
  // 设备定位类型
41
- I(this, "posType");
42
- I(this, "type");
41
+ S(this, "posType");
42
+ S(this, "type");
43
43
  // 航向角度
44
- I(this, "angle");
44
+ S(this, "angle");
45
45
  // 左侧是否显示色块
46
- I(this, "leftIconColor");
47
- I(this, "existDevice");
48
- I(this, "existMobile");
49
- I(this, "existWaterGauge");
50
- I(this, "selected");
51
- this.id = t, this.mmsi = o, this.fill = n, this.shipType = r, this.name = l, this.length = i, this.breadth = s, this.lon = c, this.lat = d, this.createdAt = m, this.speed = u, this.from = f, this.sailStatus = p, this.hdg = y, this.cog = h, this.posType = g, this.type = L, this.angle = T, this.leftIconColor = b, this.existDevice = C, this.existMobile = F, this.existWaterGauge = v, this.selected = S;
46
+ S(this, "leftIconColor");
47
+ S(this, "existDevice");
48
+ S(this, "existMobile");
49
+ S(this, "existWaterGauge");
50
+ S(this, "selected");
51
+ S(this, "blinkColors");
52
+ this.id = t, this.mmsi = n, this.fill = o, this.shipType = r, this.name = l, this.length = i, this.breadth = s, this.lon = c, this.lat = d, this.createdAt = m, this.speed = u, this.from = f, this.sailStatus = p, this.hdg = y, this.cog = h, this.posType = g, this.type = M, this.angle = T, this.leftIconColor = b, this.existDevice = C, this.existMobile = x, this.existWaterGauge = v, this.selected = w, this.blinkColors = k;
52
53
  }
53
54
  }
54
55
  const formatLength = function(e, t) {
55
- const n = getLength(e);
56
+ const o = getLength(e);
56
57
  let r = "";
57
58
  switch (t) {
58
59
  case LENGTH_UNIT.M:
59
- r = Math.round(n * 100) / 100 + " m";
60
+ r = Math.round(o * 100) / 100 + " m";
60
61
  break;
61
62
  case LENGTH_UNIT.KM:
62
- r = Math.round(n / 1e3 * 100) / 100 + " km";
63
+ r = Math.round(o / 1e3 * 100) / 100 + " km";
63
64
  break;
64
65
  case LENGTH_UNIT.NM:
65
- r = (Math.round(n / 1e3 * 100) / 100 / 1.852).toFixed(2) + " nm";
66
+ r = (Math.round(o / 1e3 * 100) / 100 / 1.852).toFixed(2) + " nm";
66
67
  break;
67
68
  }
68
69
  return r;
69
70
  }, convertSixHundredThousandToLatLng = function(e, t) {
70
- const o = Number(t) / 6e5;
71
- return [Number(e) / 6e5, o];
71
+ const n = Number(t) / 6e5;
72
+ return [Number(e) / 6e5, n];
72
73
  }, formatArea = (e, t) => {
73
- const n = getArea(e);
74
+ const o = getArea(e);
74
75
  let r;
75
76
  switch (t) {
76
77
  case LENGTH_UNIT.KM:
77
- n > 1e4 ? r = Math.round(n / 1e6 * 100) / 100 + " km<sup>2</sup>" : r = Math.round(n * 100) / 100 + " m<sup>2</sup>";
78
+ o > 1e4 ? r = Math.round(o / 1e6 * 100) / 100 + " km<sup>2</sup>" : r = Math.round(o * 100) / 100 + " m<sup>2</sup>";
78
79
  break;
79
80
  case LENGTH_UNIT.NM:
80
81
  const l = Math.pow(1.852, 2);
81
- n > 1e4 ? r = Math.round(n / 1e6 / l * 100) / 100 + " nm<sup>2</sup>" : r = Math.round(n * 100) / 100 + " m<sup>2</sup>";
82
+ o > 1e4 ? r = Math.round(o / 1e6 / l * 100) / 100 + " nm<sup>2</sup>" : r = Math.round(o * 100) / 100 + " m<sup>2</sup>";
82
83
  break;
83
84
  }
84
85
  return r;
85
86
  }, convertShipMapData = (e) => {
86
- const t = (o) => new ShipMapData(
87
- o.id,
88
- o.id,
87
+ const t = (n) => new ShipMapData(
88
+ n.id,
89
+ n.id,
89
90
  // 船舶三角形填充色
90
- o.fill || "#04C900",
91
+ n.fill || "#04C900",
91
92
  "70",
92
- (o.cnname || o.enname || o.name) + `${o.existName ? o.existName : ""}`,
93
- o.len || o.length,
94
- o.wid || o.breadth,
95
- o.lon,
96
- o.lat,
93
+ (n.cnname || n.enname || n.name) + `${n.existName ? n.existName : ""}`,
94
+ n.len || n.length,
95
+ n.wid || n.breadth,
96
+ n.lon,
97
+ n.lat,
97
98
  (/* @__PURE__ */ new Date()).getTime(),
98
- o.spd,
99
- o.from,
100
- o.status,
101
- Number(o.hdg),
102
- o.cog,
103
- Number(o.postype),
99
+ n.spd,
100
+ n.from,
101
+ n.status,
102
+ Number(n.hdg),
103
+ n.cog,
104
+ Number(n.postype),
104
105
  "other",
105
- o.cog,
106
- o.leftIconColor,
107
- o.existDevice,
108
- o.existMobile,
109
- o.existWaterGauge
106
+ n.cog,
107
+ n.leftIconColor,
108
+ n.existDevice,
109
+ n.existMobile,
110
+ n.existWaterGauge,
111
+ n.selected,
112
+ n.blinkColors
110
113
  );
111
- return Array.isArray(e) ? e.map((o) => t(o)) : t(e);
114
+ return Array.isArray(e) ? e.map((n) => t(n)) : t(e);
112
115
  }, formatUtils = {
113
116
  formatLength,
114
117
  convertSixHundredThousandToLatLng,
@@ -125,8 +128,8 @@ const formatLength = function(e, t) {
125
128
  visibleModifiers: {}
126
129
  }),
127
130
  emits: /* @__PURE__ */ mergeModels(["close"], ["update:visible"]),
128
- setup(e, { expose: t, emit: o }) {
129
- const n = inject("mapInstance"), r = o, l = useModel(e, "visible"), i = ref("3"), s = ref([]), c = ref(!1), d = new VectorSource();
131
+ setup(e, { expose: t, emit: n }) {
132
+ const o = inject("mapInstance"), r = n, l = useModel(e, "visible"), i = ref("3"), s = ref([]), c = ref(!1), d = new VectorSource();
130
133
  let m, u, f, p, y;
131
134
  const h = new VectorLayer({
132
135
  source: d,
@@ -137,15 +140,15 @@ const formatLength = function(e, t) {
137
140
  "circle-radius": 7,
138
141
  "circle-fill-color": "#ffcc33"
139
142
  }
140
- }), g = function(k) {
141
- if (k.dragging)
143
+ }), g = function(L) {
144
+ if (L.dragging)
142
145
  return;
143
- let M = "点击选择起点";
144
- m && (M = "单击继续,双击结束"), u && (u.innerHTML = M, f.setPosition(k.coordinate), u.classList.remove("hidden"));
145
- }, L = () => {
146
- n.value && (n.value.on("pointermove", g), n.value.getViewport().addEventListener("mouseout", function() {
147
- var k;
148
- (k = u == null ? void 0 : u.classList) == null || k.add("hidden");
146
+ let I = "点击选择起点";
147
+ m && (I = "单击继续,双击结束"), u && (u.innerHTML = I, f.setPosition(L.coordinate), u.classList.remove("hidden"));
148
+ }, M = () => {
149
+ o.value && (o.value.on("pointermove", g), o.value.getViewport().addEventListener("mouseout", function() {
150
+ var L;
151
+ (L = u == null ? void 0 : u.classList) == null || L.add("hidden");
149
152
  }), c.value = !0);
150
153
  };
151
154
  let T;
@@ -169,88 +172,88 @@ const formatLength = function(e, t) {
169
172
  })
170
173
  });
171
174
  function C() {
172
- var k, M;
173
- if (n.value) {
175
+ var L, I;
176
+ if (o.value) {
174
177
  if (s.value = [], document.querySelectorAll(".ol-tooltip.ol-tooltip-static").forEach((E) => {
175
- var x;
176
- (x = E == null ? void 0 : E.parentNode) == null || x.removeChild(E);
178
+ var F;
179
+ (F = E == null ? void 0 : E.parentNode) == null || F.removeChild(E);
177
180
  }), d.clear(), T) {
178
- const E = n.value.getInteractions().getArray().find((x) => x.ol_uid === T.ol_uid);
179
- E && ((k = n.value) == null || k.removeInteraction(E));
181
+ const E = o.value.getInteractions().getArray().find((F) => F.ol_uid === T.ol_uid);
182
+ E && ((L = o.value) == null || L.removeInteraction(E));
180
183
  }
181
- (M = n.value) == null || M.removeLayer(h), u != null && u.parentNode && u.parentNode.removeChild(u), p != null && p.parentNode && p.parentNode.removeChild(p);
184
+ (I = o.value) == null || I.removeLayer(h), u != null && u.parentNode && u.parentNode.removeChild(u), p != null && p.parentNode && p.parentNode.removeChild(p);
182
185
  }
183
186
  }
184
- function F() {
185
- var M, E;
186
- C(), (M = n.value) == null || M.addLayer(h), T = new Draw({
187
+ function x() {
188
+ var I, E;
189
+ C(), (I = o.value) == null || I.addLayer(h), T = new Draw({
187
190
  source: d,
188
191
  type: "LineString",
189
192
  style: function() {
190
193
  return b;
191
194
  }
192
- }), (E = n.value) == null || E.addInteraction(T), S(), v();
193
- let k;
194
- T.on("drawstart", function(x) {
195
- var N;
196
- m = x.feature;
197
- let P;
198
- k = (N = m.getGeometry()) == null ? void 0 : N.on("change", function(A) {
199
- const $ = A.target;
200
- let _ = formatUtils.formatLength($, Number(i.value));
201
- P = $.getLastCoordinate(), p && _ && (p.innerHTML = _), y.setPosition(P);
195
+ }), (E = o.value) == null || E.addInteraction(T), w(), v();
196
+ let L;
197
+ T.on("drawstart", function(F) {
198
+ var $;
199
+ m = F.feature;
200
+ let N;
201
+ L = ($ = m.getGeometry()) == null ? void 0 : $.on("change", function(D) {
202
+ const P = D.target;
203
+ let B = formatUtils.formatLength(P, Number(i.value));
204
+ N = P.getLastCoordinate(), p && B && (p.innerHTML = B), y.setPosition(N);
202
205
  });
203
206
  }), T.on("drawend", function() {
204
- p && (p.className = "ol-tooltip ol-tooltip-static ol-tooltip-measure"), p != null && p.innerHTML && s.value.push(p == null ? void 0 : p.innerHTML), y.setOffset([0, -7]), m = null, p = null, S(), k && unByKey(k);
207
+ p && (p.className = "ol-tooltip ol-tooltip-static ol-tooltip-measure"), p != null && p.innerHTML && s.value.push(p == null ? void 0 : p.innerHTML), y.setOffset([0, -7]), m = null, p = null, w(), L && unByKey(L);
205
208
  });
206
209
  }
207
210
  function v() {
208
- var k;
211
+ var L;
209
212
  u != null && u.parentNode && u.parentNode.removeChild(u), u = document.createElement("div"), u.className = "ol-tooltip hidden", f = new Overlay({
210
213
  element: u,
211
214
  offset: [15, 0],
212
215
  positioning: "center-left"
213
- }), (k = n.value) == null || k.addOverlay(f);
216
+ }), (L = o.value) == null || L.addOverlay(f);
214
217
  }
215
- function S() {
216
- var k;
218
+ function w() {
219
+ var L;
217
220
  p != null && p.parentNode && p.parentNode.removeChild(p), p = document.createElement("div"), p.className = "ol-tooltip ol-tooltip-measure", y = new Overlay({
218
221
  element: p,
219
222
  offset: [0, -15],
220
223
  positioning: "bottom-center",
221
224
  stopEvent: !1,
222
225
  insertFirst: !1
223
- }), (k = n.value) == null || k.addOverlay(y);
226
+ }), (L = o.value) == null || L.addOverlay(y);
224
227
  }
225
- const w = (k) => {
226
- var x, P;
227
- s.value[k] && s.value.splice(k, 1);
228
- const M = document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");
229
- M[k] && ((P = (x = M[k]) == null ? void 0 : x.parentNode) == null || P.removeChild(M[k]));
228
+ const k = (L) => {
229
+ var F, N;
230
+ s.value[L] && s.value.splice(L, 1);
231
+ const I = document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");
232
+ I[L] && ((N = (F = I[L]) == null ? void 0 : F.parentNode) == null || N.removeChild(I[L]));
230
233
  const E = d.getFeatures();
231
- E[k] && d.removeFeature(E[k]);
234
+ E[L] && d.removeFeature(E[L]);
232
235
  }, V = () => {
233
236
  r("close");
234
237
  };
235
238
  return watch(() => l, () => {
236
- l && !c.value && (L(), F());
239
+ l && !c.value && (M(), x());
237
240
  }, { deep: !0, immediate: !0 }), t({
238
- addInteraction: F,
241
+ addInteraction: x,
239
242
  removeInteraction: C
240
- }), (k, M) => l.value && k.viewMode !== "WxMiniprogram" ? (openBlock(), createElementBlock("div", _hoisted_1$4, [
243
+ }), (L, I) => l.value && L.viewMode !== "WxMiniprogram" ? (openBlock(), createElementBlock("div", _hoisted_1$4, [
241
244
  createElementVNode("div", { class: "header" }, [
242
- M[1] || (M[1] = createElementVNode("div", { class: "title" }, "测量", -1)),
245
+ I[1] || (I[1] = createElementVNode("div", { class: "title" }, "测量", -1)),
243
246
  createElementVNode("i", {
244
247
  onClick: V,
245
248
  class: "map-iconfont icon-close"
246
249
  })
247
250
  ]),
248
251
  createElementVNode("div", _hoisted_2$2, [
249
- M[2] || (M[2] = createElementVNode("div", { class: "tips" }, "在地图上点击多个点测量距离,距离单位", -1)),
252
+ I[2] || (I[2] = createElementVNode("div", { class: "tips" }, "在地图上点击多个点测量距离,距离单位", -1)),
250
253
  createVNode(unref(ElSelect), {
251
254
  class: "select-length-unit",
252
255
  modelValue: i.value,
253
- "onUpdate:modelValue": M[0] || (M[0] = (E) => i.value = E)
256
+ "onUpdate:modelValue": I[0] || (I[0] = (E) => i.value = E)
254
257
  }, {
255
258
  default: withCtx(() => [
256
259
  createVNode(unref(ElOption), {
@@ -270,19 +273,19 @@ const formatLength = function(e, t) {
270
273
  }, 8, ["modelValue"])
271
274
  ]),
272
275
  createElementVNode("div", _hoisted_3$2, [
273
- (openBlock(!0), createElementBlock(Fragment, null, renderList(s.value, (E, x) => (openBlock(), createElementBlock("div", {
276
+ (openBlock(!0), createElementBlock(Fragment, null, renderList(s.value, (E, F) => (openBlock(), createElementBlock("div", {
274
277
  class: "measure-history-item",
275
- key: x
278
+ key: F
276
279
  }, [
277
280
  createElementVNode("div", _hoisted_4, [
278
- M[3] || (M[3] = createElementVNode("i", { class: "map-iconfont icon-line" }, null, -1)),
279
- createElementVNode("span", _hoisted_5, "线段" + toDisplayString(x + 1), 1),
281
+ I[3] || (I[3] = createElementVNode("i", { class: "map-iconfont icon-line" }, null, -1)),
282
+ createElementVNode("span", _hoisted_5, "线段" + toDisplayString(F + 1), 1),
280
283
  createElementVNode("span", _hoisted_6, toDisplayString(E), 1)
281
284
  ]),
282
285
  createElementVNode("div", {
283
286
  class: "delete-button",
284
- onClick: (P) => w(x)
285
- }, M[4] || (M[4] = [
287
+ onClick: (N) => k(F)
288
+ }, I[4] || (I[4] = [
286
289
  createElementVNode("i", { class: "map-iconfont icon-delete" }, null, -1)
287
290
  ]), 8, _hoisted_7)
288
291
  ]))), 128))
@@ -291,13 +294,13 @@ const formatLength = function(e, t) {
291
294
  }
292
295
  }), Measure = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-d566fd81"]]), CDN_URL = "https://static.zhihaoscm.cn/", tiandituKey = "a6e8f78974f2581f2ca00485b40c948f", baseMap = {
293
296
  // 矢量底图
294
- tiandituTile: `http://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,
297
+ tiandituTile: `https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,
295
298
  // 矢量注记
296
- tiandituTileMark: `http://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,
299
+ tiandituTileMark: `https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,
297
300
  // 影像底图
298
- tiandituImgTile: `http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,
301
+ tiandituImgTile: `https://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,
299
302
  // 影像注记
300
- tiandituImgTileMark: `http://t0.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,
303
+ tiandituImgTileMark: `https://t0.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,
301
304
  // 绿点图
302
305
  greenTile: `${CDN_URL}/map/tile/{z}/{x}/{y}.png`
303
306
  }, mapZoom = {
@@ -327,7 +330,7 @@ const formatLength = function(e, t) {
327
330
  data: "EPSG:4326",
328
331
  // 墨卡托投影坐标 渲染坐标
329
332
  mercator: "EPSG:3857"
330
- };
333
+ }, LOG_DATE_FORMAT = "YYYY-MM-DD HH:mm:ss", DEFAULT_VALUE = "--";
331
334
  ref();
332
335
  const shipsLayer = ref(), largeAmountShipsLayer = ref(), selectShipsLayer = ref(), allShips = ref([]), selectSingleShipData = ref();
333
336
  ref();
@@ -340,7 +343,7 @@ function getIconFont(unicode = "") {
340
343
  }
341
344
  const multiplyPixelRatio = (e) => {
342
345
  const t = window.devicePixelRatio || 1;
343
- return e.map((o) => o.map((n) => n * t));
346
+ return e.map((n) => n.map((o) => o * t));
344
347
  }, 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({
345
348
  text: new Text({
346
349
  font: "Normal 14px map-iconfont",
@@ -349,8 +352,8 @@ const multiplyPixelRatio = (e) => {
349
352
  offsetY: -14
350
353
  }),
351
354
  zIndex: 100
352
- }), getRotation = (e, t, o) => {
353
- function n(u) {
355
+ }), getRotation = (e, t, n) => {
356
+ function o(u) {
354
357
  return 180 * (u % (2 * Math.PI)) / Math.PI;
355
358
  }
356
359
  function r(u) {
@@ -371,11 +374,11 @@ const multiplyPixelRatio = (e) => {
371
374
  }
372
375
  function i(u, f, p = {}) {
373
376
  if (p.final)
374
- return function(v, S) {
375
- return (i(S, v) + 180) % 360;
377
+ return function(v, w) {
378
+ return (i(w, v) + 180) % 360;
376
379
  }(u, f);
377
- const y = l(u), h = l(f), g = r(y[0]), L = r(h[0]), T = r(y[1]), b = r(h[1]), C = Math.sin(L - g) * Math.cos(b), F = Math.cos(T) * Math.sin(b) - Math.sin(T) * Math.cos(b) * Math.cos(L - g);
378
- return n(Math.atan2(C, F));
380
+ const y = l(u), h = l(f), g = r(y[0]), M = r(h[0]), T = r(y[1]), b = r(h[1]), C = Math.sin(M - g) * Math.cos(b), x = Math.cos(T) * Math.sin(b) - Math.sin(T) * Math.cos(b) * Math.cos(M - g);
381
+ return o(Math.atan2(C, x));
379
382
  }
380
383
  function s(u) {
381
384
  return !isNaN(u) && u !== null && !Array.isArray(u);
@@ -387,100 +390,100 @@ const multiplyPixelRatio = (e) => {
387
390
  const y = { type: "Feature" };
388
391
  return p.id !== void 0 && (y.id = p.id), p.bbox && (y.bbox = p.bbox), y.properties = f || {}, y.geometry = u, y;
389
392
  }
390
- const m = i(c(e), c(t), o);
393
+ const m = i(c(e), c(t), n);
391
394
  return m < 0 ? 360 + m : m;
392
- }, labelAlpha = 0.8, labelFont = "500 12px Arial", labelOutSize = 2, labelHeight = 10, fillRectRadius = (e, t, o, n, r, l, i = 4) => {
393
- e.beginPath(), e.moveTo(t + i, o), e.arcTo(t + n, o, t + n, o + i, i), e.arcTo(t + n, o + r, t + n - i, o + r, i), e.arcTo(t, o + r, t, o + r - i, i), e.arcTo(t, o, t + i, o, i), e.closePath(), e.fillStyle = l, e.fill();
395
+ }, labelAlpha = 0.8, labelFont = "500 12px Arial", labelOutSize = 2, labelHeight = 10, fillRectRadius = (e, t, n, o, r, l, i = 4) => {
396
+ e.beginPath(), e.moveTo(t + i, n), e.arcTo(t + o, n, t + o, n + i, i), e.arcTo(t + o, n + r, t + o - i, n + r, i), e.arcTo(t, n + r, t, n + r - i, i), e.arcTo(t, n, t + i, n, i), e.closePath(), e.fillStyle = l, e.fill();
394
397
  }, getPixelFromCoordinate = (e) => {
395
398
  if (!e || e.length === 0)
396
399
  throw new Error("Points array is empty or invalid.");
397
- let t = 1 / 0, o = 1 / 0, n = -1 / 0, r = -1 / 0;
400
+ let t = 1 / 0, n = 1 / 0, o = -1 / 0, r = -1 / 0;
398
401
  for (const [l, i] of e)
399
- l < t && (t = l), i < o && (o = i), l > n && (n = l), i > r && (r = i);
400
- return [t, o, n, r];
402
+ l < t && (t = l), i < n && (n = i), l > o && (o = l), i > r && (r = i);
403
+ return [t, n, o, r];
401
404
  }, calculatePolygonCentroid = (e) => {
402
405
  if (!Array.isArray(e) || e.length < 3)
403
406
  throw new Error("A polygon must have at least 3 coordinates.");
404
- let t = 0, o = 0, n = 0;
407
+ let t = 0, n = 0, o = 0;
405
408
  const r = e.length;
406
409
  for (let s = 0; s < r - 1; s++) {
407
410
  const [c, d] = e[s], [m, u] = e[s + 1], f = c * u - m * d;
408
- n += f, t += (c + m) * f, o += (d + u) * f;
411
+ o += f, t += (c + m) * f, n += (d + u) * f;
409
412
  }
410
- if (n *= 0.5, n === 0)
413
+ if (o *= 0.5, o === 0)
411
414
  throw new Error("多边形面积为零");
412
- const l = t / (6 * n), i = o / (6 * n);
415
+ const l = t / (6 * o), i = n / (6 * o);
413
416
  return [l, i];
414
417
  }, rotateShapeModel = (e, t) => {
415
- const [o, n] = calculatePolygonCentroid(e), r = t * Math.PI / 180, l = Math.cos(r), i = Math.sin(r);
418
+ const [n, o] = calculatePolygonCentroid(e), r = t * Math.PI / 180, l = Math.cos(r), i = Math.sin(r);
416
419
  return e.map(([s, c]) => {
417
- const d = s - o, m = c - n, u = d * l - m * i + o, f = d * i + m * l + n;
420
+ const d = s - n, m = c - o, u = d * l - m * i + n, f = d * i + m * l + o;
418
421
  return [u, f];
419
422
  });
420
423
  }, getTopLeftPoint = (e) => [e[0], e[3]], getBottomLeftPoint = (e) => [e[2], e[3]], getBottomRightPoint = (e) => [e[2], e[1]], getTopRighttPoint = (e) => [e[0], e[1]];
421
- function calculateBounds(e, t, o, n, r) {
424
+ function calculateBounds(e, t, n, o, r) {
422
425
  let l, i, s, c, d = e[0], m = e[1];
423
426
  switch (t) {
424
427
  case 0:
425
- l = d + r, i = l + o, c = m - r, s = c - n;
428
+ l = d + r, i = l + n, c = m - r, s = c - o;
426
429
  break;
427
430
  case 1:
428
- l = d + r, i = l + o, c = m + n / 2, s = c - n;
431
+ l = d + r, i = l + n, c = m + o / 2, s = c - o;
429
432
  break;
430
433
  case 2:
431
- l = d + r, i = l + o, c = m + r + n, s = c - n;
434
+ l = d + r, i = l + n, c = m + r + o, s = c - o;
432
435
  break;
433
436
  case 3:
434
- l = d - o / 2, i = l + o, c = m + r + n, s = c - n;
437
+ l = d - n / 2, i = l + n, c = m + r + o, s = c - o;
435
438
  break;
436
439
  case 4:
437
- i = d, l = i - o, c = m + r + n, s = c - n;
440
+ i = d, l = i - n, c = m + r + o, s = c - o;
438
441
  break;
439
442
  case 5:
440
- i = d - r, l = i - o, c = m + n / 2, s = c - n;
443
+ i = d - r, l = i - n, c = m + o / 2, s = c - o;
441
444
  break;
442
445
  case 6:
443
- i = d, l = i - o, c = m - r, s = c - n;
446
+ i = d, l = i - n, c = m - r, s = c - o;
444
447
  break;
445
448
  case 7:
446
- l = d - o / 2, i = l + o, c = m - r, s = c - n;
449
+ l = d - n / 2, i = l + n, c = m - r, s = c - o;
447
450
  }
448
451
  if (!(!l || !s || !i || !c))
449
452
  return [Math.min(l, i), Math.min(s, c), Math.max(l, i), Math.max(s, c) + 1];
450
453
  }
451
- function calculateAnchorPoint(e, t, o = 70, n = 20, r = 20) {
454
+ function calculateAnchorPoint(e, t, n = 70, o = 20, r = 20) {
452
455
  let l = [0, 0];
453
456
  switch (t) {
454
457
  case 0:
455
- l[0] = e[0] + r, l[1] = e[1] - r - n / 2;
458
+ l[0] = e[0] + r, l[1] = e[1] - r - o / 2;
456
459
  break;
457
460
  case 1:
458
461
  l[0] = e[0] + r, l[1] = e[1];
459
462
  break;
460
463
  case 2:
461
- l[0] = e[0] + r, l[1] = e[1] + r + n / 2;
464
+ l[0] = e[0] + r, l[1] = e[1] + r + o / 2;
462
465
  break;
463
466
  case 3:
464
- l[0] = e[0], l[1] = e[1] + r + n / 4;
467
+ l[0] = e[0], l[1] = e[1] + r + o / 4;
465
468
  break;
466
469
  case 4:
467
- l[0] = Math.max(e[0] - r, e[0] - o / 2), l[1] = e[1] + r + n / 4;
470
+ l[0] = Math.max(e[0] - r, e[0] - n / 2), l[1] = e[1] + r + o / 4;
468
471
  break;
469
472
  case 5:
470
473
  l[0] = e[0] - r, l[1] = e[1];
471
474
  break;
472
475
  case 6:
473
- l[0] = Math.max(e[0] - r, e[0] - o / 2), l[1] = e[1] - r - n / 4;
476
+ l[0] = Math.max(e[0] - r, e[0] - n / 2), l[1] = e[1] - r - o / 4;
474
477
  break;
475
478
  case 7:
476
- l[0] = e[0], l[1] = e[1] - r - n / 4;
479
+ l[0] = e[0], l[1] = e[1] - r - o / 4;
477
480
  }
478
481
  return l;
479
482
  }
480
- function drawLabelBody(e, t, o) {
483
+ function drawLabelBody(e, t, n) {
481
484
  if (!e) return;
482
485
  const {
483
- font: n,
486
+ font: o,
484
487
  labelOutSize: r = 2,
485
488
  labelHeight: l,
486
489
  center: i,
@@ -489,41 +492,41 @@ function drawLabelBody(e, t, o) {
489
492
  shipColor: d,
490
493
  lineLength: m = 20,
491
494
  selected: u
492
- } = o;
493
- e.save(), n && (e.font = n);
495
+ } = n;
496
+ e.save(), o && (e.font = o);
494
497
  let f = e.measureText(s).width + 2 * r;
495
498
  (c || d) && (f += l + 4 * r), e.restore();
496
499
  let p, y = 20, h = -1, g = l + 3 * r;
497
500
  if (m)
498
- for (let L = 0; L < 8; L++) {
499
- p = calculateBounds(i, L, f, g, m);
501
+ for (let M = 0; M < 8; M++) {
502
+ p = calculateBounds(i, M, f, g, m);
500
503
  let T = !1;
501
504
  for (let b = 0; b < t.length; ++b) {
502
- let C = t[b].bounds, F = [
505
+ let C = t[b].bounds, x = [
503
506
  C[0] - y,
504
507
  C[1] - y,
505
508
  C[2] + y,
506
509
  C[3] + y
507
510
  ];
508
- if (p && isOverlapping(p, F)) {
511
+ if (p && isOverlapping(p, x)) {
509
512
  T = !0;
510
513
  break;
511
514
  }
512
515
  }
513
516
  if (!T) {
514
- h = L;
517
+ h = M;
515
518
  break;
516
519
  }
517
520
  }
518
521
  else
519
522
  h = 0, p = calculateBounds(i, h, f, g, m);
520
523
  if (u && h === -1 && (h = 0), p && h > -1) {
521
- let L = getBottomLeftPoint(p), T = getTopRighttPoint(p);
524
+ let M = getBottomLeftPoint(p), T = getTopRighttPoint(p);
522
525
  return {
523
526
  center: i,
524
527
  x: calculateAnchorPoint(i, h, f, g, m),
525
528
  l: T,
526
- r: L,
529
+ r: M,
527
530
  bounds: p,
528
531
  position: h,
529
532
  name: s
@@ -531,29 +534,46 @@ function drawLabelBody(e, t, o) {
531
534
  } else
532
535
  return null;
533
536
  }
537
+ let intervalId;
534
538
  const drawText = (e, t) => {
535
539
  if (!e) return;
536
- const { center: o, text: n, textColor: r, leftIcon: l, rightIcons: i, font: s } = t;
540
+ const { center: n, text: o, textColor: r, leftIcon: l, rightIcons: i, font: s } = t;
537
541
  e.save(), e.setTransform(1, 0, 0, 1, 0, 0);
538
- let [c, d] = o;
542
+ let [c, d] = n;
539
543
  if (l) {
540
- e.font = "22px map-iconfont";
541
- let m = getIconFont(l.icon);
542
- e.fillStyle = l.color, e.fillText(m, c + labelOutSize - 4, d + 4), c += 22;
544
+ if (t.blinkColors && t.blinkColors.length > 0) {
545
+ let m = Date.now(), u = 0;
546
+ const f = [];
547
+ t.blinkColors.forEach((p) => {
548
+ f.push(p), f.push("white");
549
+ }), intervalId && clearInterval(intervalId), intervalId = setInterval(() => {
550
+ const p = Date.now();
551
+ if (p - m >= 500) {
552
+ u = (u + 1) % f.length, m = p, e.font = "22px map-iconfont";
553
+ let y = getIconFont(l.icon);
554
+ e.fillStyle = f[u], e.fillText(y, c - 22 + labelOutSize - 4, d + 4);
555
+ }
556
+ }, 10);
557
+ } else {
558
+ e.font = "22px map-iconfont";
559
+ let m = getIconFont(l.icon);
560
+ e.fillStyle = l.color, e.fillText(m, c + labelOutSize - 4, d + 4);
561
+ }
562
+ c += 22;
543
563
  }
544
564
  if (i != null && i.length) {
545
565
  e.font = "12px map-iconfont", e.fillStyle = "#3370ff";
546
- let m = e.measureText(n).width + 6;
566
+ let m = e.measureText(o).width + 6;
547
567
  i.forEach((u, f) => {
548
568
  let p = getIconFont(u), y = 20 * f;
549
569
  e.fillText(p, c + m + y, d);
550
570
  });
551
571
  }
552
- e.font = s || labelFont, e.fillStyle = r, e.fillText(n, c, d), e.restore();
572
+ e.font = s || labelFont, e.fillStyle = r, e.fillText(o, c, d), e.restore();
553
573
  }, drawPolygon = (e, t) => {
554
574
  let {
555
- points: o,
556
- strokeColor: n,
575
+ points: n,
576
+ strokeColor: o,
557
577
  fillColor: r,
558
578
  shouldClosePath: l,
559
579
  translation: i,
@@ -562,29 +582,29 @@ const drawText = (e, t) => {
562
582
  scale: d,
563
583
  globalAlpha: m
564
584
  } = t;
565
- if (m || (m = 1), o && e) {
566
- e.save(), e.beginPath(), s && s !== 0 && c == null && e.rotate(s), i && e.translate(i[0], i[1]), s && (c != null && c.length) && e.rotate(s), d && e.scale(d, d), e.moveTo(o[0][0], o[0][1]);
567
- for (let u = 1; u < o.length; u++)
568
- e.lineTo(o[u][0], o[u][1]);
569
- l && e.closePath(), n && (e.strokeStyle = n, e.stroke()), r && l && (m && (e.globalAlpha = m), e.fillStyle = r, e.fill()), e.restore();
585
+ if (m || (m = 1), n && e) {
586
+ e.save(), e.beginPath(), s && s !== 0 && c == null && e.rotate(s), i && e.translate(i[0], i[1]), s && (c != null && c.length) && e.rotate(s), d && e.scale(d, d), e.moveTo(n[0][0], n[0][1]);
587
+ for (let u = 1; u < n.length; u++)
588
+ e.lineTo(n[u][0], n[u][1]);
589
+ l && e.closePath(), o && (e.strokeStyle = o, e.stroke()), r && l && (m && (e.globalAlpha = m), e.fillStyle = r, e.fill()), e.restore();
570
590
  }
571
- }, drawLabel = (e, t, o) => {
572
- const { center: n, text: r, color: l, textColor: i, bgColor: s, leftIcon: c, rightIcons: d, type: m } = t;
573
- if (n && r) {
591
+ }, drawLabel = (e, t, n) => {
592
+ const { center: o, text: r, color: l, textColor: i, bgColor: s, leftIcon: c, rightIcons: d, type: m } = t;
593
+ if (o && r) {
574
594
  let u = {
575
595
  font: labelFont,
576
596
  labelOutSize,
577
597
  labelHeight,
578
- center: n,
598
+ center: o,
579
599
  text: r,
580
600
  leftIcon: c,
581
601
  selected: t.selected
582
- }, f = drawLabelBody(e, o, u);
602
+ }, f = drawLabelBody(e, n, u);
583
603
  if (f) {
584
604
  const { x: p, bounds: y, l: h } = f;
585
605
  let g = [getTopLeftPoint(y), getBottomLeftPoint(y), getBottomRightPoint(y), getTopRighttPoint(y)];
586
- o.find((v) => v.name === r) || o.push(f), drawPolygon(e, {
587
- points: [n, p],
606
+ n.find((v) => v.name === r) || n.push(f), drawPolygon(e, {
607
+ points: [o, p],
588
608
  strokeColor: l,
589
609
  fillColor: "#000",
590
610
  shouldClosePath: !0,
@@ -601,48 +621,49 @@ const drawText = (e, t) => {
601
621
  fillColor: s,
602
622
  shouldClosePath: !0
603
623
  });
604
- const [b, C] = h, F = {
624
+ const [b, C] = h, x = {
605
625
  center: [b, C + labelOutSize + labelHeight + 1],
606
626
  text: r,
607
627
  textColor: i,
608
628
  leftIcon: c,
609
- rightIcons: d
629
+ rightIcons: d,
630
+ blinkColors: t.blinkColors
610
631
  };
611
- drawText(e, F);
632
+ drawText(e, x);
612
633
  }
613
634
  }
614
635
  return null;
615
636
  }, PI = Math.PI, a = 6378245, ee = 0.006693421622965943;
616
637
  function transformLat(e, t) {
617
- let o = -100 + 2 * e + 3 * t + 0.2 * t * t + 0.1 * e * t + 0.2 * Math.sqrt(Math.abs(e));
618
- 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;
638
+ let n = -100 + 2 * e + 3 * t + 0.2 * t * t + 0.1 * e * t + 0.2 * Math.sqrt(Math.abs(e));
639
+ 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;
619
640
  }
620
641
  function transformLng(e, t) {
621
- let o = 300 + e + 2 * t + 0.1 * e * e + 0.1 * e * t + 0.1 * Math.sqrt(Math.abs(e));
622
- 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;
642
+ let n = 300 + e + 2 * t + 0.1 * e * e + 0.1 * e * t + 0.1 * Math.sqrt(Math.abs(e));
643
+ 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;
623
644
  }
624
645
  function outOfChina(e, t) {
625
646
  return !(e > 73.66 && e < 135.05 && t > 3.86 && t < 53.55);
626
647
  }
627
648
  function gcj02ToWgs84(e) {
628
- const [t, o] = e.split(",").map(Number);
629
- if (outOfChina(t, o))
630
- return `${t.toFixed(6)}, ${o.toFixed(6)}`;
649
+ const [t, n] = e.split(",").map(Number);
650
+ if (outOfChina(t, n))
651
+ return `${t.toFixed(6)}, ${n.toFixed(6)}`;
631
652
  {
632
- let n = transformLat(t - 105, o - 35), r = transformLng(t - 105, o - 35), l = o / 180 * PI, i = Math.sin(l);
653
+ let o = transformLat(t - 105, n - 35), r = transformLng(t - 105, n - 35), l = n / 180 * PI, i = Math.sin(l);
633
654
  i = 1 - ee * i * i;
634
655
  let s = Math.sqrt(i);
635
- n = n * 180 / (a * (1 - ee) / (i * s) * PI), r = r * 180 / (a / s * Math.cos(l) * PI);
636
- let c = o + n, d = t + r;
637
- return `${(t * 2 - d).toFixed(6)}, ${(o * 2 - c).toFixed(6)}`;
656
+ o = o * 180 / (a * (1 - ee) / (i * s) * PI), r = r * 180 / (a / s * Math.cos(l) * PI);
657
+ let c = n + o, d = t + r;
658
+ return `${(t * 2 - d).toFixed(6)}, ${(n * 2 - c).toFixed(6)}`;
638
659
  }
639
660
  }
640
661
  function calculateCirclePoints(e, t) {
641
- const o = fromLonLat(e), n = t * 1e3, r = [
642
- o[0] - n,
643
- o[1] - n,
644
- o[0] + n,
645
- o[1] + n
662
+ const n = fromLonLat(e), o = t * 1e3, r = [
663
+ n[0] - o,
664
+ n[1] - o,
665
+ n[0] + o,
666
+ n[1] + o
646
667
  ], l = transformExtent(r, projection.mercator, projection.data);
647
668
  return {
648
669
  leftTopPoint: { lng: l[0], lat: l[3] },
@@ -654,20 +675,20 @@ function calculateCirclePoints(e, t) {
654
675
  const equatorialCircumference = 2003750834e-2;
655
676
  function lonLatToMercator(e) {
656
677
  const t = e[0] * equatorialCircumference / 180;
657
- let o = Math.log(Math.tan((90 + e[1]) * Math.PI / 360)) / (Math.PI / 180);
658
- return o = o * equatorialCircumference / 180, [t, o];
678
+ let n = Math.log(Math.tan((90 + e[1]) * Math.PI / 360)) / (Math.PI / 180);
679
+ return n = n * equatorialCircumference / 180, [t, n];
659
680
  }
660
681
  function mercatorToLonLat(e, t = "lonlat") {
661
- let o = { lon: 0, lat: 0 }, n = e[0] / equatorialCircumference * 180, r = e[1] / equatorialCircumference * 180;
662
- return r = 180 / Math.PI * (2 * Math.atan(Math.exp(r * Math.PI / 180)) - Math.PI / 2), o.lon = n, o.lat = r, t === "lonlat" ? o : [n, r];
682
+ let n = { lon: 0, lat: 0 }, o = e[0] / equatorialCircumference * 180, r = e[1] / equatorialCircumference * 180;
683
+ 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];
663
684
  }
664
685
  function calculateBoundingBox(e) {
665
- let t = 1 / 0, o = -1 / 0, n = 1 / 0, r = -1 / 0;
686
+ let t = 1 / 0, n = -1 / 0, o = 1 / 0, r = -1 / 0;
666
687
  e.forEach((h) => {
667
- const [g, L] = h;
668
- t = Math.min(t, L), o = Math.max(o, L), n = Math.min(n, g), r = Math.max(r, g);
688
+ const [g, M] = h;
689
+ t = Math.min(t, M), n = Math.max(n, M), o = Math.min(o, g), r = Math.max(r, g);
669
690
  });
670
- const l = r - n, i = o - t, s = Math.max(l, i), c = (n + r) / 2, d = (t + o) / 2, m = s / 2, u = c - m, f = c + m, p = d - m, y = d + m;
691
+ const l = r - o, i = n - t, s = Math.max(l, i), c = (o + r) / 2, d = (t + n) / 2, m = s / 2, u = c - m, f = c + m, p = d - m, y = d + m;
671
692
  return [f, p, u, y];
672
693
  }
673
694
  const transformUtils = {
@@ -676,11 +697,11 @@ const transformUtils = {
676
697
  lonLatToMercator,
677
698
  mercatorToLonLat,
678
699
  calculateBoundingBox
679
- }, mapInstance$8 = ref(), renderTrackStyleSetInstance = (e) => mapInstance$8.value = e, stopIcon = "&#xe6e2;", stopColor = "#E31818", slowIcon = "&#xe703;", slowColor = "#1890FF", dropletsIcon = "&#xe6d2", trackList$1 = ref([]), renderTrackLine = (e, t, o) => {
700
+ }, mapInstance$8 = ref(), renderTrackStyleSetInstance = (e) => mapInstance$8.value = e, stopIcon = "&#xe6e2;", stopColor = "#E31818", slowIcon = "&#xe703;", slowColor = "#1890FF", dropletsIcon = "&#xe6d2", trackList$1 = ref([]), renderTrackLine = (e, t, n) => {
680
701
  var l, i, s;
681
- const n = e[t];
682
- if (!n) return;
683
- allTracks.value[t] = n, trackList$1.value = [], trackList$1.value = n.map((c, d) => (c.center = [c.lon, c.lat], c.centerPoint = transformUtils.lonLatToMercator(c.center), c.id = t, c.index = d, c.time = hooks(c.createdAt).format("YYYY-MM-DD HH:mm:ss"), c));
702
+ const o = e[t];
703
+ if (!o) return;
704
+ allTracks.value[t] = o, trackList$1.value = [], trackList$1.value = o.map((c, d) => (c.center = [c.lon, c.lat], c.centerPoint = transformUtils.lonLatToMercator(c.center), c.id = t, c.index = d, c.time = hooks(c.createdAt).format("YYYY-MM-DD HH:mm:ss"), c));
684
705
  let r = trackList$1.value.map((c) => c.centerPoint);
685
706
  if (r.length >= 2) {
686
707
  let c = new LineString(r);
@@ -688,37 +709,37 @@ const transformUtils = {
688
709
  d.setStyle(
689
710
  new Style({
690
711
  stroke: new Stroke({
691
- color: o,
712
+ color: n,
692
713
  width: 2
693
714
  })
694
715
  })
695
716
  ), d.setId(t), d.set("type", "line"), (i = (l = shipTrackVectorLayer.value) == null ? void 0 : l.getSource()) == null || i.clear(), shipTrackLineFeatures.value = [];
696
717
  const m = shipTrackLineFeatures.value.findIndex((u) => u.getId() === t);
697
- m >= 0 ? shipTrackLineFeatures.value[m] = d : shipTrackLineFeatures.value.push(d), createAnimatedIconFeature(o, r), trackLineVectorSource.value = new VectorSource({
718
+ m >= 0 ? shipTrackLineFeatures.value[m] = d : shipTrackLineFeatures.value.push(d), createAnimatedIconFeature(n, r), trackLineVectorSource.value = new VectorSource({
698
719
  features: [...shipTrackLineFeatures.value]
699
720
  }), shipTrackVectorLayer.value = new VectorLayer({
700
721
  source: trackLineVectorSource.value
701
- }), renderPoint(o), (s = mapInstance$8.value) == null || s.addLayer(shipTrackVectorLayer.value);
722
+ }), renderPoint(n), (s = mapInstance$8.value) == null || s.addLayer(shipTrackVectorLayer.value);
702
723
  }
703
724
  }, handlePlay = (e, t) => {
704
- const o = allTracks.value[e];
705
- playAnimation(o.map((n) => [n.lon, n.lat]), t);
725
+ const n = allTracks.value[e];
726
+ playAnimation(n.map((o) => [o.lon, o.lat]), t);
706
727
  }, removeShipTrackLineFeatureByIndex = (e) => {
707
728
  e >= 0 && e < shipTrackLineFeatures.value.length && (shipTrackLineFeatures.value.splice(e, 1), allTracks.value.splice(e, 1)), trackLineVectorSource.value = new VectorSource({
708
729
  features: [...shipTrackLineFeatures.value]
709
730
  }), shipTrackVectorLayer.value && shipTrackVectorLayer.value.setSource(trackLineVectorSource.value);
710
731
  }, createAnimatedIconFeature = (e, t) => {
711
- const o = new Feature({
732
+ const n = new Feature({
712
733
  geometry: new Point(fromLonLat([t[0][0], t[0][1]]))
713
734
  // 初始位置
714
- }), n = new Style({
735
+ }), o = new Style({
715
736
  text: new Text({
716
737
  font: "700 14px map-iconfont",
717
738
  text: getIconFont("&#xe6bc;"),
718
739
  fill: new Fill({ color: e })
719
740
  })
720
741
  });
721
- return o.setStyle(n), o;
742
+ return n.setStyle(o), n;
722
743
  }, geoMarkerStyle = new Style({
723
744
  text: new Text({
724
745
  font: "700 20px map-iconfont",
@@ -733,8 +754,8 @@ const trackAnimating = ref(!1);
733
754
  let distance = 0, lastTime = Date.now(), moveFeatureHandler = null;
734
755
  const moveFeature = (e, t) => {
735
756
  var u;
736
- const o = Number(50 * t), n = e.frameState.time, r = n - lastTime;
737
- if (distance = (distance + o * r / 1e6) % 2, lastTime = n, distance >= 1) {
757
+ const n = Number(50 * t), o = e.frameState.time, r = o - lastTime;
758
+ if (distance = (distance + n * r / 1e6) % 2, lastTime = o, distance >= 1) {
738
759
  stopAnimation();
739
760
  return;
740
761
  }
@@ -754,7 +775,7 @@ const moveFeature = (e, t) => {
754
775
  var e;
755
776
  trackAnimating.value && (trackAnimating.value = !1, geoMarker.setGeometry(null), vectorLayer.un("postrender", moveFeatureHandler), (e = mapInstance$8.value) == null || e.removeLayer(vectorLayer), vectorLayer = null, geoMarker = null);
756
777
  }, playAnimation = (e, t) => {
757
- var o;
778
+ var n;
758
779
  trackAnimating.value && stopAnimation(), polyline = new Polyline({
759
780
  factor: 1e6
760
781
  }).writeGeometry(new LineString(e)), linePath = new Polyline({
@@ -773,12 +794,12 @@ const moveFeature = (e, t) => {
773
794
  source: new VectorSource({
774
795
  features: [geoMarker]
775
796
  })
776
- }), (o = mapInstance$8.value) == null || o.addLayer(vectorLayer), moveFeatureHandler = (n) => moveFeature(n, t), startAnimation();
797
+ }), (n = mapInstance$8.value) == null || n.addLayer(vectorLayer), moveFeatureHandler = (o) => moveFeature(o, t), startAnimation();
777
798
  }, renderPoint = (e) => {
778
799
  if (!mapInstance$8.value) return;
779
800
  let t = trackList$1.value || [];
780
801
  if (!(t && t.length > 1)) return [];
781
- let o = { 16: 24, 17: 15, default: 4 }, n = [], r = t.length;
802
+ let n = { 16: 24, 17: 15, default: 4 }, o = [], r = t.length;
782
803
  for (let s = 0; s < r; s++) {
783
804
  t[s].index = s;
784
805
  let c = mapInstance$8.value.getPixelFromCoordinate(t[s].centerPoint);
@@ -788,22 +809,22 @@ const moveFeature = (e, t) => {
788
809
  let m = mapInstance$8.value.getView().getZoom();
789
810
  if (!m) return;
790
811
  if (m > 15) {
791
- let f = o[m] || o.default;
812
+ let f = n[m] || n.default;
792
813
  d = adjustBounds(d, [f, f]);
793
814
  }
794
815
  let u = !0;
795
816
  if (t[s].state !== "0") {
796
- for (let f = 0; f < n.length; f++)
797
- if (isOverlapping(d, n[f].bounds)) {
817
+ for (let f = 0; f < o.length; f++)
818
+ if (isOverlapping(d, o[f].bounds)) {
798
819
  u = !1;
799
820
  break;
800
821
  }
801
822
  }
802
- u && (t[s].bounds = d, n.push(t[s]));
823
+ u && (t[s].bounds = d, o.push(t[s]));
803
824
  }
804
825
  }
805
826
  const l = getIconStyle(stopIcon), i = getIconStyle(slowIcon);
806
- n.forEach((s, c) => {
827
+ o.forEach((s, c) => {
807
828
  var u, f;
808
829
  let d = new Feature({
809
830
  geometry: new Point(s.centerPoint)
@@ -813,7 +834,8 @@ const moveFeature = (e, t) => {
813
834
  image: new CircleStyle({
814
835
  fill: new Fill({ color: e }),
815
836
  stroke: new Stroke({ color: "#fff", width: 2 }),
816
- radius: 3
837
+ radius: 3,
838
+ hitDetectionRadius: 10
817
839
  })
818
840
  })
819
841
  ), trackLineVectorSource.value.addFeature(d);
@@ -835,14 +857,14 @@ const moveFeature = (e, t) => {
835
857
  }),
836
858
  zIndex: 99
837
859
  }), h = [];
838
- s.state === "0" ? ((u = y.getText()) == null || u.setFill(new Fill({ color: stopColor })), h.push(l)) : ((f = y.getText()) == null || f.setFill(new Fill({ color: slowColor })), h.push(i)), h.push(y), p.setStyle(h), trackLineVectorSource.value.addFeature(p);
860
+ Number(s.state) === 0 ? ((u = y.getText()) == null || u.setFill(new Fill({ color: stopColor })), h.push(l)) : Number(s.state) === 1 && ((f = y.getText()) == null || f.setFill(new Fill({ color: slowColor })), h.push(i)), h.push(y), p.setStyle(h), trackLineVectorSource.value.addFeature(p);
839
861
  }
840
- }), renderArrow(n, e), renderIconPoint();
862
+ }), renderArrow(o, e), renderIconPoint();
841
863
  }, renderArrow = (e, t) => {
842
- const o = e.length;
843
- o || (e.push(trackList$1.value[0]), e.push(trackList$1.value[trackList$1.value.length - 1]));
844
- for (let n = 0; n < o - 1; n++) {
845
- let r, l = e[n], i = (e[n + 1].index + l.index) / 2;
864
+ const n = e.length;
865
+ n || (e.push(trackList$1.value[0]), e.push(trackList$1.value[trackList$1.value.length - 1]));
866
+ for (let o = 0; o < n - 1; o++) {
867
+ let r, l = e[o], i = (e[o + 1].index + l.index) / 2;
846
868
  if (i % 2 === 0)
847
869
  r = trackList$1.value[i].centerPoint;
848
870
  else {
@@ -864,8 +886,8 @@ const moveFeature = (e, t) => {
864
886
  fill: new Fill({ color: t }),
865
887
  // 设置箭头旋转 角度转为弧度
866
888
  rotation: getRotation(
867
- e[n].center,
868
- e[n + 1].center
889
+ e[o].center,
890
+ e[o + 1].center
869
891
  ) * (Math.PI / 180)
870
892
  })
871
893
  })
@@ -873,13 +895,13 @@ const moveFeature = (e, t) => {
873
895
  }
874
896
  }
875
897
  }, renderIconPoint = () => {
876
- const e = "&#xe69b;", t = "#fcdc3f", o = "#ff0000";
898
+ const e = "&#xe69b;", t = "#fcdc3f", n = "#ff0000";
877
899
  (trackList$1.value.length < 2 ? [trackList$1.value[0]] : [trackList$1.value[0], trackList$1.value[trackList$1.value.length - 1]]).forEach((r) => {
878
900
  let l = new Feature({
879
901
  geometry: new Point(r.centerPoint)
880
902
  });
881
903
  l.set("type", "track_begin"), l.set("data", r);
882
- const i = r.index === 0 && trackList$1.value.length >= 2 ? t : o;
904
+ const i = r.index === 0 && trackList$1.value.length >= 2 ? t : n;
883
905
  l.setStyle(
884
906
  new Style({
885
907
  text: new Text({
@@ -892,9 +914,9 @@ const moveFeature = (e, t) => {
892
914
  ), trackLineVectorSource.value.addFeature(l);
893
915
  });
894
916
  }, setTrackLabelStyle = (e, t) => new Style({
895
- renderer: (o, n) => {
896
- const r = n.context, s = {
897
- center: o,
917
+ renderer: (n, o) => {
918
+ const r = o.context, s = {
919
+ center: n,
898
920
  text: e.time,
899
921
  color: t,
900
922
  textColor: "#000",
@@ -973,30 +995,30 @@ const moveFeature = (e, t) => {
973
995
  radius: 0
974
996
  })
975
997
  }), mapInstance$7 = ref(), renderShipStyleSetInstance = (e) => mapInstance$7.value = e, 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) => new Style({
976
- renderer: (t, o) => {
977
- const n = o.context, r = o.feature.get("data");
978
- o.feature.get("index") === 0 && (shipLabels.value = []);
998
+ renderer: (t, n) => {
999
+ const o = n.context, r = n.feature.get("data");
1000
+ n.feature.get("index") === 0 && (shipLabels.value = []);
979
1001
  try {
980
- const i = drawShipBody(n, r, t);
981
- i && (drawHeading(n, r, i), e && (drawSelectBounds(n, i), r.selected = !0)), drawShipLabel(n, r, t);
1002
+ const i = drawShipBody(o, r, t);
1003
+ i && (drawHeading(o, r, i), e && (drawSelectBounds(o, i), r.selected = !0)), drawShipLabel(o, r, t);
982
1004
  } catch {
983
1005
  return !1;
984
1006
  }
985
1007
  }
986
- }), drawShipBody = (e, t, o) => {
1008
+ }), drawShipBody = (e, t, n) => {
987
1009
  if (!mapInstance$7.value) return;
988
- const n = Math.round(Number(mapInstance$7.value.getView().getZoom()));
989
- if (!n) return;
1010
+ const o = Math.round(Number(mapInstance$7.value.getView().getZoom()));
1011
+ if (!o) return;
990
1012
  let r = [];
991
- const [l, i] = drawShipModelByZoom[n] || [0, 0], [s, c] = o;
992
- if (n <= mapZoom.shipModelMax && n > mapZoom.shipModelMin && t.length >= l && t.breadth >= i)
993
- r = rotateShapeModel(drawCurrentShipShapeModel(t, n), t.angle).map((m) => {
1013
+ const [l, i] = drawShipModelByZoom[o] || [0, 0], [s, c] = n;
1014
+ if (o <= mapZoom.shipModelMax && o > mapZoom.shipModelMin && t.length >= l && t.breadth >= i)
1015
+ r = rotateShapeModel(drawCurrentShipShapeModel(t, o), t.angle).map((m) => {
994
1016
  const [u, f] = m;
995
1017
  return [s + u, c + f];
996
1018
  });
997
1019
  else {
998
1020
  const d = rotateShapeModel(triangleModel, t.angle);
999
- o.length === 2 && (r = d.map((m) => {
1021
+ n.length === 2 && (r = d.map((m) => {
1000
1022
  const [u, f] = m;
1001
1023
  return [s + u, c + f];
1002
1024
  }));
@@ -1006,19 +1028,19 @@ const moveFeature = (e, t) => {
1006
1028
  for (let d = 1; d < r.length; d++)
1007
1029
  e.lineTo(r[d][0], r[d][1]);
1008
1030
  return e.closePath(), e.strokeStyle = "#000", e.lineWidth = 1, e.stroke(), e.fillStyle = t.fill, e.fill(), e.restore(), r;
1009
- }, drawHeading = (e, t, o) => {
1010
- const [n, r] = o[0], l = getShipDirectPath(t);
1031
+ }, drawHeading = (e, t, n) => {
1032
+ const [o, r] = n[0], l = getShipDirectPath(t);
1011
1033
  if (l) {
1012
1034
  let i = l.map(function(s) {
1013
1035
  let [c, d] = s;
1014
- return [c + n, d + r];
1036
+ return [c + o, d + r];
1015
1037
  });
1016
1038
  if (e.save(), e.beginPath(), t.angle > 0) {
1017
- e.translate(n, r);
1039
+ e.translate(o, r);
1018
1040
  const s = t.angle * Math.PI / 180;
1019
- e.rotate(s), e.translate(-n, -r);
1041
+ e.rotate(s), e.translate(-o, -r);
1020
1042
  }
1021
- e.moveTo(n, r);
1043
+ e.moveTo(o, r);
1022
1044
  for (let s = 1; s < i.length; s++) {
1023
1045
  let [c, d] = i[s];
1024
1046
  e.lineTo(c, d);
@@ -1026,13 +1048,13 @@ const moveFeature = (e, t) => {
1026
1048
  e.strokeStyle = "#000", e.lineWidth = 1, e.stroke(), e.restore();
1027
1049
  }
1028
1050
  }, drawSelectBounds = (e, t) => {
1029
- let [o, n, r, l] = getPixelFromCoordinate(t);
1051
+ let [n, o, r, l] = getPixelFromCoordinate(t);
1030
1052
  const i = 4;
1031
- o -= i, n -= i, r += i, l += i, e.save(), e.strokeStyle = "#ff0000", e.lineWidth = 4;
1053
+ n -= i, o -= i, r += i, l += i, e.save(), e.strokeStyle = "#ff0000", e.lineWidth = 4;
1032
1054
  const s = 8;
1033
- e.beginPath(), e.moveTo(o + s, l), e.lineTo(o, l), e.lineTo(o, l - s), e.moveTo(o, n + s), e.lineTo(o, n), e.lineTo(o + s, n), e.moveTo(r - s, n), e.lineTo(r, n), e.lineTo(r, n + s), e.moveTo(r, l - s), e.lineTo(r, l), e.lineTo(r - s, l), e.stroke(), e.restore();
1034
- }, drawShipLabel = (e, t, o) => {
1035
- const [n, r] = o, l = n - 0, i = r - 0, s = t.name;
1055
+ e.beginPath(), e.moveTo(n + s, l), e.lineTo(n, l), e.lineTo(n, l - 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, l - s), e.lineTo(r, l), e.lineTo(r - s, l), e.stroke(), e.restore();
1056
+ }, drawShipLabel = (e, t, n) => {
1057
+ const [o, r] = n, l = o - 0, i = r - 0, s = t.name;
1036
1058
  let c;
1037
1059
  t.leftIconColor && (c = { color: t.leftIconColor, icon: "&#xe599;" });
1038
1060
  let d = getShipCustomIcon(t);
@@ -1045,18 +1067,19 @@ const moveFeature = (e, t) => {
1045
1067
  leftIcon: c,
1046
1068
  rightIcons: d,
1047
1069
  selected: t.selected,
1070
+ blinkColors: t.blinkColors,
1048
1071
  type: "ShipName"
1049
1072
  };
1050
1073
  drawLabel(e, m, shipLabels.value);
1051
1074
  }, drawCurrentShipShapeModel = (e, t) => {
1052
- let o = 0;
1053
- 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);
1054
- const n = e.length / 4 * o, r = e.breadth * o;
1075
+ let n = 0;
1076
+ 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);
1077
+ const o = e.length / 4 * n, r = e.breadth * n;
1055
1078
  let l = cloneDeep(shipShapeModel);
1056
- return l = l.map(([i, s]) => [i * r, s * n]), l;
1079
+ return l = l.map(([i, s]) => [i * r, s * o]), l;
1057
1080
  }, getShipDirectPath = (e) => {
1058
- let { speed: t, hdg: o, cog: n } = e, r = "", l = null;
1059
- if (t && t > 1 && (o !== null && o != 511 && n !== null ? n - o >= 3 ? r = "left" : n - o <= -3 ? r = "right" : r = "front" : r = "front", r && t))
1081
+ let { speed: t, hdg: n, cog: o } = e, r = "", l = null;
1082
+ 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))
1060
1083
  for (let i in speedCondition) {
1061
1084
  let s = speedCondition[i];
1062
1085
  if (t >= s[0] && t < s[1]) {
@@ -1073,14 +1096,14 @@ let shipsMarkerList = [], shipsVectorSource, largeAmountShipsSource;
1073
1096
  const selectedShipData = ref(null);
1074
1097
  let selectShipsVectorSource;
1075
1098
  const renderShips = (e) => {
1076
- var o, n, r, l;
1099
+ var n, o, r, l;
1077
1100
  if (!mapInstance$6.value || showTrackLayer.value) return;
1078
1101
  const t = Math.round(Number(mapInstance$6.value.getView().getZoom()));
1079
1102
  if (selectedShipData.value && nextTick(() => {
1080
1103
  selectSingleShipMarker(selectedShipData.value);
1081
1104
  }).then((i) => {
1082
1105
  }), !(!t || t < mapZoom.shipGreenDotMax) && (allShips.value = e, !hiddenOrther.value))
1083
- return t >= mapZoom.shipGreenDotMax && t < mapZoom.shipModelMin || e.length > renderShipsLimit ? ((o = shipsLayer.value) == null || o.setVisible(!1), (n = largeAmountShipsLayer.value) == null || n.setVisible(!0), renderLargeAmountShips(e)) : ((r = largeAmountShipsLayer.value) == null || r.setVisible(!1), (l = shipsLayer.value) == null || l.setVisible(!0), renderShipsMarker(e));
1106
+ return t >= mapZoom.shipGreenDotMax && t < mapZoom.shipModelMin ? ((n = shipsLayer.value) == null || n.setVisible(!1), (o = largeAmountShipsLayer.value) == null || o.setVisible(!0), renderLargeAmountShips(e)) : ((r = largeAmountShipsLayer.value) == null || r.setVisible(!1), (l = shipsLayer.value) == null || l.setVisible(!0), renderShipsMarker(e));
1084
1107
  }, renderLargeAmountShips = (e) => {
1085
1108
  if (!mapInstance$6.value) return;
1086
1109
  const t = e.map((n) => ({
@@ -1091,28 +1114,29 @@ const renderShips = (e) => {
1091
1114
  },
1092
1115
  properties: n
1093
1116
  }));
1094
- largeAmountShipsSource == null || largeAmountShipsSource.clear(), largeAmountShipsSource = new VectorSource({
1117
+ return largeAmountShipsSource == null || largeAmountShipsSource.clear(), largeAmountShipsSource = new VectorSource({
1095
1118
  features: new GeoJSON().readFeatures({
1096
1119
  type: "FeatureCollection",
1097
1120
  features: t
1098
1121
  }, {
1099
1122
  featureProjection: projection.mercator
1100
1123
  })
1101
- });
1102
- const o = [
1103
- "case",
1104
- ["==", ["get", "existMobile"], 1],
1105
- // 假设 type1 对应红色
1106
- "#D9001C",
1107
- "#04C900"
1108
- ];
1109
- return largeAmountShipsLayer.value = new WebGLPointsLayer({
1124
+ }), largeAmountShipsLayer.value = new WebGLPointsLayer({
1110
1125
  source: largeAmountShipsSource,
1111
1126
  style: {
1112
1127
  "shape-points": 3,
1113
1128
  "shape-radius": 9,
1114
- "shape-fill-color": o,
1115
- // 'shape-fill-color': ['get', 'data.fill'],
1129
+ "shape-fill-color": [
1130
+ "case",
1131
+ ["==", ["get", "fill"], "#D9001C"],
1132
+ "#D9001C",
1133
+ // 如果 fill 是 #D9001C,返回红色
1134
+ ["==", ["get", "fill"], "#04C900"],
1135
+ "#04C900",
1136
+ // 如果 fill 是 #04C900,返回绿色
1137
+ "#04C900"
1138
+ // 默认颜色(绿色)
1139
+ ],
1116
1140
  "shape-rotate-with-view": !1,
1117
1141
  "shape-rotation": [
1118
1142
  "+",
@@ -1129,32 +1153,33 @@ const renderShips = (e) => {
1129
1153
  }
1130
1154
  }), mapInstance$6.value.addLayer(largeAmountShipsLayer.value), largeAmountShipsLayer.value;
1131
1155
  }, renderShipsMarker = (e) => {
1156
+ var n;
1132
1157
  if (!mapInstance$6.value) return;
1133
1158
  deleteAllShipMarkers();
1134
1159
  let t = convertShipMapData(e);
1135
1160
  if (t = customFilterShips(t), !!(t != null && t.length))
1136
- return t.forEach((o, n) => {
1137
- const r = [o.lon, o.lat], l = new Feature({
1138
- geometry: new Point(fromLonLat(r))
1139
- });
1140
- l.set("data", o), l.set("index", n), l.setStyle(
1141
- setShipStyle(!1, o.id)
1161
+ return t.forEach((o, r) => {
1162
+ const l = [o.lon, o.lat], i = new Feature({
1163
+ geometry: new Point(fromLonLat(l))
1164
+ }), s = 1;
1165
+ i.set("clickGeometry", new Circle(fromLonLat(l), s)), i.set("data", o), i.set("index", r), i.setStyle(
1166
+ setShipStyle(!1)
1142
1167
  ), shipsMarkerList.push({
1143
1168
  ship: o,
1144
- lonlat: r,
1145
- feature: l
1169
+ lonlat: l,
1170
+ feature: i
1146
1171
  });
1147
1172
  }), shipsVectorSource = new VectorSource({
1148
1173
  features: shipsMarkerList.map((o) => o.feature)
1149
1174
  }), shipsLayer.value = new VectorLayer({
1150
1175
  source: shipsVectorSource
1151
- }), mapInstance$6.value.addLayer(shipsLayer.value), shipsLayer.value;
1176
+ }), (n = mapInstance$6.value) == null || n.addLayer(shipsLayer.value), shipsLayer.value;
1152
1177
  }, customFilterShips = (e) => {
1153
1178
  let t = cloneDeep(e);
1154
- return t = t.filter((o) => {
1179
+ return t = t.filter((n) => {
1155
1180
  var r;
1156
- let n = getFilterItem(o).every(({ btnShow: l, value: i }) => l ? !!i : !0);
1157
- return (switchBtnShow.value.camera || switchBtnShow.value.mobile || switchBtnShow.value.waterGauge) && ((r = selectedShipData.value) == null ? void 0 : r.id) === o.id && clearSelectFeature(), n;
1181
+ let o = getFilterItem(n).every(({ btnShow: l, value: i }) => l ? !!i : !0);
1182
+ return (switchBtnShow.value.camera || switchBtnShow.value.mobile || switchBtnShow.value.waterGauge) && ((r = selectedShipData.value) == null ? void 0 : r.id) === n.id && clearSelectFeature(), o;
1158
1183
  }), t;
1159
1184
  }, getFilterItem = (e) => [
1160
1185
  { btnShow: switchBtnShow.value.camera, value: e == null ? void 0 : e.existDevice },
@@ -1169,45 +1194,45 @@ const renderShips = (e) => {
1169
1194
  if (!mapInstance$6.value) return;
1170
1195
  const t = cloneDeep(selectSingleShipData.value);
1171
1196
  selectSingleShipData.value = convertShipMapData(e);
1172
- const o = [selectSingleShipData.value.lon, selectSingleShipData.value.lat], n = new Feature({
1173
- geometry: new Point(fromLonLat(o))
1197
+ const n = [selectSingleShipData.value.lon, selectSingleShipData.value.lat], o = new Feature({
1198
+ geometry: new Point(fromLonLat(n))
1174
1199
  });
1175
- n.set("data", selectSingleShipData.value), n.setStyle(
1200
+ o.set("data", selectSingleShipData.value), o.setStyle(
1176
1201
  setShipStyle(!0)
1177
1202
  ), shipsMarkerList.push({
1178
1203
  ship: selectSingleShipData.value,
1179
- lonlat: o,
1180
- feature: n
1204
+ lonlat: n,
1205
+ feature: o
1181
1206
  }), selectShipsVectorSource == null || selectShipsVectorSource.clear(), selectShipsVectorSource = new VectorSource({
1182
- features: [n]
1207
+ features: [o]
1183
1208
  }), selectShipsLayer.value = new VectorLayer({
1184
1209
  source: selectShipsVectorSource
1185
1210
  }), setVisibleFeatureById(shipsVectorSource, selectSingleShipData.value.id, !0);
1186
1211
  const r = (l = shipsLayer.value) == null ? void 0 : l.getSource();
1187
1212
  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;
1188
- }, setVisibleFeatureById = (e, t, o) => {
1189
- e && e.forEachFeature((n) => {
1190
- const r = n.get("data");
1191
- r && r.id === t && n.setStyle(o ? setShipStyle(!1, r.id) : setBlankStyle());
1213
+ }, setVisibleFeatureById = (e, t, n) => {
1214
+ e && e.forEachFeature((o) => {
1215
+ const r = o.get("data");
1216
+ r && r.id === t && o.setStyle(n ? setShipStyle(!1, r.id) : setBlankStyle());
1192
1217
  });
1193
- }, findShip = (e, t, o = !0) => {
1218
+ }, findShip = (e, t, n = !0) => {
1194
1219
  var r, l, i, s, c;
1195
1220
  if (console.log(mapInstance$6.value.ol_uid), !e || !mapInstance$6.value) return;
1196
- const n = (i = (l = (r = shipsLayer.value) == null ? void 0 : r.getSource()) == null ? void 0 : l.getFeatures()) == null ? void 0 : i.find((d) => {
1221
+ const o = (i = (l = (r = shipsLayer.value) == null ? void 0 : r.getSource()) == null ? void 0 : l.getFeatures()) == null ? void 0 : i.find((d) => {
1197
1222
  var m;
1198
1223
  return ((m = d.get("data")) == null ? void 0 : m.id) === e;
1199
1224
  });
1200
- if (n ? selectedShipData.value = n.get("data") : t && (selectedShipData.value = t), !t) {
1225
+ if (o ? selectedShipData.value = o.get("data") : t && (selectedShipData.value = t), !t) {
1201
1226
  console.error("找不到船舶");
1202
1227
  return;
1203
1228
  }
1204
- if (o && ((s = selectedShipData.value) != null && s.lon) && ((c = selectedShipData.value) != null && c.lat)) {
1229
+ if (n && ((s = selectedShipData.value) != null && s.lon) && ((c = selectedShipData.value) != null && c.lat)) {
1205
1230
  const d = mapInstance$6.value.getView(), m = new Point([selectedShipData.value.lon, selectedShipData.value.lat]);
1206
1231
  d.setCenter(transform(m.getCoordinates(), projection.data, projection.mercator));
1207
1232
  const u = d.getZoom(), f = u < mapZoom.findShipMin ? mapZoom.findShip : u;
1208
1233
  d.setZoom(f);
1209
1234
  }
1210
- return selectSingleShipMarker(t), n;
1235
+ return selectSingleShipMarker(t), o;
1211
1236
  }, clearSelectFeature = () => {
1212
1237
  var e;
1213
1238
  if (selectedShipData.value) {
@@ -1232,9 +1257,50 @@ const renderShips = (e) => {
1232
1257
  switchBtnShow.value[e] = t, renderShips(allShips.value);
1233
1258
  }, rerenderShip = () => {
1234
1259
  renderShips(allShips.value);
1235
- }, mapInstance$5 = ref(), renderTrackSetInstance = (e) => mapInstance$5.value = e, showTracks = ref([]), trackList = ref([]);
1260
+ }, mapInstance$5 = ref(), renderCustomOverlaySetInstance = (e) => mapInstance$5.value = e, drawCustomContent = (e, t, n, o = "top-left", r = !1) => {
1261
+ var m, u;
1262
+ if (!t || !mapInstance$5.value) return;
1263
+ document.querySelectorAll(".truck-custom-content").forEach((f) => f.parentNode.removeChild(f));
1264
+ const l = document.createElement("div");
1265
+ l.innerHTML = n;
1266
+ const i = new Overlay({
1267
+ element: l,
1268
+ position: t,
1269
+ // 初始位置
1270
+ positioning: o,
1271
+ stopEvent: r
1272
+ // 设置不阻拦事件
1273
+ });
1274
+ if (r) {
1275
+ let f = !1, p = [0, 0], y = [0, 0];
1276
+ l.addEventListener("mousedown", function(h) {
1277
+ var g;
1278
+ f = !0, h.clientX, h.clientY, p = (g = mapInstance$5.value) == null ? void 0 : g.getCoordinateFromPixel([h.clientX - 200, h.clientY - 200]), y = [
1279
+ h.clientX - l.getBoundingClientRect().left + 160,
1280
+ h.clientY - l.getBoundingClientRect().top + 84
1281
+ ], h.preventDefault();
1282
+ }), document.addEventListener("mousemove", function(h) {
1283
+ var g;
1284
+ if (f) {
1285
+ let M = (g = mapInstance$5.value) == null ? void 0 : g.getCoordinateFromPixel([h.clientX - y[0], h.clientY - y[1]]), T = M[0] - p[0], b = M[1] - p[1];
1286
+ i.setPosition([p[0] + T, p[1] + b]);
1287
+ }
1288
+ }), document.addEventListener("mouseup", function() {
1289
+ f = !1;
1290
+ });
1291
+ }
1292
+ (m = mapInstance$5.value) == null || m.addOverlay(i);
1293
+ const s = l.querySelector(".close-button");
1294
+ s && s.addEventListener("click", () => {
1295
+ var f, p;
1296
+ (f = mapInstance$5.value) == null || f.removeOverlay(i), (p = l.parentNode) == null || p.removeChild(l);
1297
+ });
1298
+ let c = JSON.parse(JSON.stringify(t));
1299
+ const d = (u = mapInstance$5.value) == null ? void 0 : u.getCoordinateFromPixel(c);
1300
+ return i.setPosition(d), i;
1301
+ }, mapInstance$4 = ref(), renderTrackSetInstance = (e) => mapInstance$4.value = e, showTracks = ref([]), trackList = ref([]);
1236
1302
  ref(null);
1237
- const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship") => {
1303
+ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, n, o, r = "ship") => {
1238
1304
  var m;
1239
1305
  if (nextTick(() => {
1240
1306
  hiddenAllShips();
@@ -1249,18 +1315,71 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1249
1315
  }), trackId.value = e, l[e] = t, trackList.value = t;
1250
1316
  const i = ["#ff0000", "#00ff00", "#0079ff", "#ffa500", "#800080", "#008080", "#ffc0cb", "#800000", "#000080", "#808000"], s = l[e].map(
1251
1317
  (u) => transform([u.lon, u.lat], projection.data, projection.mercator)
1252
- ), c = new LineString(s), d = formatUtils.formatLength(c, n) || "--";
1318
+ ), c = new LineString(s), d = formatUtils.formatLength(c, o) || "--";
1253
1319
  nextTick(() => {
1254
1320
  var f, p;
1255
1321
  const u = (f = showTracks.value) == null ? void 0 : f.findIndex((y) => y.id === e);
1256
- u < 0 ? showTracks.value.push({ id: e, length: d }) : showTracks.value[u].length = d, ++cursor.value, cursor.value > i.length && (cursor.value = 0), renderTrackLine(l, e, o), nextTick(() => {
1322
+ u < 0 ? showTracks.value.push({ id: e, length: d }) : showTracks.value[u].length = d, ++cursor.value, cursor.value > i.length && (cursor.value = 0), renderTrackLine(l, e, n), nextTick(() => {
1257
1323
  resetTrackView(e);
1258
1324
  }).then(() => {
1259
- }), (p = mapInstance$5.value) == null || p.on("moveend", () => {
1260
- showTrackLayer.value && (trackLabels.value = [], renderTrackLine(l, e, o));
1261
- });
1325
+ }), (p = mapInstance$4.value) == null || p.on("moveend", () => {
1326
+ showTrackLayer.value && (trackLabels.value = [], renderTrackLine(l, e, n));
1327
+ }), renderTrackPointPopup();
1262
1328
  }).then(() => {
1263
1329
  });
1330
+ }, renderTrackPointPopup = () => {
1331
+ var t;
1332
+ const e = ref(null);
1333
+ (t = mapInstance$4.value) == null || t.on("pointermove", (n) => {
1334
+ var r, l, i, s;
1335
+ e.value && ((r = mapInstance$4.value) == null || r.removeOverlay(e.value));
1336
+ const o = (l = mapInstance$4.value) == null ? void 0 : l.forEachFeatureAtPixel(n.pixel, (c) => c);
1337
+ if (o) {
1338
+ const c = o.get("data");
1339
+ if (!(c != null && c.time)) return;
1340
+ let d = "";
1341
+ c != null && c.stayTime && (d = `
1342
+ <div class="item w-100">
1343
+ <div class="item-label">停泊时间约</div>
1344
+ <div class="item-item">${c.stayTime}</div>
1345
+ </div>
1346
+ `);
1347
+ const m = `
1348
+ <div class="track-point-popup">
1349
+ <div class="item">
1350
+ <div class="item-label">状态</div>
1351
+ <div class="item-item">${c != null && c.sailStatus ? SHIP_SAIL_STATUS[String(c.sailStatus)] : DEFAULT_VALUE}</div>
1352
+ </div>
1353
+ <div class="item">
1354
+ <div class="item-label">航速</div>
1355
+ <div class="item-item">${c.speed || DEFAULT_VALUE}</div>
1356
+ </div>
1357
+ <div class="item">
1358
+ <div class="item-label">艏向</div>
1359
+ <div class="item-item">${c.hdg || DEFAULT_VALUE}</div>
1360
+ </div>
1361
+ <div class="item">
1362
+ <div class="item-label">航向</div>
1363
+ <div class="item-item">${c.cog || DEFAULT_VALUE}</div>
1364
+ </div>
1365
+ <div class="item">
1366
+ <div class="item-label">经度</div>
1367
+ <div class="item-item">${c.lon || DEFAULT_VALUE}</div>
1368
+ </div>
1369
+ <div class="item">
1370
+ <div class="item-label">纬度</div>
1371
+ <div class="item-item">${c.lat || DEFAULT_VALUE}</div>
1372
+ </div>
1373
+ <div class="item w-100">
1374
+ <div class="item-label">时间</div>
1375
+ <div class="item-item">${c.time}</div>
1376
+ </div>
1377
+ ${d ?? d}
1378
+ </div>`, u = (i = mapInstance$4.value) == null ? void 0 : i.getPixelFromCoordinate(n.coordinate);
1379
+ e.value = drawCustomContent(c.time, u, m, "center-center");
1380
+ } else
1381
+ (s = mapInstance$4.value) == null || s.removeOverlay(e.value);
1382
+ });
1264
1383
  }, removeAllTrackLayer = () => {
1265
1384
  var e;
1266
1385
  showTracks.value = [], (e = trackLineVectorSource.value) == null || e.clear();
@@ -1268,12 +1387,12 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1268
1387
  handlePlay(String(e), t);
1269
1388
  }, resetTrackView = (e) => {
1270
1389
  var r;
1271
- const t = mapInstance$5.value.getView(), o = e ? shipTrackLineFeatures.value.find((l) => l.getId() === e) : shipTrackLineFeatures.value[0];
1272
- if (!o) return;
1273
- const n = (r = o == null ? void 0 : o.getGeometry()) == null ? void 0 : r.getExtent();
1274
- if (n != null && n.length)
1390
+ const t = mapInstance$4.value.getView(), n = e ? shipTrackLineFeatures.value.find((l) => l.getId() === e) : shipTrackLineFeatures.value[0];
1391
+ if (!n) return;
1392
+ const o = (r = n == null ? void 0 : n.getGeometry()) == null ? void 0 : r.getExtent();
1393
+ if (o != null && o.length)
1275
1394
  try {
1276
- const l = buffer(n, Math.max(n[2] - n[0], n[3] - n[1]) * 0.02);
1395
+ const l = buffer(o, Math.max(o[2] - o[0], o[3] - o[1]) * 0.02);
1277
1396
  t.fit(l);
1278
1397
  } catch (l) {
1279
1398
  console.log(l);
@@ -1293,10 +1412,10 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1293
1412
  emits: ["switchGreenDot", "switchMapTile"],
1294
1413
  setup(e, { emit: t }) {
1295
1414
  var p, y;
1296
- const o = inject("mapInstance"), n = e, r = t, l = ref(((y = (p = o.value) == null ? void 0 : p.getView()) == null ? void 0 : y.getZoom()) || mapZoom.default), i = ref(!1), s = ref(null), c = ref(!0), d = () => {
1297
- n.disableGreenDot || l.value >= mapZoom.shipGreenDotMax || (c.value = !c.value, r("switchGreenDot", c.value));
1415
+ const n = inject("mapInstance"), o = e, r = t, l = ref(((y = (p = n.value) == null ? void 0 : p.getView()) == null ? void 0 : y.getZoom()) || mapZoom.default), i = ref(!1), s = ref(null), c = ref(!0), d = () => {
1416
+ o.disableGreenDot || l.value >= mapZoom.shipGreenDotMax || (c.value = !c.value, r("switchGreenDot", c.value));
1298
1417
  }, m = () => {
1299
- r("switchMapTile", n.mapTileMode === BaseMapType.vector ? BaseMapType.satellite : BaseMapType.vector);
1418
+ r("switchMapTile", o.mapTileMode === BaseMapType.vector ? BaseMapType.satellite : BaseMapType.vector);
1300
1419
  }, u = () => {
1301
1420
  var h, g;
1302
1421
  i.value ? (h = s.value) == null || h.removeInteraction() : (g = s.value) == null || g.addInteraction(), i.value = !i.value;
@@ -1307,9 +1426,9 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1307
1426
  return onMounted(() => {
1308
1427
  nextTick(() => {
1309
1428
  var h;
1310
- (h = o.value) == null || h.on("moveend", () => {
1311
- var L, T;
1312
- const g = (T = (L = o.value) == null ? void 0 : L.getView()) == null ? void 0 : T.getZoom();
1429
+ (h = n.value) == null || h.on("moveend", () => {
1430
+ var M, T;
1431
+ const g = (T = (M = n.value) == null ? void 0 : M.getView()) == null ? void 0 : T.getZoom();
1313
1432
  g && (l.value = g);
1314
1433
  });
1315
1434
  });
@@ -1338,7 +1457,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1338
1457
  h.vehicleMode === "ship" ? (openBlock(), createElementBlock("div", {
1339
1458
  key: 2,
1340
1459
  class: normalizeClass(`switch-btn ${h.mapTileMode === unref(BaseMapType).satellite && "active"}`),
1341
- onClick: g[0] || (g[0] = (L) => m())
1460
+ onClick: g[0] || (g[0] = (M) => m())
1342
1461
  }, g[7] || (g[7] = [
1343
1462
  createElementVNode("i", { class: "map-iconfont icon-space" }, null, -1),
1344
1463
  createElementVNode("div", { class: "button-text" }, "图层", -1)
@@ -1346,7 +1465,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1346
1465
  h.vehicleMode === "truck" ? (openBlock(), createElementBlock("div", {
1347
1466
  key: 3,
1348
1467
  class: normalizeClass(`switch-btn ${h.mapTileMode === unref(BaseMapType).satellite && "active"}`),
1349
- onClick: g[1] || (g[1] = (L) => m())
1468
+ onClick: g[1] || (g[1] = (M) => m())
1350
1469
  }, g[8] || (g[8] = [
1351
1470
  createElementVNode("i", { class: "map-iconfont icon-space" }, null, -1),
1352
1471
  createElementVNode("div", { class: "button-text" }, "卫星", -1)
@@ -1354,14 +1473,14 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1354
1473
  h.showTrackLayer ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [
1355
1474
  createElementVNode("div", {
1356
1475
  class: "switch-btn multiple",
1357
- onClick: g[2] || (g[2] = (L) => unref(playTrack)(unref(currentTrackId), 1))
1476
+ onClick: g[2] || (g[2] = (M) => unref(playTrack)(unref(currentTrackId), 1))
1358
1477
  }, g[9] || (g[9] = [
1359
1478
  createElementVNode("i", { class: "map-iconfont icon-play" }, null, -1),
1360
1479
  createElementVNode("div", { class: "button-text" }, "播放轨迹", -1)
1361
1480
  ])),
1362
1481
  createElementVNode("div", {
1363
1482
  class: "switch-btn multiple",
1364
- onClick: g[3] || (g[3] = (L) => unref(resetTrackView)())
1483
+ onClick: g[3] || (g[3] = (M) => unref(resetTrackView)())
1365
1484
  }, g[10] || (g[10] = [
1366
1485
  createElementVNode("i", { class: "map-iconfont icon-center" }, null, -1),
1367
1486
  createElementVNode("div", { class: "button-text" }, "轨迹居中", -1)
@@ -1402,7 +1521,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1402
1521
  ref_key: "measureRef",
1403
1522
  ref: s,
1404
1523
  visible: i.value,
1405
- "onUpdate:visible": g[4] || (g[4] = (L) => i.value = L),
1524
+ "onUpdate:visible": g[4] || (g[4] = (M) => i.value = M),
1406
1525
  onClose: f,
1407
1526
  "view-mode": h.viewMode
1408
1527
  }, null, 8, ["visible", "view-mode"])) : createCommentVNode("", !0)
@@ -1412,14 +1531,14 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1412
1531
  }), ToolPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-ef931f65"]]), _hoisted_1$2 = { id: "scale-line-container" }, _sfc_main$3 = /* @__PURE__ */ defineComponent({
1413
1532
  __name: "scaleLine",
1414
1533
  setup(e, { expose: t }) {
1415
- const o = inject("mapInstance");
1534
+ const n = inject("mapInstance");
1416
1535
  return t({
1417
1536
  setScaleLine: (r) => {
1418
1537
  var s;
1419
1538
  const l = new ScaleLine$1({
1420
1539
  units: r || "metric"
1421
1540
  }), i = document.getElementById("scale-line-container");
1422
- i && (l.setTarget(i), (s = o.value) == null || s.addControl(l));
1541
+ i && (l.setTarget(i), (s = n.value) == null || s.addControl(l));
1423
1542
  }
1424
1543
  }), (r, l) => (openBlock(), createElementBlock("div", _hoisted_1$2));
1425
1544
  }
@@ -1431,22 +1550,22 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1431
1550
  }
1432
1551
  },
1433
1552
  setup(e) {
1434
- const t = inject("mapInstance"), o = () => {
1553
+ const t = inject("mapInstance"), n = () => {
1435
1554
  if (!t.value) return;
1436
1555
  const r = t.value.getView(), l = r.getZoom();
1437
1556
  l && r.setZoom(l + 1);
1438
- }, n = () => {
1557
+ }, o = () => {
1439
1558
  if (!t.value) return;
1440
1559
  const r = t.value.getView(), l = r.getZoom();
1441
1560
  l && r.setZoom(l - 1);
1442
1561
  };
1443
1562
  return (r, l) => (openBlock(), createElementBlock("div", _hoisted_1$1, [
1444
1563
  createElementVNode("div", {
1445
- onClick: o,
1564
+ onClick: n,
1446
1565
  class: "button big-button"
1447
1566
  }, "+"),
1448
1567
  createElementVNode("div", {
1449
- onClick: n,
1568
+ onClick: o,
1450
1569
  class: "button small-button"
1451
1570
  }, "-")
1452
1571
  ]));
@@ -1454,7 +1573,7 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1454
1573
  }), ZoomControl = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-602b1c0f"]]), _hoisted_1 = { class: "copyright" }, _hoisted_2 = { class: "tdt-control-copyright tdt-control" }, _hoisted_3 = ["src"], _sfc_main$1 = /* @__PURE__ */ defineComponent({
1455
1574
  __name: "copyright",
1456
1575
  setup(e) {
1457
- return (t, o) => (openBlock(), createElementBlock("div", _hoisted_1, [
1576
+ return (t, n) => (openBlock(), createElementBlock("div", _hoisted_1, [
1458
1577
  createElementVNode("div", _hoisted_2, [
1459
1578
  createElementVNode("img", {
1460
1579
  src: unref(CDN_URL) + "map/tdt-logo.png",
@@ -1463,27 +1582,27 @@ const trackId = ref(""), cursor = ref(0), renderTrack = (e, t, o, n, r = "ship")
1463
1582
  class: "logo",
1464
1583
  alt: ""
1465
1584
  }, null, 8, _hoisted_3),
1466
- o[0] || (o[0] = createElementVNode("div", { class: "copyright-text" }, "GS(2024)0568号 - 甲测资字1100471", -1))
1585
+ n[0] || (n[0] = createElementVNode("div", { class: "copyright-text" }, "GS(2024)0568号 - 甲测资字1100471", -1))
1467
1586
  ]),
1468
- o[1] || (o[1] = createElementVNode("div", {
1587
+ n[1] || (n[1] = createElementVNode("div", {
1469
1588
  id: "dataSource",
1470
1589
  class: "tdt-control data-source"
1471
1590
  }, "数据来源:自然资源部 & NavInfo", -1))
1472
1591
  ]));
1473
1592
  }
1474
- }), Copyright = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-9c5c2f7b"]]), dotImage = new Image();
1475
- dotImage.src = `${CDN_URL}/map/truck-dot.svg`;
1476
- dotImage.crossOrigin = "anonymous";
1477
- const dotActiveImage = new Image();
1478
- dotActiveImage.src = `${CDN_URL}/map/truck-dot-active.svg`;
1479
- dotActiveImage.crossOrigin = "anonymous";
1593
+ }), Copyright = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-9c5c2f7b"]]), dotImage$1 = new Image();
1594
+ dotImage$1.src = `${CDN_URL}/map/truck-dot.svg`;
1595
+ dotImage$1.crossOrigin = "anonymous";
1596
+ const dotActiveImage$1 = new Image();
1597
+ dotActiveImage$1.src = `${CDN_URL}/map/truck-dot-active.svg`;
1598
+ dotActiveImage$1.crossOrigin = "anonymous";
1480
1599
  const cameraImage = new Image();
1481
1600
  cameraImage.src = `${CDN_URL}/map/map-camera.svg`;
1482
1601
  cameraImage.crossOrigin = "anonymous";
1483
1602
  const loadImage = new Image();
1484
1603
  loadImage.src = `${CDN_URL}/map/map-load.svg`;
1485
1604
  loadImage.crossOrigin = "anonymous";
1486
- const setTruckStyle = (e, t, o, n) => new Style({
1605
+ const setTruckStyle = (e, t, n, o) => new Style({
1487
1606
  renderer: (r, l) => {
1488
1607
  const i = l.context;
1489
1608
  i.save();
@@ -1496,99 +1615,58 @@ const setTruckStyle = (e, t, o, n) => new Style({
1496
1615
  const p = 56, y = "#FFFFFF";
1497
1616
  let h = 176;
1498
1617
  const g = 52;
1499
- let L = "#164AFF", T = "#FFFFFF";
1500
- o === CAR_COLOR.YELLOW ? (h = 176, L = "#FFC81E", T = "rgba(0,0,0,0.88)") : o === CAR_COLOR.Y_GREEN && (f = 200, h = 196, L = "#8FED7C", T = "rgba(0,0,0,0.88)"), n != null && n.length && (f += n.length * 56), fillRectRadius(i, m, u, f, p, y), fillRectRadius(i, m + 2, u + 2, h, g, L), o === CAR_COLOR.Y_GREEN && fillRectRadius(i, m + 2, u + 2, 68, g, "#FFC81E"), i.save(), i.restore(), i.fillStyle = T, i.font = "bold 28px Arial", i.textAlign = "left", i.textBaseline = "middle";
1618
+ let M = "#164AFF", T = "#FFFFFF";
1619
+ n === CAR_COLOR.YELLOW ? (h = 176, M = "#FFC81E", T = "rgba(0,0,0,0.88)") : n === CAR_COLOR.Y_GREEN && (f = 200, h = 196, M = "#8FED7C", T = "rgba(0,0,0,0.88)"), o != null && o.length && (f += o.length * 56), fillRectRadius(i, m, u, f, p, y), fillRectRadius(i, m + 2, u + 2, h, g, M), n === CAR_COLOR.Y_GREEN && fillRectRadius(i, m + 2, u + 2, 68, g, "#FFC81E"), i.save(), i.restore(), i.fillStyle = T, i.font = "bold 28px Arial", i.textAlign = "left", i.textBaseline = "middle";
1501
1620
  const b = `${t.slice(0, 2) + " · " + t.slice(2)}`;
1502
- if (i.fillText(b, m + 12, u + 32), i.save(), i.restore(), n != null && n.length) {
1503
- const F = i.measureText(b).width + 12;
1621
+ if (i.fillText(b, m + 12, u + 32), i.save(), i.restore(), o != null && o.length) {
1622
+ const x = i.measureText(b).width + 12;
1504
1623
  let v = 0;
1505
- n.forEach((S) => {
1506
- S === DEVICE_TYPE.CAMERA && (i.drawImage(cameraImage, c - 54 + F + v * 56, d - 64, 50, 50), ++v), S === DEVICE_TYPE.LOAD && (i.drawImage(loadImage, c - 54 + F + v * 56, d - 64, 50, 50), ++v);
1624
+ o.forEach((w) => {
1625
+ w === DEVICE_TYPE.CAMERA && (i.drawImage(cameraImage, c - 54 + x + v * 56, d - 64, 50, 50), ++v), w === DEVICE_TYPE.LOAD && (i.drawImage(loadImage, c - 54 + x + v * 56, d - 64, 50, 50), ++v);
1507
1626
  });
1508
1627
  }
1509
- const C = dotImage;
1628
+ const C = dotImage$1;
1510
1629
  i.drawImage(C, c + f / 2 - 90, d, 50 / s, 50 / s), i.restore();
1511
1630
  }
1512
- }), mapInstance$4 = ref(), renderDashboardSetInstance = (e) => mapInstance$4.value = e;
1631
+ }), mapInstance$3 = ref(), renderDashboardSetInstance = (e) => mapInstance$3.value = e;
1513
1632
  ref([]);
1514
1633
  let truckMarkerList = [], trucksVectorSource;
1515
1634
  const renderTrucksMarker = (e) => {
1516
- if (deleteAllTruckMarkers(), !!mapInstance$4.value)
1635
+ if (deleteAllTruckMarkers(), !!mapInstance$3.value)
1517
1636
  return e.forEach((t) => {
1518
- const o = formatUtils.convertSixHundredThousandToLatLng(t.lon, t.lat), n = new Feature({
1519
- geometry: new Point(fromLonLat(o))
1637
+ const n = formatUtils.convertSixHundredThousandToLatLng(t.lon, t.lat), o = new Feature({
1638
+ geometry: new Point(fromLonLat(n))
1520
1639
  });
1521
- n.set("data", t), n.setStyle(
1640
+ o.set("data", t), o.setStyle(
1522
1641
  setTruckStyle(!1, t.vno, t == null ? void 0 : t.vclColor, t == null ? void 0 : t.icons)
1523
1642
  ), truckMarkerList.push({
1524
1643
  name: t.vno,
1525
- lonlat: o,
1526
- feature: n
1644
+ lonlat: n,
1645
+ feature: o
1527
1646
  });
1528
1647
  }), trucksVectorSource = new VectorSource({
1529
1648
  features: truckMarkerList.map((t) => t.feature)
1530
1649
  }), trucksLayer.value = new VectorLayer({
1531
1650
  source: trucksVectorSource
1532
- }), mapInstance$4.value.addLayer(trucksLayer.value), trucksLayer.value;
1651
+ }), mapInstance$3.value.addLayer(trucksLayer.value), trucksLayer.value;
1533
1652
  }, deleteAllTruckMarkers = () => {
1534
1653
  truckMarkerList.forEach((e) => {
1535
1654
  e.feature && (trucksVectorSource == null || trucksVectorSource.removeFeature(e.feature));
1536
1655
  }), truckMarkerList = [];
1537
- }, mapInstance$3 = ref(), renderCustomOverlaySetInstance = (e) => mapInstance$3.value = e, drawCustomContent = (e, t, o, n = "top-left", r = !1) => {
1538
- var m, u;
1539
- if (!t || !mapInstance$3.value) return;
1540
- document.querySelectorAll(".truck-custom-content").forEach((f) => f.parentNode.removeChild(f));
1541
- const l = document.createElement("div");
1542
- l.innerHTML = o;
1543
- const i = new Overlay({
1544
- element: l,
1545
- position: t,
1546
- // 初始位置
1547
- positioning: n,
1548
- stopEvent: r
1549
- // 设置不阻拦事件
1550
- });
1551
- if (r) {
1552
- let f = !1, p = [0, 0], y = [0, 0];
1553
- l.addEventListener("mousedown", function(h) {
1554
- var g;
1555
- f = !0, h.clientX, h.clientY, p = (g = mapInstance$3.value) == null ? void 0 : g.getCoordinateFromPixel([h.clientX - 200, h.clientY - 200]), y = [
1556
- h.clientX - l.getBoundingClientRect().left + 160,
1557
- h.clientY - l.getBoundingClientRect().top + 84
1558
- ], h.preventDefault();
1559
- }), document.addEventListener("mousemove", function(h) {
1560
- var g;
1561
- if (f) {
1562
- let L = (g = mapInstance$3.value) == null ? void 0 : g.getCoordinateFromPixel([h.clientX - y[0], h.clientY - y[1]]), T = L[0] - p[0], b = L[1] - p[1];
1563
- i.setPosition([p[0] + T, p[1] + b]);
1564
- }
1565
- }), document.addEventListener("mouseup", function() {
1566
- f = !1;
1567
- });
1568
- }
1569
- (m = mapInstance$3.value) == null || m.addOverlay(i);
1570
- const s = l.querySelector(".close-button");
1571
- s && s.addEventListener("click", () => {
1572
- var f, p;
1573
- (f = mapInstance$3.value) == null || f.removeOverlay(i), (p = l.parentNode) == null || p.removeChild(l);
1574
- });
1575
- let c = JSON.parse(JSON.stringify(t));
1576
- const d = (u = mapInstance$3.value) == null ? void 0 : u.getCoordinateFromPixel(c);
1577
- return i.setPosition(d), i;
1578
1656
  }, mapInstance$2 = ref(), renderTruckSetInstance = (e) => mapInstance$2.value = e, vehicle = ref(null), focusShipData = ref(), currentTruckOverlay = ref(null), findTruck = async (e) => {
1579
1657
  if (!mapInstance$2.value) return;
1580
1658
  focusShipData.value = e;
1581
- const t = formatUtils.convertSixHundredThousandToLatLng(e.lon, e.lat), o = mapInstance$2.value.getPixelFromCoordinate(transform(t, projection.data, projection.mercator));
1582
- currentTruckOverlay.value = drawTruckIcon(e.vno, o, e == null ? void 0 : e.drc);
1583
- const n = mapInstance$2.value.getView(), r = new Point(t);
1584
- n.setCenter(transform(r.getCoordinates(), projection.data, projection.mercator));
1659
+ const t = formatUtils.convertSixHundredThousandToLatLng(e.lon, e.lat), n = mapInstance$2.value.getPixelFromCoordinate(transform(t, projection.data, projection.mercator));
1660
+ currentTruckOverlay.value = drawTruckIcon(e.vno, n, e == null ? void 0 : e.drc);
1661
+ const o = mapInstance$2.value.getView(), r = new Point(t);
1662
+ o.setCenter(transform(r.getCoordinates(), projection.data, projection.mercator));
1585
1663
  }, clearAllTruck = () => {
1586
1664
  vehicle.value.clearAllShip();
1587
- }, drawTruckIcon = (e, t, o) => {
1588
- const n = `<div id="${e}" class="ol-custom-content truck-custom-content" style="width: 80px; height: 80px; transform: rotate(${o}deg);">
1665
+ }, drawTruckIcon = (e, t, n) => {
1666
+ const o = `<div id="${e}" class="ol-custom-content truck-custom-content" style="width: 80px; height: 80px; transform: rotate(${n}deg);">
1589
1667
  <img src="${CDN_URL}map/car-icon.gif" width="100%" height="100%" />
1590
1668
  </div>`;
1591
- return drawCustomContent(e, t, n, "center-center");
1669
+ return drawCustomContent(e, t, o, "center-center");
1592
1670
  }, removeTruckIcon = () => {
1593
1671
  var t;
1594
1672
  const e = (t = currentTruckOverlay.value) == null ? void 0 : t.getElement();
@@ -1596,11 +1674,11 @@ const renderTrucksMarker = (e) => {
1596
1674
  }, zoomTruckIcon = () => {
1597
1675
  var l;
1598
1676
  if (!mapInstance$2.value) return;
1599
- const e = mapInstance$2.value.getView().getZoom(), t = 120, o = 60;
1600
- function n(i) {
1601
- return i < 14 ? o : i >= 14 && i <= 18 ? Math.round((i - 14) * (t - o) / 4 + o) : t;
1677
+ const e = mapInstance$2.value.getView().getZoom(), t = 120, n = 60;
1678
+ function o(i) {
1679
+ return i < 14 ? n : i >= 14 && i <= 18 ? Math.round((i - 14) * (t - n) / 4 + n) : t;
1602
1680
  }
1603
- const r = n(e);
1681
+ const r = o(e);
1604
1682
  (l = document.querySelectorAll(".truck-custom-content")) == null || l.forEach((i) => {
1605
1683
  i.style.width = `${r}px`, i.style.height = `${r}px`;
1606
1684
  });
@@ -1633,14 +1711,14 @@ const renderTrucksMarker = (e) => {
1633
1711
  padding: [2, 2, 2, 2]
1634
1712
  // 设置文本背景的内边距
1635
1713
  })
1636
- }), renderMarker = (e, t = !0, o = !0) => {
1714
+ }), renderMarker = (e, t = !0, n = !0) => {
1637
1715
  var m;
1638
1716
  if (!mapInstance$1.value || !e || e.split(",").length !== 2) return;
1639
- const [n, r] = e.split(",").map(Number);
1717
+ const [o, r] = e.split(",").map(Number);
1640
1718
  marker.value = new Feature({
1641
- geometry: new Point(fromLonLat([n, r]))
1719
+ geometry: new Point(fromLonLat([o, r]))
1642
1720
  });
1643
- const l = o ? `${n}, ${r}` : "";
1721
+ const l = n ? `${o}, ${r}` : "";
1644
1722
  (m = marker.value) == null || m.setStyle(createIconStyle(l));
1645
1723
  const i = new VectorSource({
1646
1724
  features: [marker.value]
@@ -1657,15 +1735,15 @@ const renderTrucksMarker = (e) => {
1657
1735
  markerPosition.value = `${y[0].toFixed(6)}, ${y[1].toFixed(6)}`, (h = marker.value) == null || h.setStyle(createIconStyle(markerPosition.value));
1658
1736
  }), mapInstance$1.value.addInteraction(u);
1659
1737
  }
1660
- const d = new Point([n, r]);
1738
+ const d = new Point([o, r]);
1661
1739
  c.setCenter(transform(d.getCoordinates(), projection.data, projection.mercator)), c.setZoom(mapZoom.findShip);
1662
1740
  }, setMarkerPosition = (e) => {
1663
1741
  var r, l;
1664
1742
  if (!mapInstance$1.value) return;
1665
- const t = mapInstance$1.value.getView(), o = e.split(",").map(Number);
1666
- (l = (r = marker.value) == null ? void 0 : r.getGeometry()) == null || l.setCoordinates(fromLonLat([o[0], o[1]]));
1667
- const n = new Point([o[0], o[1]]);
1668
- t.setCenter(transform(n.getCoordinates(), projection.data, projection.mercator));
1743
+ const t = mapInstance$1.value.getView(), n = e.split(",").map(Number);
1744
+ (l = (r = marker.value) == null ? void 0 : r.getGeometry()) == null || l.setCoordinates(fromLonLat([n[0], n[1]]));
1745
+ const o = new Point([n[0], n[1]]);
1746
+ t.setCenter(transform(o.getCoordinates(), projection.data, projection.mercator));
1669
1747
  }, mapInstance = ref(), drawPolygonSetInstance = (e) => mapInstance.value = e;
1670
1748
  let layerState = "drawn", drawnState = "undrawn";
1671
1749
  const source = new VectorSource();
@@ -1690,18 +1768,18 @@ function createHelpTooltip() {
1690
1768
  }
1691
1769
  let squareLimitError = !1, lineLimitError = !1;
1692
1770
  const validateSquareLimit = (e) => {
1693
- let o = 1 / 0, n = -1 / 0, r = 1 / 0, l = -1 / 0;
1771
+ let n = 1 / 0, o = -1 / 0, r = 1 / 0, l = -1 / 0;
1694
1772
  e == null || e.forEach((c) => {
1695
1773
  const d = transform(c, projection.mercator, projection.data), m = d[0], u = d[1];
1696
- o = Math.min(o, u), n = Math.max(n, u), r = Math.min(r, m), l = Math.max(l, m);
1774
+ n = Math.min(n, u), o = Math.max(o, u), r = Math.min(r, m), l = Math.max(l, m);
1697
1775
  });
1698
- const i = (n - o) * 111, s = (l - r) * 111;
1776
+ const i = (o - n) * 111, s = (l - r) * 111;
1699
1777
  squareLimitError = i > 150 || s > 150;
1700
1778
  };
1701
1779
  let storeFeature;
1702
1780
  const addInteraction = (e) => {
1703
- var n, r;
1704
- drawVector || init(), drawnState = "undrawn", layerState = "drawn", (n = mapInstance.value) == null || n.addLayer(drawVector);
1781
+ var o, r;
1782
+ drawVector || init(), drawnState = "undrawn", layerState = "drawn", (o = mapInstance.value) == null || o.addLayer(drawVector);
1705
1783
  const t = new Style({
1706
1784
  stroke: new Stroke({
1707
1785
  color: "rgba(255, 255, 255, 1)",
@@ -1718,10 +1796,10 @@ const addInteraction = (e) => {
1718
1796
  trace: !0,
1719
1797
  style: [t, circleStyle]
1720
1798
  }), (r = mapInstance.value) == null || r.addInteraction(draw), createMeasureTooltip(), createHelpTooltip();
1721
- let o;
1799
+ let n;
1722
1800
  draw.on("drawstart", function(l) {
1723
1801
  var i;
1724
- layerState = "drawn", sketch = l.feature, o = (i = sketch.getGeometry()) == null ? void 0 : i.on("change", function(s) {
1802
+ layerState = "drawn", sketch = l.feature, n = (i = sketch.getGeometry()) == null ? void 0 : i.on("change", function(s) {
1725
1803
  const c = s.target;
1726
1804
  let d = formatUtils.formatArea(c, LENGTH_UNIT.NM);
1727
1805
  const u = c.getCoordinates()[0], f = new LineString([u[u.length - 2], u[u.length - 1]]);
@@ -1744,57 +1822,57 @@ const addInteraction = (e) => {
1744
1822
  const s = endFn(l.feature);
1745
1823
  s != null && s.length && e && e(s);
1746
1824
  }
1747
- if (sketch = null, measureTooltipElement = null, createMeasureTooltip(), o && unByKey(o), drawnState = "drawend", draw) {
1825
+ if (sketch = null, measureTooltipElement = null, createMeasureTooltip(), n && unByKey(n), drawnState = "drawend", draw) {
1748
1826
  const s = mapInstance.value.getInteractions().getArray().find((c) => c.ol_uid === draw.ol_uid);
1749
1827
  s && ((i = mapInstance.value) == null || i.removeInteraction(s)), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement);
1750
1828
  }
1751
1829
  });
1752
1830
  }, removeInteraction = () => {
1753
- var e, t, o;
1831
+ var e, t, n;
1754
1832
  if (mapInstance.value) {
1755
- if (document.querySelectorAll(".ol-tooltip.ol-tooltip-draw-polygon").forEach((n) => {
1833
+ if (document.querySelectorAll(".ol-tooltip.ol-tooltip-draw-polygon").forEach((o) => {
1756
1834
  var r;
1757
- (r = n == null ? void 0 : n.parentNode) == null || r.removeChild(n);
1835
+ (r = o == null ? void 0 : o.parentNode) == null || r.removeChild(o);
1758
1836
  }), 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) {
1759
- const n = mapInstance.value.getInteractions().getArray().find((r) => r.ol_uid === draw.ol_uid);
1760
- n && ((o = mapInstance.value) == null || o.removeInteraction(n));
1837
+ const o = mapInstance.value.getInteractions().getArray().find((r) => r.ol_uid === draw.ol_uid);
1838
+ o && ((n = mapInstance.value) == null || n.removeInteraction(o));
1761
1839
  }
1762
1840
  drawnState = "undrawn", layerState = "destroyed";
1763
1841
  }
1764
1842
  }, endFn = (e) => {
1765
- var t, o, n;
1843
+ var t, n, o;
1766
1844
  if (e.getGeometry()) {
1767
1845
  const r = [], i = e.getGeometry().getCoordinates();
1768
1846
  (t = i[0]) == null || t.forEach((c) => {
1769
1847
  r.push(transform(c, projection.mercator, projection.data));
1770
1848
  });
1771
1849
  const s = i[0][i[0].length - 2];
1772
- if (s && measureTooltip.setPosition(s), 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", () => {
1850
+ if (s && measureTooltip.setPosition(s), 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", () => {
1773
1851
  reset();
1774
1852
  }), !lineLimitError && !squareLimitError)
1775
1853
  return r;
1776
- draw && ((n = mapInstance.value) == null || n.removeInteraction(draw)), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement);
1854
+ draw && ((o = mapInstance.value) == null || o.removeInteraction(draw)), helpTooltipElement != null && helpTooltipElement.parentNode && helpTooltipElement.parentNode.removeChild(helpTooltipElement);
1777
1855
  }
1778
1856
  }, initFeature = (e) => {
1779
- var t, o;
1857
+ var t, n;
1780
1858
  if (layerState = "drawn", storeFeature) {
1781
- const n = storeFeature.getGeometry();
1782
- if (!n) return;
1783
- const r = formatUtils.formatArea(n, LENGTH_UNIT.NM);
1859
+ const o = storeFeature.getGeometry();
1860
+ if (!o) return;
1861
+ const r = formatUtils.formatArea(o, LENGTH_UNIT.NM);
1784
1862
  measureTooltipElement && (measureTooltipElement.innerHTML = `
1785
1863
  <span class="text">面积:${r}${lineLimitError || squareLimitError ? '<span class="error pl-12">超出可以绘画的距离</span>' : ""}</span>
1786
1864
  `), (t = drawVector.getSource()) == null || t.addFeature(storeFeature);
1787
1865
  const l = endFn(storeFeature);
1788
1866
  l != null && l.length && e && e(l);
1789
1867
  const i = getCenter(storeFeature.getGeometry().getExtent());
1790
- (o = mapInstance.value) == null || o.getView().setCenter(i);
1868
+ (n = mapInstance.value) == null || n.getView().setCenter(i);
1791
1869
  }
1792
1870
  }, pointerMoveHandler = function(e) {
1793
- var o;
1871
+ var n;
1794
1872
  if (e.dragging)
1795
1873
  return;
1796
1874
  let t = "点击选择起点";
1797
- 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");
1875
+ 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");
1798
1876
  }, init = () => {
1799
1877
  mapInstance.value && (circleStyle = new Style({
1800
1878
  image: new CircleStyle({
@@ -1842,16 +1920,16 @@ const addInteraction = (e) => {
1842
1920
  shipData: {}
1843
1921
  },
1844
1922
  emits: ["zoomChanged", "extentChanged"],
1845
- setup(e, { expose: t, emit: o }) {
1846
- const n = ref();
1847
- provide("mapInstance", n);
1848
- const r = ref(null), l = ref(null), i = ref(null), s = o, c = e, d = ref(c.zoom || mapZoom.default), m = ref(!1), u = ref(!0), f = ref(!0);
1923
+ setup(e, { expose: t, emit: n }) {
1924
+ const o = ref();
1925
+ provide("mapInstance", o);
1926
+ const r = ref(null), l = ref(null), i = ref(null), s = n, c = e, d = ref(c.zoom || mapZoom.default), m = ref(!1), u = ref(!0), f = ref(!0);
1849
1927
  let p;
1850
1928
  ((v) => {
1851
1929
  v[v.tiandituTile = new TileLayer({ source: new XYZ({ url: baseMap.tiandituTile }) })] = "tiandituTile", v[v.tiandituTileMark = new TileLayer({ source: new XYZ({ url: baseMap.tiandituTileMark }) })] = "tiandituTileMark", v[v.tiandituImgTile = new TileLayer({ source: new XYZ({ url: baseMap.tiandituImgTile }), visible: !1 })] = "tiandituImgTile", v[v.tiandituImgTileMark = new TileLayer({ source: new XYZ({ url: baseMap.tiandituImgTileMark }), visible: !1 })] = "tiandituImgTileMark", v[v.greenMark = new TileLayer({ source: new XYZ({ url: baseMap.greenTile }) })] = "greenMark";
1852
1930
  })(p || (p = {}));
1853
1931
  const y = () => {
1854
- var S, w;
1932
+ var w, k;
1855
1933
  const v = {
1856
1934
  projection: projection.mercator,
1857
1935
  // 地图投影坐标系
@@ -1869,7 +1947,7 @@ const addInteraction = (e) => {
1869
1947
  // 禁用旋转
1870
1948
  multiWorld: !0
1871
1949
  };
1872
- n.value = new Map$1({
1950
+ o.value = new Map$1({
1873
1951
  target: "map",
1874
1952
  // 对应页面里 id 为 map 的元素
1875
1953
  layers: [
@@ -1881,7 +1959,7 @@ const addInteraction = (e) => {
1881
1959
  p.greenMark
1882
1960
  ],
1883
1961
  view: new View(v)
1884
- }), h(), (S = l.value) == null || S.setScaleLine(c.vehicleMode === "ship" && "nautical"), (w = n.value) == null || w.on("moveend", b), g(v.zoom < mapZoom.shipGreenDotMax), T(c.vehicleMode === "ship" || c.viewMode === "findShip" ? BaseMapType.satellite : BaseMapType.vector), c.viewMode === "findShip" && c.mmsi && c.shipData && nextTick(() => {
1962
+ }), h(), (w = l.value) == null || w.setScaleLine(c.vehicleMode === "ship" && "nautical"), (k = o.value) == null || k.on("moveend", b), g(v.zoom < mapZoom.shipGreenDotMax), T(c.vehicleMode === "ship" || c.viewMode === "findShip" ? BaseMapType.satellite : BaseMapType.vector), c.viewMode === "findShip" && c.mmsi && c.shipData && nextTick(() => {
1885
1963
  findShip(String(c.mmsi), c.shipData);
1886
1964
  });
1887
1965
  };
@@ -1889,58 +1967,58 @@ const addInteraction = (e) => {
1889
1967
  y();
1890
1968
  });
1891
1969
  const h = () => {
1892
- 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));
1970
+ 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));
1893
1971
  }, g = (v) => {
1894
- var S;
1895
- c.vehicleMode !== "ship" && (v = !1), (S = n.value) == null || S.getLayers().forEach((w) => {
1896
- w.ol_uid === p.greenMark.ol_uid && (w.setVisible(v), u.value = v);
1972
+ var w;
1973
+ c.vehicleMode !== "ship" && (v = !1), (w = o.value) == null || w.getLayers().forEach((k) => {
1974
+ k.ol_uid === p.greenMark.ol_uid && (k.setVisible(v), u.value = v);
1897
1975
  });
1898
- }, L = ref(BaseMapType.satellite), T = (v) => {
1899
- var S;
1900
- L.value = v, (S = n.value) == null || S.getLayers().forEach((w) => {
1901
- (w.ol_uid === p.tiandituTile.ol_uid || w.ol_uid === p.tiandituTileMark.ol_uid || w.ol_uid === p.tiandituImgTile.ol_uid || w.ol_uid === p.tiandituImgTileMark.ol_uid) && w.setVisible(!1), (v === BaseMapType.vector && (w.ol_uid === p.tiandituTile.ol_uid || w.ol_uid === p.tiandituTileMark.ol_uid) || v === BaseMapType.satellite && (w.ol_uid === p.tiandituImgTile.ol_uid || w.ol_uid === p.tiandituImgTileMark.ol_uid)) && w.setVisible(!0);
1976
+ }, M = ref(BaseMapType.satellite), T = (v) => {
1977
+ var w;
1978
+ M.value = v, (w = o.value) == null || w.getLayers().forEach((k) => {
1979
+ (k.ol_uid === p.tiandituTile.ol_uid || k.ol_uid === p.tiandituTileMark.ol_uid || k.ol_uid === p.tiandituImgTile.ol_uid || k.ol_uid === p.tiandituImgTileMark.ol_uid) && k.setVisible(!1), (v === BaseMapType.vector && (k.ol_uid === p.tiandituTile.ol_uid || k.ol_uid === p.tiandituTileMark.ol_uid) || v === BaseMapType.satellite && (k.ol_uid === p.tiandituImgTile.ol_uid || k.ol_uid === p.tiandituImgTileMark.ol_uid)) && k.setVisible(!0);
1902
1980
  });
1903
1981
  }, b = () => {
1904
- const v = n.value.getView(), S = v.getZoom();
1905
- S && C(S);
1906
- const w = v.calculateExtent(n.value.getSize());
1907
- w && S && F(w, S);
1982
+ const v = o.value.getView(), w = v.getZoom();
1983
+ w && C(w);
1984
+ const k = v.calculateExtent(o.value.getSize());
1985
+ k && w && x(k, w);
1908
1986
  }, C = (v) => {
1909
- var V, k, M, E, x;
1987
+ var V, L, I, E, F;
1910
1988
  d.value = v, g(v < mapZoom.shipGreenDotMax);
1911
- const S = (V = n.value) == null ? void 0 : V.getLayers(), w = c.vehicleMode === "ship" ? S == null ? void 0 : S.getArray().find((P) => P.ol_uid === p.greenMark.ol_uid) : void 0;
1912
- showTrackLayer.value ? (f.value = !1, w == null || w.setVisible(!1), (k = shipsLayer.value) == null || k.setVisible(!1), (M = largeAmountShipsLayer.value) == null || M.setVisible(!1)) : !m.value && u.value && v <= mapZoom.shipGreenDotMax ? (f.value = !0, w == null || w.setVisible(!0), (E = shipsLayer.value) == null || E.setVisible(!1), (x = largeAmountShipsLayer.value) == null || x.setVisible(!1)) : (f.value = !1, w == null || w.setVisible(!1)), s("zoomChanged", v);
1913
- }, F = (v, S) => {
1914
- const w = transform([v[0], v[1]], projection.mercator, projection.data), V = transform([v[2], v[3]], projection.mercator, projection.data);
1915
- s("extentChanged", { extent: [w, V], zoom: S });
1989
+ const w = (V = o.value) == null ? void 0 : V.getLayers(), k = c.vehicleMode === "ship" ? w == null ? void 0 : w.getArray().find((N) => N.ol_uid === p.greenMark.ol_uid) : void 0;
1990
+ showTrackLayer.value ? (f.value = !1, k == null || k.setVisible(!1), (L = shipsLayer.value) == null || L.setVisible(!1), (I = largeAmountShipsLayer.value) == null || I.setVisible(!1)) : !m.value && u.value && v <= mapZoom.shipGreenDotMax ? (f.value = !0, k == null || k.setVisible(!0), (E = shipsLayer.value) == null || E.setVisible(!1), (F = largeAmountShipsLayer.value) == null || F.setVisible(!1)) : (f.value = !1, k == null || k.setVisible(!1)), s("zoomChanged", v);
1991
+ }, x = (v, w) => {
1992
+ const k = transform([v[0], v[1]], projection.mercator, projection.data), V = transform([v[2], v[3]], projection.mercator, projection.data);
1993
+ s("extentChanged", { extent: [k, V], zoom: w });
1916
1994
  };
1917
1995
  return t({
1918
- mapInstance: n,
1996
+ mapInstance: o,
1919
1997
  initMap: y,
1920
1998
  renderTrucksMarker,
1921
1999
  renderShip: renderShips,
1922
- renderTrack: (v, S, w) => {
1923
- var V, k;
1924
- currentTrackId.value = v, showTrackLayer.value = !0, m.value = !0, hiddenAllShips(), (k = (V = largeAmountShipsLayer.value) == null ? void 0 : V.getSource()) == null || k.clear(), renderTrack(v, S, w, LENGTH_UNIT.NM);
2000
+ renderTrack: (v, w, k) => {
2001
+ var V, L;
2002
+ currentTrackId.value = v, showTrackLayer.value = !0, m.value = !0, hiddenAllShips(), (L = (V = largeAmountShipsLayer.value) == null ? void 0 : V.getSource()) == null || L.clear(), renderTrack(v, w, k, LENGTH_UNIT.NM);
1925
2003
  },
1926
2004
  findTruck,
1927
2005
  removeTruckIcon,
1928
2006
  clearAllTruck,
1929
2007
  closeTrack: () => {
1930
- var v, S;
1931
- showTrackLayer.value = !1, (v = shipTrackVectorLayer.value) == null || v.setVisible(!1), (S = selectShipsLayer.value) == null || S.setVisible(!0), m.value = !1, g(d.value < mapZoom.shipGreenDotMax), allTracks.value = [], stopAnimation();
2008
+ var v, w;
2009
+ showTrackLayer.value = !1, (v = shipTrackVectorLayer.value) == null || v.setVisible(!1), (w = selectShipsLayer.value) == null || w.setVisible(!0), m.value = !1, g(d.value < mapZoom.shipGreenDotMax), allTracks.value = [], stopAnimation();
1932
2010
  },
1933
2011
  closeTruckTrack: () => {
1934
- var v, S;
1935
- showTrackLayer.value = !1, (v = shipTrackVectorLayer.value) == null || v.setVisible(!1), (S = selectShipsLayer.value) == null || S.setVisible(!0), stopAnimation();
2012
+ var v, w;
2013
+ showTrackLayer.value = !1, (v = shipTrackVectorLayer.value) == null || v.setVisible(!1), (w = selectShipsLayer.value) == null || w.setVisible(!0), stopAnimation();
1936
2014
  },
1937
2015
  resetTrackView,
1938
2016
  playTrack,
1939
2017
  clearSelectFeature,
1940
2018
  findShip,
1941
- focusShip: (v, S, w = !0) => {
1942
- var V, k;
1943
- hiddenOrther.value = w, (V = shipsLayer.value) == null || V.setVisible(!w), (k = largeAmountShipsLayer.value) == null || k.setVisible(!1), findShip(v, S);
2019
+ focusShip: (v, w, k = !0) => {
2020
+ var V, L;
2021
+ hiddenOrther.value = k, (V = shipsLayer.value) == null || V.setVisible(!k), (L = largeAmountShipsLayer.value) == null || L.setVisible(!1), findShip(v, w);
1944
2022
  },
1945
2023
  showTracks,
1946
2024
  removeAllTrackLayer,
@@ -1948,25 +2026,25 @@ const addInteraction = (e) => {
1948
2026
  rerenderShip,
1949
2027
  switchGreenDot: () => g(!1),
1950
2028
  zoomTruckIcon,
1951
- renderTruckTrack: (v, S, w) => {
1952
- showTrackLayer.value = !0, renderTrack(v, S, w, LENGTH_UNIT.KM, "truck");
2029
+ renderTruckTrack: (v, w, k) => {
2030
+ showTrackLayer.value = !0, renderTrack(v, w, k, LENGTH_UNIT.KM, "truck");
1953
2031
  },
1954
2032
  removerLayer: removeShipTrackLineFeatureByIndex,
1955
2033
  renderMarker,
1956
2034
  setMarkerPosition,
1957
2035
  getZoomAndCenter: () => {
1958
- var k;
1959
- const v = (k = n.value) == null ? void 0 : k.getView();
2036
+ var L;
2037
+ const v = (L = o.value) == null ? void 0 : L.getView();
1960
2038
  if (!v) return null;
1961
- const S = Math.round(Number(v.getZoom())), { lon: w, lat: V } = transformUtils.mercatorToLonLat(v.getCenter());
1962
- return { zoom: S, center: [w, V] };
2039
+ const w = Math.round(Number(v.getZoom())), { lon: k, lat: V } = transformUtils.mercatorToLonLat(v.getCenter());
2040
+ return { zoom: w, center: [k, V] };
1963
2041
  },
1964
2042
  setCenter: (v) => {
1965
2043
  var V;
1966
- const S = (V = n.value) == null ? void 0 : V.getView();
1967
- if (!S) return null;
1968
- const w = new Point(v);
1969
- S.setCenter(transform(w.getCoordinates(), projection.data, projection.mercator));
2044
+ const w = (V = o.value) == null ? void 0 : V.getView();
2045
+ if (!w) return null;
2046
+ const k = new Point(v);
2047
+ w.setCenter(transform(k.getCoordinates(), projection.data, projection.mercator));
1970
2048
  },
1971
2049
  drawPolygonTool,
1972
2050
  setMapInstance: h,
@@ -1978,12 +2056,12 @@ const addInteraction = (e) => {
1978
2056
  transform: transformUtils,
1979
2057
  format: formatUtils
1980
2058
  }
1981
- }), (v, S) => (openBlock(), createElementBlock("div", {
2059
+ }), (v, w) => (openBlock(), createElementBlock("div", {
1982
2060
  class: "map-page map-container",
1983
2061
  ref_key: "pageRef",
1984
2062
  ref: r
1985
2063
  }, [
1986
- S[0] || (S[0] = createElementVNode("div", {
2064
+ w[0] || (w[0] = createElementVNode("div", {
1987
2065
  id: "map",
1988
2066
  class: "map"
1989
2067
  }, null, -1)),
@@ -1992,7 +2070,7 @@ const addInteraction = (e) => {
1992
2070
  "view-mode": v.viewMode,
1993
2071
  "disable-green-dot": m.value,
1994
2072
  "show-track-layer": unref(showTrackLayer),
1995
- "map-tile-mode": L.value,
2073
+ "map-tile-mode": M.value,
1996
2074
  onSwitchGreenDot: g,
1997
2075
  onSwitchMapTile: T
1998
2076
  }, {
@@ -2014,7 +2092,180 @@ const addInteraction = (e) => {
2014
2092
  createVNode(Copyright)
2015
2093
  ], 512));
2016
2094
  }
2017
- }), Map = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d4bd9364"]]), ZhMap = withInstall(Map);
2095
+ }), Map = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d4bd9364"]]), dotImage = new Image();
2096
+ dotImage.crossOrigin = "anonymous";
2097
+ const dotActiveImage = new Image();
2098
+ dotActiveImage.crossOrigin = "anonymous";
2099
+ const setPointStyle = (e, t, n) => {
2100
+ const { color: o, url: r, activeUrl: l, activeColor: i } = n;
2101
+ return (l || r) && (e ? dotActiveImage.src = CDN_URL + (l || r) : dotImage.src = CDN_URL + (r || l)), new Style({
2102
+ renderer: (s, c) => {
2103
+ const d = c.context;
2104
+ d.save();
2105
+ let m = 1;
2106
+ d.scale(m, m);
2107
+ let [u, f] = s;
2108
+ u = u / m, f = f / m, d.font = "12px Arial";
2109
+ const p = d.measureText(t).width, y = u - p / 2, h = f - 10, g = p + 4, M = 20, T = e && i || o;
2110
+ if (fillRectRadius(d, y, h + 30, g, M, T), d.save(), d.restore(), d.fillStyle = e ? "#FFFFFF" : "#000000", d.textAlign = "center", d.textBaseline = "middle", d.fillText(t, y + (p + 4) / 2, h + 41), d.save(), d.restore(), r || l) {
2111
+ const b = e ? dotActiveImage : dotImage;
2112
+ d.drawImage(b, u - b.width / 2, f - b.height / 2, 40 / m, 40 / m);
2113
+ }
2114
+ d.restore();
2115
+ }
2116
+ });
2117
+ };
2118
+ class PointMarkerClass {
2119
+ /**
2120
+ * 地图实例
2121
+ * @param mapInstance
2122
+ * 配置渲染点的样式
2123
+ * @param options
2124
+ */
2125
+ constructor(t, n) {
2126
+ S(this, "mapInstance");
2127
+ // 渲染的数据
2128
+ S(this, "pointMarkerList", []);
2129
+ // 绘制点渲染层数据
2130
+ S(this, "pointsVectorSource");
2131
+ // 当前高亮的数据
2132
+ S(this, "highlightPoint");
2133
+ S(this, "pointLayer");
2134
+ // 颜色等其他设置
2135
+ S(this, "options");
2136
+ this.mapInstance = t, this.options = n;
2137
+ }
2138
+ /**
2139
+ * 渲染
2140
+ * @param list
2141
+ * 格式:
2142
+ * 获取数据的id
2143
+ * id
2144
+ * 地图显示
2145
+ * name
2146
+ * fullName,
2147
+ * 经纬度
2148
+ * lon,
2149
+ * lat,
2150
+ * 渲染点的数据类型,好通过这个判断点击地图获取到的类型, 任意字符串
2151
+ * pointType
2152
+ */
2153
+ renderPointMarker(t) {
2154
+ if (this.deleteAllPointMarkers(), !this.mapInstance) return;
2155
+ let n = {};
2156
+ t.forEach((o) => {
2157
+ var l;
2158
+ const r = [o.lon, o.lat];
2159
+ if (((l = this.highlightPoint) == null ? void 0 : l.id) === o.id)
2160
+ n = {
2161
+ id: o.id,
2162
+ name: o.name,
2163
+ lonlat: [Number(o.lon), Number(o.lat)],
2164
+ pointType: o.pointType
2165
+ };
2166
+ else {
2167
+ const i = this.getFeature(o, r);
2168
+ this.pointMarkerList.push({
2169
+ id: o.id,
2170
+ name: o.name,
2171
+ lonlat: [Number(o.lon), Number(o.lat)],
2172
+ feature: i,
2173
+ pointType: o.pointType
2174
+ });
2175
+ }
2176
+ }), n && n.lonlat && (n.feature = this.getFeature(n, n.lonlat), this.pointMarkerList.push(n)), this.pointsVectorSource = new VectorSource({
2177
+ features: [...this.pointMarkerList.map((o) => o.feature)]
2178
+ }), this.pointLayer = new VectorLayer({
2179
+ source: this.pointsVectorSource
2180
+ }), this.mapInstance.addLayer(this.pointLayer), console.log(this.pointLayer);
2181
+ }
2182
+ // 删除所有已渲染的点
2183
+ deleteAllPointMarkers() {
2184
+ this.pointMarkerList.forEach((t) => {
2185
+ var n;
2186
+ t.feature && ((n = this.pointsVectorSource) == null || n.removeFeature(t.feature));
2187
+ }), this.pointMarkerList = [];
2188
+ }
2189
+ // 取消高亮
2190
+ cancelHighlightTruckMarker() {
2191
+ var r;
2192
+ if (!this.highlightPoint)
2193
+ return;
2194
+ const { id: t, name: n } = this.highlightPoint, o = this.pointMarkerList.find((l) => l.id === t);
2195
+ t && o && o.feature && ((r = this.pointsVectorSource) == null || r.removeFeature(o.feature), o.feature.setStyle(
2196
+ setPointStyle(!1, n, this.options)
2197
+ ));
2198
+ }
2199
+ /**
2200
+ * 设置选中
2201
+ * 渲染
2202
+ * @param item
2203
+ * 格式:
2204
+ * 获取数据的id
2205
+ * id
2206
+ * 地图显示
2207
+ * name
2208
+ * fullName,
2209
+ * 经纬度
2210
+ * lon,
2211
+ * lat,
2212
+ * 渲染点的数据类型,好通过这个判断点击地图获取到的类型, 任意字符串
2213
+ * pointType
2214
+ */
2215
+ highlightPointMarker(t) {
2216
+ if (!this.mapInstance) return;
2217
+ const { id: n, name: o, fullName: r, lon: l, lat: i, pointType: s } = t, c = [Number(l), Number(i)];
2218
+ this.highlightPoint = {
2219
+ id: n,
2220
+ name: o,
2221
+ fullName: r,
2222
+ lonlat: c,
2223
+ pointType: s
2224
+ }, this.setPointCenter(c);
2225
+ }
2226
+ //隐藏其他点
2227
+ hiddenPointMarker(t) {
2228
+ this.pointMarkerList.forEach((n) => {
2229
+ n.id !== t && n.feature && n.feature.setStyle(void 0);
2230
+ });
2231
+ }
2232
+ // 获取feature
2233
+ getFeature(t, n) {
2234
+ var r;
2235
+ const o = new Feature({
2236
+ geometry: new Point(fromLonLat(n))
2237
+ });
2238
+ return o.set("data", t), o.setStyle(
2239
+ setPointStyle(((r = this.highlightPoint) == null ? void 0 : r.id) === t.id, t.name, this.options)
2240
+ ), o;
2241
+ }
2242
+ /**
2243
+ *
2244
+ * @param lonlat 经纬度
2245
+ * @param options {
2246
+ * customZoom 自定义层级
2247
+ * type 0: 不改变地图大小 1: 等于customZoom 2: 地图当前zoom > 传入的customZoom(缩小地图) 3: 地图当前zoom < 传入的customZoom(放大地图)
2248
+ * }
2249
+ */
2250
+ setPointCenter(t, n = { customZoom: mapZoom.findShip, type: 1 }) {
2251
+ if (!this.mapInstance) return;
2252
+ const { customZoom: o = mapZoom.findShip, type: r = 1 } = n, l = this.mapInstance.getView(), i = l.getZoom();
2253
+ (r === 1 || i > o && r === 2 || i < o && r === 3) && l.setZoom(o);
2254
+ const s = new Point(t);
2255
+ l.setCenter(transform(s.getCoordinates(), projection.data, projection.mercator));
2256
+ }
2257
+ }
2258
+ const ZhMap = withInstall(Map);
2018
2259
  export {
2019
- ZhMap as Z
2260
+ CDN_URL as C,
2261
+ DEFAULT_VALUE as D,
2262
+ LOG_DATE_FORMAT as L,
2263
+ PointMarkerClass as P,
2264
+ ZhMap as Z,
2265
+ mapDefaultCenter as a,
2266
+ baseMap as b,
2267
+ mapZoom as m,
2268
+ projection as p,
2269
+ renderShipsLimit as r,
2270
+ tiandituKey as t
2020
2271
  };