vue-openlayers-plugin 1.0.73 → 1.0.76

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 (24) hide show
  1. package/lib/{index-363194c0.mjs → index-5997484a.mjs} +834 -612
  2. package/lib/{index.es-a7ad7c48.mjs → index.es-5569f6dd.mjs} +1 -1
  3. package/lib/index.esm.js +1 -1
  4. package/lib/index.umd.js +834 -611
  5. package/lib/style.css +114 -0
  6. package/package.json +1 -1
  7. package/types/src/components/CustomOpenlayer/components/OlBaseLayerSwitcher.vue.d.ts +19 -0
  8. package/types/src/components/CustomOpenlayer/components/OlBaseLayerSwitcher.vue.d.ts.map +1 -0
  9. package/types/src/components/CustomOpenlayer/components/dialogs/LayerPanel.vue.d.ts +36 -0
  10. package/types/src/components/CustomOpenlayer/components/dialogs/LayerPanel.vue.d.ts.map +1 -1
  11. package/types/src/components/CustomOpenlayer/types/index.d.ts +10 -0
  12. package/types/src/components/CustomOpenlayer/types/index.d.ts.map +1 -1
  13. package/types/src/components/CustomOpenlayer/utils/featureHighlightManager.d.ts.map +1 -1
  14. package/types/src/components/CustomOpenlayer/utils/geoJsonLocationTool.d.ts +13 -1
  15. package/types/src/components/CustomOpenlayer/utils/geoJsonLocationTool.d.ts.map +1 -1
  16. package/types/src/components/CustomOpenlayer/utils/layers/GeoJSONLayerHandler.d.ts.map +1 -1
  17. package/types/src/components/CustomOpenlayer/utils/layers/ImageVectorLayerHandler.d.ts.map +1 -1
  18. package/types/src/components/CustomOpenlayer/utils/layers/VectorTileLayerHandler.d.ts.map +1 -1
  19. package/types/src/components/CustomOpenlayer/utils/mapManager.d.ts +5 -1
  20. package/types/src/components/CustomOpenlayer/utils/mapManager.d.ts.map +1 -1
  21. package/types/src/components/CustomOpenlayer/utils/styles/StyleFactory.d.ts.map +1 -1
  22. package/types/src/components/CustomOpenlayer/utils/styles/StyleManager.d.ts.map +1 -1
  23. package/types/src/components/CustomOpenlayer/utils/styles/interfaces.d.ts +2 -0
  24. package/types/src/components/CustomOpenlayer/utils/styles/interfaces.d.ts.map +1 -1
@@ -1561,7 +1561,7 @@ const __default__$5 = defineComponent({
1561
1561
  name: "ElIcon",
1562
1562
  inheritAttrs: false
1563
1563
  });
1564
- const _sfc_main$y = /* @__PURE__ */ defineComponent({
1564
+ const _sfc_main$z = /* @__PURE__ */ defineComponent({
1565
1565
  ...__default__$5,
1566
1566
  props: iconProps,
1567
1567
  setup(__props) {
@@ -1586,7 +1586,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
1586
1586
  };
1587
1587
  }
1588
1588
  });
1589
- var Icon$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["__file", "icon.vue"]]);
1589
+ var Icon$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__file", "icon.vue"]]);
1590
1590
  const ElIcon = withInstall(Icon$4);
1591
1591
  /*! Element Plus Icons Vue v2.3.2 */
1592
1592
  var _sfc_main2 = /* @__PURE__ */ defineComponent({
@@ -2863,7 +2863,7 @@ const __default__$4 = defineComponent({
2863
2863
  name: COMPONENT_NAME,
2864
2864
  inheritAttrs: false
2865
2865
  });
2866
- const _sfc_main$x = /* @__PURE__ */ defineComponent({
2866
+ const _sfc_main$y = /* @__PURE__ */ defineComponent({
2867
2867
  ...__default__$4,
2868
2868
  props: inputProps,
2869
2869
  emits: inputEmits,
@@ -3274,7 +3274,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
3274
3274
  };
3275
3275
  }
3276
3276
  });
3277
- var Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["__file", "input.vue"]]);
3277
+ var Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["__file", "input.vue"]]);
3278
3278
  const ElInput = withInstall(Input);
3279
3279
  const FOCUS_AFTER_TRAPPED = "focus-trap.focus-after-trapped";
3280
3280
  const FOCUS_AFTER_RELEASED = "focus-trap.focus-after-released";
@@ -3469,7 +3469,7 @@ const useEscapeKeydown = (handler) => {
3469
3469
  }
3470
3470
  });
3471
3471
  };
3472
- const _sfc_main$w = defineComponent({
3472
+ const _sfc_main$x = defineComponent({
3473
3473
  name: "ElFocusTrap",
3474
3474
  inheritAttrs: false,
3475
3475
  props: {
@@ -3714,7 +3714,7 @@ const _sfc_main$w = defineComponent({
3714
3714
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
3715
3715
  return renderSlot(_ctx.$slots, "default", { handleKeydown: _ctx.onKeydown });
3716
3716
  }
3717
- var ElFocusTrap = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["render", _sfc_render$1], ["__file", "focus-trap.vue"]]);
3717
+ var ElFocusTrap = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["render", _sfc_render$1], ["__file", "focus-trap.vue"]]);
3718
3718
  const badgeProps = buildProps({
3719
3719
  value: {
3720
3720
  type: [String, Number],
@@ -3750,7 +3750,7 @@ const badgeProps = buildProps({
3750
3750
  const __default__$3 = defineComponent({
3751
3751
  name: "ElBadge"
3752
3752
  });
3753
- const _sfc_main$v = /* @__PURE__ */ defineComponent({
3753
+ const _sfc_main$w = /* @__PURE__ */ defineComponent({
3754
3754
  ...__default__$3,
3755
3755
  props: badgeProps,
3756
3756
  setup(__props, { expose }) {
@@ -3812,7 +3812,7 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
3812
3812
  };
3813
3813
  }
3814
3814
  });
3815
- var Badge = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__file", "badge.vue"]]);
3815
+ var Badge = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["__file", "badge.vue"]]);
3816
3816
  const ElBadge = withInstall(Badge);
3817
3817
  const buttonGroupContextKey = Symbol("buttonGroupContextKey");
3818
3818
  const useDeprecated = ({ from, replacement, scope, version: version2, ref: ref2, type = "API" }, condition) => {
@@ -4907,7 +4907,7 @@ function useButtonCustomStyle(props) {
4907
4907
  const __default__$2 = defineComponent({
4908
4908
  name: "ElButton"
4909
4909
  });
4910
- const _sfc_main$u = /* @__PURE__ */ defineComponent({
4910
+ const _sfc_main$v = /* @__PURE__ */ defineComponent({
4911
4911
  ...__default__$2,
4912
4912
  props: buttonProps,
4913
4913
  emits: buttonEmits,
@@ -4985,7 +4985,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
4985
4985
  };
4986
4986
  }
4987
4987
  });
4988
- var Button$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["__file", "button.vue"]]);
4988
+ var Button$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__file", "button.vue"]]);
4989
4989
  const buttonGroupProps = {
4990
4990
  size: buttonProps.size,
4991
4991
  type: buttonProps.type
@@ -4993,7 +4993,7 @@ const buttonGroupProps = {
4993
4993
  const __default__$1 = defineComponent({
4994
4994
  name: "ElButtonGroup"
4995
4995
  });
4996
- const _sfc_main$t = /* @__PURE__ */ defineComponent({
4996
+ const _sfc_main$u = /* @__PURE__ */ defineComponent({
4997
4997
  ...__default__$1,
4998
4998
  props: buttonGroupProps,
4999
4999
  setup(__props) {
@@ -5012,7 +5012,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
5012
5012
  };
5013
5013
  }
5014
5014
  });
5015
- var ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__file", "button-group.vue"]]);
5015
+ var ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["__file", "button-group.vue"]]);
5016
5016
  const ElButton = withInstall(Button$2, {
5017
5017
  ButtonGroup
5018
5018
  });
@@ -5459,7 +5459,7 @@ const getOffsetOrSpace = (id, offset, placement) => {
5459
5459
  const __default__ = defineComponent({
5460
5460
  name: "ElMessage"
5461
5461
  });
5462
- const _sfc_main$s = /* @__PURE__ */ defineComponent({
5462
+ const _sfc_main$t = /* @__PURE__ */ defineComponent({
5463
5463
  ...__default__,
5464
5464
  props: messageProps,
5465
5465
  emits: messageEmits,
@@ -5613,7 +5613,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
5613
5613
  };
5614
5614
  }
5615
5615
  });
5616
- var MessageConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["__file", "message.vue"]]);
5616
+ var MessageConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__file", "message.vue"]]);
5617
5617
  let seed = 1;
5618
5618
  const normalizeAppendTo = (normalized) => {
5619
5619
  const appendTo = normalized.appendTo;
@@ -5808,7 +5808,7 @@ const TrapFocus = {
5808
5808
  }
5809
5809
  }
5810
5810
  };
5811
- const _sfc_main$r = defineComponent({
5811
+ const _sfc_main$s = defineComponent({
5812
5812
  name: "ElMessageBox",
5813
5813
  directives: {
5814
5814
  TrapFocus
@@ -6280,7 +6280,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
6280
6280
  _: 3
6281
6281
  }, 8, ["onAfterLeave"]);
6282
6282
  }
6283
- var MessageBoxConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["render", _sfc_render], ["__file", "index.vue"]]);
6283
+ var MessageBoxConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["render", _sfc_render], ["__file", "index.vue"]]);
6284
6284
  const messageInstance = /* @__PURE__ */ new Map();
6285
6285
  const getAppendToElement = (props) => {
6286
6286
  let appendTo = document.body;
@@ -81121,12 +81121,308 @@ class MapOperationTool {
81121
81121
  this.locateToGeoJSON(featureCollection2, options);
81122
81122
  }
81123
81123
  }
81124
+ const DEFAULT_HIGHLIGHT_STYLE = {
81125
+ fill: {
81126
+ color: "rgba(255, 255, 0, 0.3)",
81127
+ // 黄色半透明填充
81128
+ opacity: 0.3
81129
+ },
81130
+ stroke: {
81131
+ color: "#ffff00",
81132
+ // 黄色描边
81133
+ width: 3,
81134
+ lineDash: [5, 5]
81135
+ // 虚线
81136
+ },
81137
+ circle: {
81138
+ radius: 8,
81139
+ fill: {
81140
+ color: "rgba(255, 255, 0, 0.6)",
81141
+ opacity: 0.6
81142
+ },
81143
+ stroke: {
81144
+ color: "#ffff00",
81145
+ width: 3
81146
+ }
81147
+ },
81148
+ text: {
81149
+ font: "12px Arial",
81150
+ fill: {
81151
+ color: "#000000"
81152
+ },
81153
+ stroke: {
81154
+ color: "#ffffff",
81155
+ width: 2
81156
+ },
81157
+ offsetY: -15,
81158
+ scale: 1.2
81159
+ }
81160
+ };
81161
+ class FeatureHighlightManager {
81162
+ constructor(map2, styleConfig) {
81163
+ __publicField(this, "map");
81164
+ __publicField(this, "highlightLayer");
81165
+ __publicField(this, "highlightedFeatures", /* @__PURE__ */ new Map());
81166
+ __publicField(this, "styleConfig");
81167
+ __publicField(this, "featureIdCounter", 0);
81168
+ this.map = map2;
81169
+ this.styleConfig = { ...DEFAULT_HIGHLIGHT_STYLE, ...styleConfig };
81170
+ this.highlightedFeatures = /* @__PURE__ */ new Map();
81171
+ this.highlightLayer = new VectorLayer$3({
81172
+ source: new VectorSource$2(),
81173
+ style: this.createHighlightStyle.bind(this),
81174
+ zIndex: 9999
81175
+ // 确保高亮图层在最上层
81176
+ });
81177
+ this.map.addLayer(this.highlightLayer);
81178
+ }
81179
+ /**
81180
+ * 确保 highlightedFeatures 是有效的 Map 实例
81181
+ */
81182
+ ensureHighlightedFeaturesMap() {
81183
+ if (!this.highlightedFeatures || !(this.highlightedFeatures instanceof Map)) {
81184
+ console.warn("FeatureHighlightManager: highlightedFeatures corrupted, reinitializing...");
81185
+ this.highlightedFeatures = /* @__PURE__ */ new Map();
81186
+ }
81187
+ }
81188
+ /**
81189
+ * 创建高亮样式
81190
+ */
81191
+ createHighlightStyle(feature2) {
81192
+ var _a3, _b3, _c2, _d, _e2, _f;
81193
+ const geometry2 = feature2.getGeometry();
81194
+ const geometryType = geometry2 == null ? void 0 : geometry2.getType();
81195
+ const styleOptions = {};
81196
+ if (geometryType === "Point" || geometryType === "MultiPoint") {
81197
+ if (this.styleConfig.circle) {
81198
+ styleOptions.image = new Circle$8({
81199
+ radius: this.styleConfig.circle.radius || 8,
81200
+ fill: new Fill$2({
81201
+ color: ((_a3 = this.styleConfig.circle.fill) == null ? void 0 : _a3.color) || "rgba(255, 255, 0, 0.6)"
81202
+ }),
81203
+ stroke: new Stroke$2({
81204
+ color: ((_b3 = this.styleConfig.circle.stroke) == null ? void 0 : _b3.color) || "#ffff00",
81205
+ width: ((_c2 = this.styleConfig.circle.stroke) == null ? void 0 : _c2.width) || 3
81206
+ })
81207
+ });
81208
+ }
81209
+ } else {
81210
+ if (this.styleConfig.fill) {
81211
+ styleOptions.fill = new Fill$2({
81212
+ color: this.styleConfig.fill.color || "rgba(255, 255, 0, 0.3)"
81213
+ });
81214
+ }
81215
+ if (this.styleConfig.stroke) {
81216
+ styleOptions.stroke = new Stroke$2({
81217
+ color: this.styleConfig.stroke.color || "#ffff00",
81218
+ width: this.styleConfig.stroke.width || 3,
81219
+ lineDash: this.styleConfig.stroke.lineDash || [5, 5]
81220
+ });
81221
+ }
81222
+ }
81223
+ if (this.styleConfig.text) {
81224
+ const properties = feature2.getProperties();
81225
+ const labelText = properties.name || properties.label || "高亮要素";
81226
+ styleOptions.text = new Text$5({
81227
+ text: labelText,
81228
+ font: this.styleConfig.text.font || "12px Arial",
81229
+ fill: new Fill$2({
81230
+ color: ((_d = this.styleConfig.text.fill) == null ? void 0 : _d.color) || "#000000"
81231
+ }),
81232
+ stroke: new Stroke$2({
81233
+ color: ((_e2 = this.styleConfig.text.stroke) == null ? void 0 : _e2.color) || "#ffffff",
81234
+ width: ((_f = this.styleConfig.text.stroke) == null ? void 0 : _f.width) || 2
81235
+ }),
81236
+ offsetY: this.styleConfig.text.offsetY || -15,
81237
+ scale: this.styleConfig.text.scale || 1.2
81238
+ });
81239
+ }
81240
+ return new Style$3(styleOptions);
81241
+ }
81242
+ /**
81243
+ * 根据图层配置创建自定义高亮样式
81244
+ */
81245
+ createCustomHighlightStyle(feature2, customStyleConfig) {
81246
+ var _a3, _b3, _c2, _d, _e2, _f, _g, _h, _i2, _j;
81247
+ const geometry2 = feature2.getGeometry();
81248
+ const geometryType = geometry2 == null ? void 0 : geometry2.getType();
81249
+ const styleOptions = {};
81250
+ if (geometryType === "Point" || geometryType === "MultiPoint") {
81251
+ if (customStyleConfig == null ? void 0 : customStyleConfig.circle) {
81252
+ styleOptions.image = new Circle$8({
81253
+ radius: customStyleConfig.circle.radius || 8,
81254
+ fill: new Fill$2({
81255
+ color: ((_a3 = customStyleConfig.circle.fill) == null ? void 0 : _a3.color) || "rgba(255, 255, 0, 0.6)"
81256
+ }),
81257
+ stroke: new Stroke$2({
81258
+ color: ((_b3 = customStyleConfig.circle.stroke) == null ? void 0 : _b3.color) || "#ffff00",
81259
+ width: ((_c2 = customStyleConfig.circle.stroke) == null ? void 0 : _c2.width) || 3
81260
+ })
81261
+ });
81262
+ }
81263
+ } else {
81264
+ if ((customStyleConfig == null ? void 0 : customStyleConfig.fill) || (customStyleConfig == null ? void 0 : customStyleConfig.fillColor)) {
81265
+ const color2 = ((_d = customStyleConfig == null ? void 0 : customStyleConfig.fill) == null ? void 0 : _d.color) || (customStyleConfig == null ? void 0 : customStyleConfig.fillColor) || "rgba(255, 255, 0, 0.3)";
81266
+ styleOptions.fill = new Fill$2({
81267
+ color: color2
81268
+ });
81269
+ }
81270
+ if ((customStyleConfig == null ? void 0 : customStyleConfig.stroke) || (customStyleConfig == null ? void 0 : customStyleConfig.strokeColor)) {
81271
+ const color2 = ((_e2 = customStyleConfig == null ? void 0 : customStyleConfig.stroke) == null ? void 0 : _e2.color) || (customStyleConfig == null ? void 0 : customStyleConfig.strokeColor) || "#ffff00";
81272
+ const width = ((_f = customStyleConfig == null ? void 0 : customStyleConfig.stroke) == null ? void 0 : _f.width) || (customStyleConfig == null ? void 0 : customStyleConfig.strokeWidth) || 3;
81273
+ const lineDash = ((_g = customStyleConfig == null ? void 0 : customStyleConfig.stroke) == null ? void 0 : _g.lineDash) || (customStyleConfig == null ? void 0 : customStyleConfig.lineDash) || [5, 5];
81274
+ styleOptions.stroke = new Stroke$2({
81275
+ color: color2,
81276
+ width,
81277
+ lineDash
81278
+ });
81279
+ }
81280
+ }
81281
+ if (customStyleConfig == null ? void 0 : customStyleConfig.text) {
81282
+ const properties = feature2.getProperties();
81283
+ const labelText = properties.name || properties.label || "高亮要素";
81284
+ styleOptions.text = new Text$5({
81285
+ text: labelText,
81286
+ font: customStyleConfig.text.font || "12px Arial",
81287
+ fill: new Fill$2({
81288
+ color: ((_h = customStyleConfig.text.fill) == null ? void 0 : _h.color) || "#000000"
81289
+ }),
81290
+ stroke: new Stroke$2({
81291
+ color: ((_i2 = customStyleConfig.text.stroke) == null ? void 0 : _i2.color) || "#ffffff",
81292
+ width: ((_j = customStyleConfig.text.stroke) == null ? void 0 : _j.width) || 2
81293
+ }),
81294
+ offsetX: customStyleConfig.text.offsetX || 0,
81295
+ offsetY: customStyleConfig.text.offsetY || -15,
81296
+ scale: customStyleConfig.text.scale || 1.2
81297
+ });
81298
+ }
81299
+ return new Style$3(styleOptions);
81300
+ }
81301
+ /**
81302
+ * 高亮要素
81303
+ */
81304
+ highlightFeature(feature2, layerId, layerHighlightConfig) {
81305
+ var _a3;
81306
+ this.ensureHighlightedFeaturesMap();
81307
+ const existingId = this.isFeatureHighlighted(feature2);
81308
+ if (existingId) {
81309
+ return existingId;
81310
+ }
81311
+ if (layerHighlightConfig == null ? void 0 : layerHighlightConfig.clearOthersOnHighlight) {
81312
+ this.clearAllHighlights();
81313
+ }
81314
+ const featureId2 = `highlight_${++this.featureIdCounter}_${Date.now()}`;
81315
+ const highlightFeature = feature2.clone();
81316
+ highlightFeature.setId(featureId2);
81317
+ if (layerHighlightConfig == null ? void 0 : layerHighlightConfig.style) {
81318
+ const customStyle = this.createCustomHighlightStyle(highlightFeature, layerHighlightConfig.style);
81319
+ highlightFeature.setStyle(customStyle);
81320
+ }
81321
+ const originalStyle = feature2.getStyle();
81322
+ const highlightInfo = {
81323
+ originalFeature: feature2,
81324
+ highlightFeature,
81325
+ originalStyle,
81326
+ layerId
81327
+ };
81328
+ (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.addFeature(highlightFeature);
81329
+ this.highlightedFeatures.set(featureId2, highlightInfo);
81330
+ return featureId2;
81331
+ }
81332
+ /**
81333
+ * 取消高亮要素
81334
+ */
81335
+ unhighlightFeature(featureId2) {
81336
+ var _a3;
81337
+ this.ensureHighlightedFeaturesMap();
81338
+ const highlightInfo = this.highlightedFeatures.get(featureId2);
81339
+ if (!highlightInfo) {
81340
+ return false;
81341
+ }
81342
+ (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.removeFeature(highlightInfo.highlightFeature);
81343
+ this.highlightedFeatures.delete(featureId2);
81344
+ return true;
81345
+ }
81346
+ /**
81347
+ * 清除所有高亮
81348
+ */
81349
+ clearAllHighlights() {
81350
+ var _a3;
81351
+ (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.clear();
81352
+ this.ensureHighlightedFeaturesMap();
81353
+ this.highlightedFeatures.clear();
81354
+ }
81355
+ /**
81356
+ * 获取当前高亮的要素数量
81357
+ */
81358
+ getHighlightedCount() {
81359
+ this.ensureHighlightedFeaturesMap();
81360
+ return this.highlightedFeatures.size;
81361
+ }
81362
+ /**
81363
+ * 获取所有高亮要素的ID
81364
+ */
81365
+ getHighlightedFeatureIds() {
81366
+ this.ensureHighlightedFeaturesMap();
81367
+ return Array.from(this.highlightedFeatures.keys());
81368
+ }
81369
+ /**
81370
+ * 检查要素是否已高亮
81371
+ */
81372
+ isFeatureHighlighted(feature2) {
81373
+ this.ensureHighlightedFeaturesMap();
81374
+ if (!this.highlightedFeatures || typeof this.highlightedFeatures[Symbol.iterator] !== "function") {
81375
+ console.warn("FeatureHighlightManager: highlightedFeatures lost iterator, reinitializing...");
81376
+ this.highlightedFeatures = /* @__PURE__ */ new Map();
81377
+ return null;
81378
+ }
81379
+ try {
81380
+ const entries = Array.from(this.highlightedFeatures.entries());
81381
+ for (const [id, info] of entries) {
81382
+ if (info && info.originalFeature === feature2) {
81383
+ return id;
81384
+ }
81385
+ }
81386
+ } catch (error2) {
81387
+ console.error("Error iterating highlightedFeatures:", error2);
81388
+ this.highlightedFeatures = /* @__PURE__ */ new Map();
81389
+ return null;
81390
+ }
81391
+ return null;
81392
+ }
81393
+ /**
81394
+ * 更新高亮样式配置
81395
+ */
81396
+ updateStyleConfig(newConfig) {
81397
+ var _a3;
81398
+ this.styleConfig = { ...this.styleConfig, ...newConfig };
81399
+ this.ensureHighlightedFeaturesMap();
81400
+ (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.getFeatures().forEach((feature2) => {
81401
+ feature2.changed();
81402
+ });
81403
+ }
81404
+ /**
81405
+ * 获取当前样式配置
81406
+ */
81407
+ getStyleConfig() {
81408
+ return { ...this.styleConfig };
81409
+ }
81410
+ /**
81411
+ * 销毁管理器
81412
+ */
81413
+ destroy() {
81414
+ this.clearAllHighlights();
81415
+ this.map.removeLayer(this.highlightLayer);
81416
+ }
81417
+ }
81124
81418
  class GeoJSONLocationTool {
81125
- constructor(map2) {
81419
+ constructor(map2, featureHighlightManager) {
81126
81420
  __publicField(this, "map");
81127
81421
  __publicField(this, "format");
81422
+ __publicField(this, "featureHighlightManager");
81128
81423
  this.map = map2;
81129
81424
  this.format = new GeoJSON$4();
81425
+ this.featureHighlightManager = featureHighlightManager;
81130
81426
  }
81131
81427
  /**
81132
81428
  * 定位到 GeoJSON 数据
@@ -81198,6 +81494,18 @@ class GeoJSONLocationTool {
81198
81494
  duration: fitOptions.duration,
81199
81495
  minZoom: fitOptions.minZoom
81200
81496
  });
81497
+ if ((fitOptions.highlight || fitOptions.style) && this.featureHighlightManager) {
81498
+ if (fitOptions.clearPrevious !== false) {
81499
+ this.featureHighlightManager.clearAllHighlights();
81500
+ }
81501
+ const highlightConfig = {
81502
+ style: fitOptions.style,
81503
+ clearOthersOnHighlight: false
81504
+ };
81505
+ features2.forEach((feature2) => {
81506
+ this.featureHighlightManager.highlightFeature(feature2, "location_highlight", highlightConfig);
81507
+ });
81508
+ }
81201
81509
  if (fitOptions.showMessage) {
81202
81510
  }
81203
81511
  return true;
@@ -81246,6 +81554,16 @@ class GeoJSONLocationTool {
81246
81554
  zoom: targetZoom,
81247
81555
  duration: (options == null ? void 0 : options.duration) || 1e3
81248
81556
  });
81557
+ if (((options == null ? void 0 : options.highlight) || (options == null ? void 0 : options.style)) && this.featureHighlightManager) {
81558
+ if (options.clearPrevious !== false) {
81559
+ this.featureHighlightManager.clearAllHighlights();
81560
+ }
81561
+ const highlightConfig = {
81562
+ style: options.style,
81563
+ clearOthersOnHighlight: false
81564
+ };
81565
+ this.featureHighlightManager.highlightFeature(feature2, "location_center_highlight", highlightConfig);
81566
+ }
81249
81567
  if ((options == null ? void 0 : options.showMessage) !== false) {
81250
81568
  }
81251
81569
  return true;
@@ -82876,7 +83194,8 @@ class StyleFactory {
82876
83194
  rotation: config.rotation,
82877
83195
  backgroundFill: this.createFill(config.backgroundFill),
82878
83196
  backgroundStroke: this.createStroke(config.backgroundStroke),
82879
- padding: config.padding
83197
+ padding: config.padding,
83198
+ overflow: config.overflow
82880
83199
  });
82881
83200
  return textStyle;
82882
83201
  }
@@ -83184,8 +83503,12 @@ const _StyleManager = class _StyleManager {
83184
83503
  var _a3;
83185
83504
  const geometryType = StyleFactory.getFeatureGeometryType(feature2);
83186
83505
  const defaultConfig = this.getDefaultStyle(geometryType);
83187
- const customConfig = styleConfig == null ? void 0 : styleConfig[geometryType];
83188
- const finalConfig = this.mergeStyleConfig(defaultConfig, customConfig);
83506
+ const layerConfig = styleConfig == null ? void 0 : styleConfig[geometryType];
83507
+ let finalConfig = this.mergeStyleConfig(defaultConfig, layerConfig);
83508
+ const featureStyle = feature2.get("style");
83509
+ if (featureStyle) {
83510
+ finalConfig = this.mergeStyleConfig(finalConfig, featureStyle);
83511
+ }
83189
83512
  if (finalConfig && finalConfig.text) {
83190
83513
  const textCfg = { ...finalConfig.text };
83191
83514
  let content2 = textCfg.text;
@@ -83338,6 +83661,20 @@ class GeoJSONLayerHandler extends BaseLayer$2 {
83338
83661
  * 创建样式函数
83339
83662
  */
83340
83663
  createStyleFunction() {
83664
+ if (this.config.styleFunction) {
83665
+ const userFn = this.config.styleFunction;
83666
+ return (feature2, resolution) => {
83667
+ const result = userFn(feature2, resolution || 0);
83668
+ if (result instanceof Style$3 || Array.isArray(result) && result[0] instanceof Style$3) {
83669
+ return result;
83670
+ }
83671
+ if (result && typeof result === "object") {
83672
+ const geometryType = StyleFactory.getFeatureGeometryType(feature2);
83673
+ return StyleFactory.createStyleByGeometryType(geometryType, result);
83674
+ }
83675
+ return [];
83676
+ };
83677
+ }
83341
83678
  this.parseStyleConfig();
83342
83679
  return styleManager.createStyleFunction(this.styleConfig);
83343
83680
  }
@@ -85627,6 +85964,9 @@ class ImageVectorLayerHandler extends BaseLayer$2 {
85627
85964
  * 创建样式函数
85628
85965
  */
85629
85966
  createStyleFunction() {
85967
+ if (this.config.styleFunction) {
85968
+ return this.config.styleFunction;
85969
+ }
85630
85970
  this.parseStyleConfig();
85631
85971
  return styleManager.createStyleFunction(this.styleConfig);
85632
85972
  }
@@ -465983,6 +466323,9 @@ class VectorTileLayerHandler extends BaseLayer$2 {
465983
466323
  * 创建样式函数
465984
466324
  */
465985
466325
  createStyleFunction() {
466326
+ if (this.config.styleFunction) {
466327
+ return this.config.styleFunction;
466328
+ }
465986
466329
  if (this.styleConfig) {
465987
466330
  return styleManager.createStyleFunction(this.styleConfig);
465988
466331
  }
@@ -467574,298 +467917,8 @@ class LayerManager {
467574
467917
  this.layerConfigs.clear();
467575
467918
  }
467576
467919
  }
467577
- const DEFAULT_HIGHLIGHT_STYLE = {
467578
- fill: {
467579
- color: "rgba(255, 255, 0, 0.3)",
467580
- // 黄色半透明填充
467581
- opacity: 0.3
467582
- },
467583
- stroke: {
467584
- color: "#ffff00",
467585
- // 黄色描边
467586
- width: 3,
467587
- lineDash: [5, 5]
467588
- // 虚线
467589
- },
467590
- circle: {
467591
- radius: 8,
467592
- fill: {
467593
- color: "rgba(255, 255, 0, 0.6)",
467594
- opacity: 0.6
467595
- },
467596
- stroke: {
467597
- color: "#ffff00",
467598
- width: 3
467599
- }
467600
- },
467601
- text: {
467602
- font: "12px Arial",
467603
- fill: {
467604
- color: "#000000"
467605
- },
467606
- stroke: {
467607
- color: "#ffffff",
467608
- width: 2
467609
- },
467610
- offsetY: -15,
467611
- scale: 1.2
467612
- }
467613
- };
467614
- class FeatureHighlightManager {
467615
- constructor(map2, styleConfig) {
467616
- __publicField(this, "map");
467617
- __publicField(this, "highlightLayer");
467618
- __publicField(this, "highlightedFeatures", /* @__PURE__ */ new Map());
467619
- __publicField(this, "styleConfig");
467620
- __publicField(this, "featureIdCounter", 0);
467621
- this.map = map2;
467622
- this.styleConfig = { ...DEFAULT_HIGHLIGHT_STYLE, ...styleConfig };
467623
- this.highlightedFeatures = /* @__PURE__ */ new Map();
467624
- this.highlightLayer = new VectorLayer$3({
467625
- source: new VectorSource$2(),
467626
- style: this.createHighlightStyle.bind(this),
467627
- zIndex: 9999
467628
- // 确保高亮图层在最上层
467629
- });
467630
- this.map.addLayer(this.highlightLayer);
467631
- }
467632
- /**
467633
- * 确保 highlightedFeatures 是有效的 Map 实例
467634
- */
467635
- ensureHighlightedFeaturesMap() {
467636
- if (!this.highlightedFeatures || !(this.highlightedFeatures instanceof Map)) {
467637
- console.warn("FeatureHighlightManager: highlightedFeatures corrupted, reinitializing...");
467638
- this.highlightedFeatures = /* @__PURE__ */ new Map();
467639
- }
467640
- }
467641
- /**
467642
- * 创建高亮样式
467643
- */
467644
- createHighlightStyle(feature2) {
467645
- var _a3, _b3, _c2, _d, _e2, _f;
467646
- const geometry2 = feature2.getGeometry();
467647
- const geometryType = geometry2 == null ? void 0 : geometry2.getType();
467648
- const styleOptions = {};
467649
- if (geometryType === "Point" || geometryType === "MultiPoint") {
467650
- if (this.styleConfig.circle) {
467651
- styleOptions.image = new Circle$8({
467652
- radius: this.styleConfig.circle.radius || 8,
467653
- fill: new Fill$2({
467654
- color: ((_a3 = this.styleConfig.circle.fill) == null ? void 0 : _a3.color) || "rgba(255, 255, 0, 0.6)"
467655
- }),
467656
- stroke: new Stroke$2({
467657
- color: ((_b3 = this.styleConfig.circle.stroke) == null ? void 0 : _b3.color) || "#ffff00",
467658
- width: ((_c2 = this.styleConfig.circle.stroke) == null ? void 0 : _c2.width) || 3
467659
- })
467660
- });
467661
- }
467662
- } else {
467663
- if (this.styleConfig.fill) {
467664
- styleOptions.fill = new Fill$2({
467665
- color: this.styleConfig.fill.color || "rgba(255, 255, 0, 0.3)"
467666
- });
467667
- }
467668
- if (this.styleConfig.stroke) {
467669
- styleOptions.stroke = new Stroke$2({
467670
- color: this.styleConfig.stroke.color || "#ffff00",
467671
- width: this.styleConfig.stroke.width || 3,
467672
- lineDash: this.styleConfig.stroke.lineDash || [5, 5]
467673
- });
467674
- }
467675
- }
467676
- if (this.styleConfig.text) {
467677
- const properties = feature2.getProperties();
467678
- const labelText = properties.name || properties.label || "高亮要素";
467679
- styleOptions.text = new Text$5({
467680
- text: labelText,
467681
- font: this.styleConfig.text.font || "12px Arial",
467682
- fill: new Fill$2({
467683
- color: ((_d = this.styleConfig.text.fill) == null ? void 0 : _d.color) || "#000000"
467684
- }),
467685
- stroke: new Stroke$2({
467686
- color: ((_e2 = this.styleConfig.text.stroke) == null ? void 0 : _e2.color) || "#ffffff",
467687
- width: ((_f = this.styleConfig.text.stroke) == null ? void 0 : _f.width) || 2
467688
- }),
467689
- offsetY: this.styleConfig.text.offsetY || -15,
467690
- scale: this.styleConfig.text.scale || 1.2
467691
- });
467692
- }
467693
- return new Style$3(styleOptions);
467694
- }
467695
- /**
467696
- * 根据图层配置创建自定义高亮样式
467697
- */
467698
- createCustomHighlightStyle(feature2, customStyleConfig) {
467699
- var _a3, _b3, _c2, _d, _e2, _f;
467700
- const geometry2 = feature2.getGeometry();
467701
- const geometryType = geometry2 == null ? void 0 : geometry2.getType();
467702
- const styleOptions = {};
467703
- if (geometryType === "Point" || geometryType === "MultiPoint") {
467704
- if (customStyleConfig == null ? void 0 : customStyleConfig.circle) {
467705
- styleOptions.image = new Circle$8({
467706
- radius: customStyleConfig.circle.radius || 8,
467707
- fill: new Fill$2({
467708
- color: ((_a3 = customStyleConfig.circle.fill) == null ? void 0 : _a3.color) || "rgba(255, 255, 0, 0.6)"
467709
- }),
467710
- stroke: new Stroke$2({
467711
- color: ((_b3 = customStyleConfig.circle.stroke) == null ? void 0 : _b3.color) || "#ffff00",
467712
- width: ((_c2 = customStyleConfig.circle.stroke) == null ? void 0 : _c2.width) || 3
467713
- })
467714
- });
467715
- }
467716
- } else {
467717
- if (customStyleConfig == null ? void 0 : customStyleConfig.fill) {
467718
- styleOptions.fill = new Fill$2({
467719
- color: customStyleConfig.fill.color || "rgba(255, 255, 0, 0.3)"
467720
- });
467721
- }
467722
- if (customStyleConfig == null ? void 0 : customStyleConfig.stroke) {
467723
- styleOptions.stroke = new Stroke$2({
467724
- color: customStyleConfig.stroke.color || "#ffff00",
467725
- width: customStyleConfig.stroke.width || 3,
467726
- lineDash: customStyleConfig.stroke.lineDash || [5, 5]
467727
- });
467728
- }
467729
- }
467730
- if (customStyleConfig == null ? void 0 : customStyleConfig.text) {
467731
- const properties = feature2.getProperties();
467732
- const labelText = properties.name || properties.label || "高亮要素";
467733
- styleOptions.text = new Text$5({
467734
- text: labelText,
467735
- font: customStyleConfig.text.font || "12px Arial",
467736
- fill: new Fill$2({
467737
- color: ((_d = customStyleConfig.text.fill) == null ? void 0 : _d.color) || "#000000"
467738
- }),
467739
- stroke: new Stroke$2({
467740
- color: ((_e2 = customStyleConfig.text.stroke) == null ? void 0 : _e2.color) || "#ffffff",
467741
- width: ((_f = customStyleConfig.text.stroke) == null ? void 0 : _f.width) || 2
467742
- }),
467743
- offsetX: customStyleConfig.text.offsetX || 0,
467744
- offsetY: customStyleConfig.text.offsetY || -15,
467745
- scale: customStyleConfig.text.scale || 1.2
467746
- });
467747
- }
467748
- return new Style$3(styleOptions);
467749
- }
467750
- /**
467751
- * 高亮要素
467752
- */
467753
- highlightFeature(feature2, layerId, layerHighlightConfig) {
467754
- var _a3;
467755
- this.ensureHighlightedFeaturesMap();
467756
- const existingId = this.isFeatureHighlighted(feature2);
467757
- if (existingId) {
467758
- return existingId;
467759
- }
467760
- if (layerHighlightConfig == null ? void 0 : layerHighlightConfig.clearOthersOnHighlight) {
467761
- this.clearAllHighlights();
467762
- }
467763
- const featureId2 = `highlight_${++this.featureIdCounter}_${Date.now()}`;
467764
- const highlightFeature = feature2.clone();
467765
- highlightFeature.setId(featureId2);
467766
- if (layerHighlightConfig == null ? void 0 : layerHighlightConfig.style) {
467767
- const customStyle = this.createCustomHighlightStyle(highlightFeature, layerHighlightConfig.style);
467768
- highlightFeature.setStyle(customStyle);
467769
- }
467770
- const originalStyle = feature2.getStyle();
467771
- const highlightInfo = {
467772
- originalFeature: feature2,
467773
- highlightFeature,
467774
- originalStyle,
467775
- layerId
467776
- };
467777
- (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.addFeature(highlightFeature);
467778
- this.highlightedFeatures.set(featureId2, highlightInfo);
467779
- return featureId2;
467780
- }
467781
- /**
467782
- * 取消高亮要素
467783
- */
467784
- unhighlightFeature(featureId2) {
467785
- var _a3;
467786
- this.ensureHighlightedFeaturesMap();
467787
- const highlightInfo = this.highlightedFeatures.get(featureId2);
467788
- if (!highlightInfo) {
467789
- return false;
467790
- }
467791
- (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.removeFeature(highlightInfo.highlightFeature);
467792
- this.highlightedFeatures.delete(featureId2);
467793
- return true;
467794
- }
467795
- /**
467796
- * 清除所有高亮
467797
- */
467798
- clearAllHighlights() {
467799
- var _a3;
467800
- (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.clear();
467801
- this.ensureHighlightedFeaturesMap();
467802
- this.highlightedFeatures.clear();
467803
- }
467804
- /**
467805
- * 获取当前高亮的要素数量
467806
- */
467807
- getHighlightedCount() {
467808
- this.ensureHighlightedFeaturesMap();
467809
- return this.highlightedFeatures.size;
467810
- }
467811
- /**
467812
- * 获取所有高亮要素的ID
467813
- */
467814
- getHighlightedFeatureIds() {
467815
- this.ensureHighlightedFeaturesMap();
467816
- return Array.from(this.highlightedFeatures.keys());
467817
- }
467818
- /**
467819
- * 检查要素是否已高亮
467820
- */
467821
- isFeatureHighlighted(feature2) {
467822
- this.ensureHighlightedFeaturesMap();
467823
- if (!this.highlightedFeatures || typeof this.highlightedFeatures[Symbol.iterator] !== "function") {
467824
- console.warn("FeatureHighlightManager: highlightedFeatures lost iterator, reinitializing...");
467825
- this.highlightedFeatures = /* @__PURE__ */ new Map();
467826
- return null;
467827
- }
467828
- try {
467829
- const entries = Array.from(this.highlightedFeatures.entries());
467830
- for (const [id, info] of entries) {
467831
- if (info && info.originalFeature === feature2) {
467832
- return id;
467833
- }
467834
- }
467835
- } catch (error2) {
467836
- console.error("Error iterating highlightedFeatures:", error2);
467837
- this.highlightedFeatures = /* @__PURE__ */ new Map();
467838
- return null;
467839
- }
467840
- return null;
467841
- }
467842
- /**
467843
- * 更新高亮样式配置
467844
- */
467845
- updateStyleConfig(newConfig) {
467846
- var _a3;
467847
- this.styleConfig = { ...this.styleConfig, ...newConfig };
467848
- this.ensureHighlightedFeaturesMap();
467849
- (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.getFeatures().forEach((feature2) => {
467850
- feature2.changed();
467851
- });
467852
- }
467853
- /**
467854
- * 获取当前样式配置
467855
- */
467856
- getStyleConfig() {
467857
- return { ...this.styleConfig };
467858
- }
467859
- /**
467860
- * 销毁管理器
467861
- */
467862
- destroy() {
467863
- this.clearAllHighlights();
467864
- this.map.removeLayer(this.highlightLayer);
467865
- }
467866
- }
467867
- const _hoisted_1$p = ["id"];
467868
- const _sfc_main$q = /* @__PURE__ */ defineComponent({
467920
+ const _hoisted_1$q = ["id"];
467921
+ const _sfc_main$r = /* @__PURE__ */ defineComponent({
467869
467922
  __name: "BasePopup",
467870
467923
  props: {
467871
467924
  config: {},
@@ -467983,7 +468036,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
467983
468036
  }, [
467984
468037
  createElementVNode("div", {
467985
468038
  id: `popup-slot-${_ctx.id}`
467986
- }, null, 8, _hoisted_1$p),
468039
+ }, null, 8, _hoisted_1$q),
467987
468040
  renderSlot(_ctx.$slots, "default", {
467988
468041
  feature: _ctx.feature,
467989
468042
  coordinate: _ctx.coordinate,
@@ -467998,13 +468051,13 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
467998
468051
  };
467999
468052
  }
468000
468053
  });
468001
- const _hoisted_1$o = { class: "html-popup-content" };
468002
- const _hoisted_2$m = {
468054
+ const _hoisted_1$p = { class: "html-popup-content" };
468055
+ const _hoisted_2$n = {
468003
468056
  key: 0,
468004
468057
  class: "html-popup-title"
468005
468058
  };
468006
- const _hoisted_3$l = ["innerHTML"];
468007
- const _sfc_main$p = /* @__PURE__ */ defineComponent({
468059
+ const _hoisted_3$m = ["innerHTML"];
468060
+ const _sfc_main$q = /* @__PURE__ */ defineComponent({
468008
468061
  __name: "HtmlPopup",
468009
468062
  props: {
468010
468063
  config: {},
@@ -468052,7 +468105,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
468052
468105
  return sanitizeHtml(content2);
468053
468106
  });
468054
468107
  return (_ctx, _cache) => {
468055
- return openBlock(), createBlock(_sfc_main$q, {
468108
+ return openBlock(), createBlock(_sfc_main$r, {
468056
468109
  config: _ctx.config,
468057
468110
  coordinate: _ctx.coordinate,
468058
468111
  feature: _ctx.feature,
@@ -468065,12 +468118,12 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
468065
468118
  default: withCtx(() => {
468066
468119
  var _a3;
468067
468120
  return [
468068
- createElementVNode("div", _hoisted_1$o, [
468069
- ((_a3 = _ctx.config.template) == null ? void 0 : _a3.title) ? (openBlock(), createElementBlock("div", _hoisted_2$m, toDisplayString(resolveTitle()), 1)) : createCommentVNode("", true),
468121
+ createElementVNode("div", _hoisted_1$p, [
468122
+ ((_a3 = _ctx.config.template) == null ? void 0 : _a3.title) ? (openBlock(), createElementBlock("div", _hoisted_2$n, toDisplayString(resolveTitle()), 1)) : createCommentVNode("", true),
468070
468123
  createElementVNode("div", {
468071
468124
  class: "html-popup-body",
468072
468125
  innerHTML: resolveContent()
468073
- }, null, 8, _hoisted_3$l)
468126
+ }, null, 8, _hoisted_3$m)
468074
468127
  ])
468075
468128
  ];
468076
468129
  }),
@@ -468079,17 +468132,17 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
468079
468132
  };
468080
468133
  }
468081
468134
  });
468082
- const _hoisted_1$n = { class: "image-popup-content" };
468083
- const _hoisted_2$l = {
468135
+ const _hoisted_1$o = { class: "image-popup-content" };
468136
+ const _hoisted_2$m = {
468084
468137
  key: 0,
468085
468138
  class: "image-popup-title"
468086
468139
  };
468087
- const _hoisted_3$k = {
468140
+ const _hoisted_3$l = {
468088
468141
  key: 1,
468089
468142
  class: "image-popup-description"
468090
468143
  };
468091
- const _hoisted_4$k = { class: "image-popup-main" };
468092
- const _hoisted_5$k = { class: "image-container" };
468144
+ const _hoisted_4$l = { class: "image-popup-main" };
468145
+ const _hoisted_5$l = { class: "image-container" };
468093
468146
  const _hoisted_6$h = ["src", "alt"];
468094
468147
  const _hoisted_7$f = {
468095
468148
  key: 0,
@@ -468119,7 +468172,7 @@ const _hoisted_14$8 = {
468119
468172
  };
468120
468173
  const _hoisted_15$7 = { class: "fullscreen-container" };
468121
468174
  const _hoisted_16$7 = ["src", "alt"];
468122
- const _sfc_main$o = /* @__PURE__ */ defineComponent({
468175
+ const _sfc_main$p = /* @__PURE__ */ defineComponent({
468123
468176
  __name: "ImagePopup",
468124
468177
  props: {
468125
468178
  config: {},
@@ -468252,7 +468305,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
468252
468305
  document.removeEventListener("keydown", handleKeydown);
468253
468306
  });
468254
468307
  return (_ctx, _cache) => {
468255
- return openBlock(), createBlock(_sfc_main$q, {
468308
+ return openBlock(), createBlock(_sfc_main$r, {
468256
468309
  config: _ctx.config,
468257
468310
  coordinate: _ctx.coordinate,
468258
468311
  feature: _ctx.feature,
@@ -468263,11 +468316,11 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
468263
468316
  onHide: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("hide"))
468264
468317
  }, {
468265
468318
  default: withCtx(() => [
468266
- createElementVNode("div", _hoisted_1$n, [
468267
- _ctx.config.title ? (openBlock(), createElementBlock("div", _hoisted_2$l, toDisplayString(resolveTitle()), 1)) : createCommentVNode("", true),
468268
- _ctx.config.description ? (openBlock(), createElementBlock("div", _hoisted_3$k, toDisplayString(_ctx.config.description), 1)) : createCommentVNode("", true),
468269
- createElementVNode("div", _hoisted_4$k, [
468270
- createElementVNode("div", _hoisted_5$k, [
468319
+ createElementVNode("div", _hoisted_1$o, [
468320
+ _ctx.config.title ? (openBlock(), createElementBlock("div", _hoisted_2$m, toDisplayString(resolveTitle()), 1)) : createCommentVNode("", true),
468321
+ _ctx.config.description ? (openBlock(), createElementBlock("div", _hoisted_3$l, toDisplayString(_ctx.config.description), 1)) : createCommentVNode("", true),
468322
+ createElementVNode("div", _hoisted_4$l, [
468323
+ createElementVNode("div", _hoisted_5$l, [
468271
468324
  createElementVNode("img", {
468272
468325
  src: currentImage.value,
468273
468326
  alt: `图片 ${currentIndex.value + 1}`,
@@ -468373,20 +468426,20 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
468373
468426
  };
468374
468427
  }
468375
468428
  });
468376
- const _hoisted_1$m = { class: "array-popup-content" };
468377
- const _hoisted_2$k = {
468429
+ const _hoisted_1$n = { class: "array-popup-content" };
468430
+ const _hoisted_2$l = {
468378
468431
  key: 0,
468379
468432
  class: "array-popup-title"
468380
468433
  };
468381
- const _hoisted_3$j = {
468434
+ const _hoisted_3$k = {
468382
468435
  key: 1,
468383
468436
  class: "array-popup-description"
468384
468437
  };
468385
- const _hoisted_4$j = {
468438
+ const _hoisted_4$k = {
468386
468439
  key: 2,
468387
468440
  class: "view-switch"
468388
468441
  };
468389
- const _hoisted_5$j = {
468442
+ const _hoisted_5$k = {
468390
468443
  key: 3,
468391
468444
  class: "search-container"
468392
468445
  };
@@ -468450,7 +468503,7 @@ const _hoisted_43$1 = {
468450
468503
  class: "empty-data"
468451
468504
  };
468452
468505
  const _hoisted_44$1 = { class: "empty-text" };
468453
- const _sfc_main$n = /* @__PURE__ */ defineComponent({
468506
+ const _sfc_main$o = /* @__PURE__ */ defineComponent({
468454
468507
  __name: "ArrayPopup",
468455
468508
  props: {
468456
468509
  config: {},
@@ -468596,7 +468649,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
468596
468649
  }
468597
468650
  });
468598
468651
  return (_ctx, _cache) => {
468599
- return openBlock(), createBlock(_sfc_main$q, {
468652
+ return openBlock(), createBlock(_sfc_main$r, {
468600
468653
  config: _ctx.config,
468601
468654
  coordinate: _ctx.coordinate,
468602
468655
  feature: _ctx.feature,
@@ -468607,10 +468660,10 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
468607
468660
  onHide: _cache[8] || (_cache[8] = ($event) => _ctx.$emit("hide"))
468608
468661
  }, {
468609
468662
  default: withCtx(() => [
468610
- createElementVNode("div", _hoisted_1$m, [
468611
- _ctx.config.title ? (openBlock(), createElementBlock("div", _hoisted_2$k, toDisplayString(resolveTitle()), 1)) : createCommentVNode("", true),
468612
- _ctx.config.description ? (openBlock(), createElementBlock("div", _hoisted_3$j, toDisplayString(_ctx.config.description), 1)) : createCommentVNode("", true),
468613
- _ctx.config.allowViewSwitch ? (openBlock(), createElementBlock("div", _hoisted_4$j, [
468663
+ createElementVNode("div", _hoisted_1$n, [
468664
+ _ctx.config.title ? (openBlock(), createElementBlock("div", _hoisted_2$l, toDisplayString(resolveTitle()), 1)) : createCommentVNode("", true),
468665
+ _ctx.config.description ? (openBlock(), createElementBlock("div", _hoisted_3$k, toDisplayString(_ctx.config.description), 1)) : createCommentVNode("", true),
468666
+ _ctx.config.allowViewSwitch ? (openBlock(), createElementBlock("div", _hoisted_4$k, [
468614
468667
  createVNode$1(unref(ElButton), {
468615
468668
  class: normalizeClass(["view-btn", { active: currentView.value === "table" }]),
468616
468669
  onClick: _cache[0] || (_cache[0] = ($event) => setView("table")),
@@ -468645,7 +468698,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
468645
468698
  _: 1
468646
468699
  }, 8, ["class", "type"])
468647
468700
  ])) : createCommentVNode("", true),
468648
- _ctx.config.searchable ? (openBlock(), createElementBlock("div", _hoisted_5$j, [
468701
+ _ctx.config.searchable ? (openBlock(), createElementBlock("div", _hoisted_5$k, [
468649
468702
  createVNode$1(unref(ElInput), {
468650
468703
  modelValue: searchQuery.value,
468651
468704
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => searchQuery.value = $event),
@@ -469030,7 +469083,7 @@ class PopupManager {
469030
469083
  let app = null;
469031
469084
  switch (type) {
469032
469085
  case "html":
469033
- app = createApp(_sfc_main$p, {
469086
+ app = createApp(_sfc_main$q, {
469034
469087
  id: popupId,
469035
469088
  config: { ...this.config.defaultConfig, ...config },
469036
469089
  coordinate,
@@ -469040,7 +469093,7 @@ class PopupManager {
469040
469093
  });
469041
469094
  break;
469042
469095
  case "image":
469043
- app = createApp(_sfc_main$o, {
469096
+ app = createApp(_sfc_main$p, {
469044
469097
  id: popupId,
469045
469098
  config: { ...this.config.defaultConfig, ...config },
469046
469099
  coordinate,
@@ -469050,7 +469103,7 @@ class PopupManager {
469050
469103
  });
469051
469104
  break;
469052
469105
  case "array":
469053
- app = createApp(_sfc_main$n, {
469106
+ app = createApp(_sfc_main$o, {
469054
469107
  id: popupId,
469055
469108
  config: { ...this.config.defaultConfig, ...config },
469056
469109
  coordinate,
@@ -469066,7 +469119,7 @@ class PopupManager {
469066
469119
  case "all":
469067
469120
  const allConfig = config;
469068
469121
  if (allConfig.htmlContent) {
469069
- app = createApp(_sfc_main$p, {
469122
+ app = createApp(_sfc_main$q, {
469070
469123
  id: popupId,
469071
469124
  config: {
469072
469125
  ...allConfig,
@@ -469078,7 +469131,7 @@ class PopupManager {
469078
469131
  onClose: () => this.closePopup(popupId)
469079
469132
  });
469080
469133
  } else if (allConfig.images) {
469081
- app = createApp(_sfc_main$o, {
469134
+ app = createApp(_sfc_main$p, {
469082
469135
  id: popupId,
469083
469136
  config: {
469084
469137
  ...allConfig,
@@ -469090,7 +469143,7 @@ class PopupManager {
469090
469143
  onClose: () => this.closePopup(popupId)
469091
469144
  });
469092
469145
  } else if (allConfig.data) {
469093
- app = createApp(_sfc_main$n, {
469146
+ app = createApp(_sfc_main$o, {
469094
469147
  id: popupId,
469095
469148
  config: {
469096
469149
  ...allConfig,
@@ -469106,7 +469159,7 @@ class PopupManager {
469106
469159
  }
469107
469160
  });
469108
469161
  } else {
469109
- app = createApp(_sfc_main$q, {
469162
+ app = createApp(_sfc_main$r, {
469110
469163
  id: popupId,
469111
469164
  config: allConfig,
469112
469165
  coordinate,
@@ -469129,7 +469182,7 @@ class PopupManager {
469129
469182
  },
469130
469183
  render() {
469131
469184
  return h$4(
469132
- _sfc_main$q,
469185
+ _sfc_main$r,
469133
469186
  { config: this.cfg, coordinate: this.coordinate, feature: this.feature, visible: true, id: popupId, onClose: this.onClose },
469134
469187
  { default: () => h$4(this.CustomComp, { ...this.computedProps, feature: this.feature, coordinate: this.coordinate, config: this.cfg }) }
469135
469188
  );
@@ -469384,28 +469437,47 @@ class MapManager {
469384
469437
  }
469385
469438
  }
469386
469439
  /**
469387
- * 查找匹配的图层配置
469440
+ * 查找匹配的图层配置(支持递归查找子图层)
469388
469441
  */
469389
469442
  findMatchingLayer(layer2, allLayers) {
469390
- return allLayers.find((l2) => {
469391
- var _a3;
469392
- if (((_a3 = layer2.values_) == null ? void 0 : _a3.layerId) && l2.id === layer2.values_.layerId) {
469393
- return true;
469394
- }
469395
- if (layer2.layerId && l2.id === layer2.layerId) {
469396
- return true;
469397
- }
469398
- if (layer2.layerName && l2.name === layer2.layerName) {
469399
- return true;
469443
+ for (const config of allLayers) {
469444
+ if (this.isLayerMatch(layer2, config)) {
469445
+ return config;
469400
469446
  }
469401
- if (layer2.get && layer2.get("id") === l2.id) {
469402
- return true;
469447
+ if (config.children && config.children.length > 0) {
469448
+ const match2 = this.findMatchingLayer(layer2, config.children);
469449
+ if (match2)
469450
+ return match2;
469403
469451
  }
469404
- if (layer2.get && layer2.get("name") === l2.name) {
469405
- return true;
469452
+ if (config.layers && config.layers.length > 0) {
469453
+ const match2 = this.findMatchingLayer(layer2, config.layers);
469454
+ if (match2)
469455
+ return match2;
469406
469456
  }
469407
- return false;
469408
- });
469457
+ }
469458
+ return void 0;
469459
+ }
469460
+ /**
469461
+ * 检查图层实例是否匹配配置
469462
+ */
469463
+ isLayerMatch(layer2, config) {
469464
+ var _a3;
469465
+ if (((_a3 = layer2.values_) == null ? void 0 : _a3.layerId) && config.id === layer2.values_.layerId) {
469466
+ return true;
469467
+ }
469468
+ if (layer2.layerId && config.id === layer2.layerId) {
469469
+ return true;
469470
+ }
469471
+ if (layer2.layerName && config.name === layer2.layerName) {
469472
+ return true;
469473
+ }
469474
+ if (layer2.get && layer2.get("id") === config.id) {
469475
+ return true;
469476
+ }
469477
+ if (layer2.get && layer2.get("name") === config.name) {
469478
+ return true;
469479
+ }
469480
+ return false;
469409
469481
  }
469410
469482
  /**
469411
469483
  * 初始化地图
@@ -469524,7 +469596,7 @@ class MapManager {
469524
469596
  const initialCenter = this.config.center || [116.404, 39.915];
469525
469597
  const initialZoom = this.config.zoom || 10;
469526
469598
  this.mapOperationTool = new MapOperationTool(this.map, initialCenter, initialZoom);
469527
- this.geoJsonLocationTool = new GeoJSONLocationTool(this.map);
469599
+ this.geoJsonLocationTool = new GeoJSONLocationTool(this.map, this.featureHighlightManager);
469528
469600
  const popupConfig = this.config.popupConfig || {};
469529
469601
  this.popupManager = new PopupManager(this.map, popupConfig);
469530
469602
  this.bindEventManagerEvents();
@@ -470130,13 +470202,13 @@ class MapManager {
470130
470202
  this.map = null;
470131
470203
  }
470132
470204
  }
470133
- const _hoisted_1$l = ["id"];
470134
- const _hoisted_2$j = {
470205
+ const _hoisted_1$m = ["id"];
470206
+ const _hoisted_2$k = {
470135
470207
  class: "absolute top-0 left-0 w-full h-full z-2000",
470136
470208
  "element-loading-text": "地图加载中...",
470137
470209
  "element-loading-background": "rgba(0, 0, 0, 0.3)"
470138
470210
  };
470139
- const _sfc_main$m = /* @__PURE__ */ defineComponent({
470211
+ const _sfc_main$n = /* @__PURE__ */ defineComponent({
470140
470212
  __name: "MapContainer",
470141
470213
  props: {
470142
470214
  config: {},
@@ -470319,8 +470391,8 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
470319
470391
  createElementVNode("div", {
470320
470392
  id: mapId.value,
470321
470393
  class: "w-full h-full bg-gray-100"
470322
- }, null, 8, _hoisted_1$l),
470323
- withDirectives(createElementVNode("div", _hoisted_2$j, null, 512), [
470394
+ }, null, 8, _hoisted_1$m),
470395
+ withDirectives(createElementVNode("div", _hoisted_2$k, null, 512), [
470324
470396
  [vShow, _ctx.loading],
470325
470397
  [_directive_loading, _ctx.loading]
470326
470398
  ])
@@ -470328,8 +470400,8 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
470328
470400
  };
470329
470401
  }
470330
470402
  });
470331
- const _hoisted_1$k = ["href"];
470332
- const _sfc_main$l = /* @__PURE__ */ defineComponent({
470403
+ const _hoisted_1$l = ["href"];
470404
+ const _sfc_main$m = /* @__PURE__ */ defineComponent({
470333
470405
  __name: "index",
470334
470406
  props: {
470335
470407
  prefix: { default: "icon" },
@@ -470347,7 +470419,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
470347
470419
  class: computedClass.value,
470348
470420
  "aria-hidden": "true"
470349
470421
  }, _ctx.$attrs), [
470350
- createElementVNode("use", { href: symbolId.value }, null, 8, _hoisted_1$k)
470422
+ createElementVNode("use", { href: symbolId.value }, null, 8, _hoisted_1$l)
470351
470423
  ], 16);
470352
470424
  };
470353
470425
  }
@@ -470548,14 +470620,14 @@ class DialogCacheManager {
470548
470620
  }
470549
470621
  const dialogCacheManager = new DialogCacheManager();
470550
470622
  const dialogCacheManager$1 = dialogCacheManager;
470551
- const _hoisted_1$j = { class: "text-base font-semibold text-gray-800 flex-1 overflow-hidden text-ellipsis whitespace-nowrap" };
470552
- const _hoisted_2$i = { class: "flex items-center gap-2" };
470553
- const _hoisted_3$i = { class: "flex-1 overflow-auto min-h-0 h-0" };
470554
- const _hoisted_4$i = {
470623
+ const _hoisted_1$k = { class: "text-base font-semibold text-gray-800 flex-1 overflow-hidden text-ellipsis whitespace-nowrap" };
470624
+ const _hoisted_2$j = { class: "flex items-center gap-2" };
470625
+ const _hoisted_3$j = { class: "flex-1 overflow-auto min-h-0 h-0" };
470626
+ const _hoisted_4$j = {
470555
470627
  key: 0,
470556
470628
  class: "px-5 py-4 border-t border-gray-200 bg-gray-50 flex justify-end gap-3"
470557
470629
  };
470558
- const _hoisted_5$i = ["onMousedown"];
470630
+ const _hoisted_5$j = ["onMousedown"];
470559
470631
  const _hoisted_6$f = { class: "text-base font-semibold text-gray-800 flex-1 overflow-hidden text-ellipsis whitespace-nowrap" };
470560
470632
  const _hoisted_7$d = { class: "flex items-center gap-2" };
470561
470633
  const _hoisted_8$a = { class: "flex-1 overflow-auto min-h-0 h-0" };
@@ -470567,7 +470639,7 @@ const _hoisted_10$8 = {
470567
470639
  key: 1,
470568
470640
  class: "absolute top-0 left-0 w-full h-full pointer-events-none"
470569
470641
  };
470570
- const _sfc_main$k = /* @__PURE__ */ defineComponent({
470642
+ const _sfc_main$l = /* @__PURE__ */ defineComponent({
470571
470643
  ...{
470572
470644
  inheritAttrs: false
470573
470645
  },
@@ -471058,12 +471130,12 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
471058
471130
  class: normalizeClass(["flex items-center justify-between px-5 py-4 border-b border-gray-200 bg-gray-50", { "cursor-move": _ctx.draggable && !isFullscreen.value }]),
471059
471131
  onMousedown: startDrag
471060
471132
  }, [
471061
- createElementVNode("div", _hoisted_1$j, [
471133
+ createElementVNode("div", _hoisted_1$k, [
471062
471134
  renderSlot(_ctx.$slots, "title", {}, () => [
471063
471135
  createTextVNode(toDisplayString(_ctx.title), 1)
471064
471136
  ])
471065
471137
  ]),
471066
- createElementVNode("div", _hoisted_2$i, [
471138
+ createElementVNode("div", _hoisted_2$j, [
471067
471139
  _ctx.showFullscreen ? (openBlock(), createBlock(unref(ElButton), {
471068
471140
  key: 0,
471069
471141
  class: "w-6 h-6 border-none bg-transparent cursor-pointer flex items-center justify-center rounded text-gray-500 transition-all duration-200 hover:bg-gray-200 hover:text-gray-600",
@@ -471071,7 +471143,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
471071
471143
  title: isFullscreen.value ? "退出全屏" : "全屏"
471072
471144
  }, {
471073
471145
  default: withCtx(() => [
471074
- createVNode$1(_sfc_main$l, {
471146
+ createVNode$1(_sfc_main$m, {
471075
471147
  name: isFullscreen.value ? "exit-fullscreen" : "fullscreen"
471076
471148
  }, null, 8, ["name"])
471077
471149
  ]),
@@ -471084,16 +471156,16 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
471084
471156
  title: "关闭"
471085
471157
  }, {
471086
471158
  default: withCtx(() => [
471087
- createVNode$1(_sfc_main$l, { name: "close" })
471159
+ createVNode$1(_sfc_main$m, { name: "close" })
471088
471160
  ]),
471089
471161
  _: 1
471090
471162
  })) : createCommentVNode("", true)
471091
471163
  ])
471092
471164
  ], 34),
471093
- createElementVNode("div", _hoisted_3$i, [
471165
+ createElementVNode("div", _hoisted_3$j, [
471094
471166
  renderSlot(_ctx.$slots, "default")
471095
471167
  ]),
471096
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_4$i, [
471168
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_4$j, [
471097
471169
  renderSlot(_ctx.$slots, "footer")
471098
471170
  ])) : createCommentVNode("", true),
471099
471171
  _ctx.resizable && !isFullscreen.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, renderList(resizeDirections, (direction2) => {
@@ -471101,7 +471173,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
471101
471173
  key: direction2,
471102
471174
  class: normalizeClass(`absolute bg-transparent z-10 pointer-events-auto resize-${direction2}`),
471103
471175
  onMousedown: ($event) => startResize($event, direction2)
471104
- }, null, 42, _hoisted_5$i);
471176
+ }, null, 42, _hoisted_5$j);
471105
471177
  }), 64)) : createCommentVNode("", true)
471106
471178
  ], 16)
471107
471179
  ], 6)) : createCommentVNode("", true)
@@ -471154,7 +471226,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
471154
471226
  title: isFullscreen.value ? "退出全屏" : "全屏"
471155
471227
  }, {
471156
471228
  default: withCtx(() => [
471157
- createVNode$1(_sfc_main$l, {
471229
+ createVNode$1(_sfc_main$m, {
471158
471230
  name: isFullscreen.value ? "exit-fullscreen" : "fullscreen"
471159
471231
  }, null, 8, ["name"])
471160
471232
  ]),
@@ -471167,7 +471239,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
471167
471239
  title: "关闭"
471168
471240
  }, {
471169
471241
  default: withCtx(() => [
471170
- createVNode$1(_sfc_main$l, { name: "close" })
471242
+ createVNode$1(_sfc_main$m, { name: "close" })
471171
471243
  ]),
471172
471244
  _: 1
471173
471245
  })) : createCommentVNode("", true)
@@ -471228,13 +471300,13 @@ const tencentImgUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD8AAABACAY
471228
471300
  const tencentVecUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAfj0lEQVR4nK2b2ZNl2XXWf2vvfYY75s05a+jq6q7qUs9SCw1IsmRbNiEPBA7bRDAE8AIRRPCEn+GFF/gDDC/2i1+IMITBBmzjAEtCBtu0FJJaPamnqq7qmjKzcr55p3P2XouHc7MGdVe5kb0rMuLWjcxz9v7OGr/1HRkOD/40hPzxGGfRTPnIJYaYYOTUbozDMbMJ17kM+69z/trv0G89S3XpX6G+x3GVUBILIeLMozjEO1Q9O3tH3Ny6zfB4xkKvT7/bYv/giOPhlLW1BbKQs7d/k6O9IzrtHs+/cInFQYtYVUAgiSEoWLO1PC/Y3LzD9e0dslaX4D2xigyPhoTSc2pjg8tX3qeqZnzq6UusLg0A8D6Eup5eC2ZcLMvWmmqGmX00AA+sAvB0BUq3RF0ssnD0HbI4RkpFfEmeQxIjc0bAIaZgCXDMWhmDbptWq0NZ5iz2W/RaBbOVRH+hg6QjujnoyuP4YkCn1yUvWmQh8lG7896zvLSE+gA4iiLHOc/wuEue5XS6HfILF1CNDBZ6lGWJcw4RT11XIUCaqkYmk8nHBAAMBTy561HEM1jVYTy9RhreIbRXmNYV0zqSJJG7QCGQieJROoVw/swaigMM70FaDsQjAjLZo9/bwfJVrFgiWeL4+Bj5yOOfWKiwtthHaAzDiWPQWULVMFM6y33ASEmZTCaICK1WC7BpULyZGSc/Dz/0vU8iCSySrItYQtIIl47RmFADXEVZBFJSVBMTE6YILefInOEFPAkMkjoQBQE1oZApZkOSV1QEVUXMHtjBR+2uObxhBglF5t5sZujctc3k3l8017RgZiAfvuQDF5c5BOLAwJsHc0ydoTaik2Y4FUwdgoBFPEIuoJmnEsdoWjFTo5sHMm382EQwBMPAFAgogolH1aEKkJD5P3sECGpw/0HuPUvhUYYdvPPIo6wLcOpRIAF+jlftlakqedQGfZ/jQgFmeHNN8JMImihFCZmwUyX2q8Rq7nAmqDXPrXnCzWdFEHG4OL+ZA0VxuEc9pR97BezDuJ64gohgLuMYzyhGqqoiOE8ZIDMluEBbHM4mWGgjoYNaArmHugGqSnCOfl4wTYlaDXEezO7z7eaTM8MpJC+ghncORTEzRB5pqj8mAMQPfelESAaKJyrENCVPiXYWcN7hxBHUESQhOqXC4/IVkhSI1Yh5EMVEEXMggppROnB4JlWNBaEIDjT9KPoYRvKgXhAzXOMwf+WHnwPwo6u5kQ8ZsyR8cOMmk8mIflmyvLjE7vER02nNYr9HZTUHO/u0Rk+zUS7Sdve2ah/yK8OlRBCHC56oRmGKyIm/3rOE5ISpKpjiMTLncCcB8aFWcPK9ze9tTeSYx4bmf9yNIyIOJ+GjADjZjKCm7O3vs723x8rKKlMJ3NzcRGPEBWM0nHL15gFLYZ21tQW8QG0ZImPE3DwwnZiukMRwovQzhxKoEjhRcqeIGGqgDlCjSEoKjtoEMcU3hvTwJYAJyDySuATqcGao5EgwPAVi2jwiJ4j4jwbAAIfiMLrtEk09Onkg88Zip02WeUIZKOoug35GJ83I8hInGZjDJOFVMHM8EGFFcGZIXTMVZRihdEKRn5hBA1QwyIJn5j21BSA1WeIhAJjQuNu8ushSgSSPOkf0UGtC4xHVdISYo1122L+9ycFw7yEWIKCW8MD5M6fQuAZiFEXJxmBAXdW43GOlZym8jWy/SvBnSK4EqxALmAhOHixfvAkOYWc44tbBAeY9C+0OxyhVVdEuO6znTcRPzjGONZVVZMHhnEMfks/EwKUM9Ur0SpPZAuoUcZHq4A7XL1/m+s23cbOKS09eZP/gmOs7dx7mAjT+54R+pwQcIoImo8xzpC0IDnxGqEewe5mZD6hkiI0BN/e1+zds4CGqMJ4lxuMprXbBeDzmcHjMdDJjZVCxuq5IcERRYqpxTub+b3dPawbeOXzwJAXTgPe+AT1NcHETZluE2XV8dZvs8A777x4TD3dZLSdUH/wJw3HG/m72UQDIvY2boSlieJqCoklfQsKkKVF0MiNLCXGdxuclNQHnJMfP7dZofDiZMq1nzGY1WZ4jRIIPZBkNqCJEgZEaIc/IBTyGoqiBcwnvPN6EqqoxFwhM0HoLN7mBDF/Djr8D05v4OMGbQ9IGqd7g1GNneeHSCpoqji4rZ8rVh1iA3Ss6mufY5Gvnm7SV1EiZ4LRCnDALGU7HoBAFhETQHJXGJ4WmiEpqOCesry2RdTrElJAYWeplCB6PwzFkViduq7GQBTrUYA6XRbwvILWI1Fy7doPXvvsGj59RXjj9JuHwZex4u3loxRLW/iSp+wKpXMNshQunOiytbtDqd0nR+MyFQKzqR7jAj9hE4xVNG+qdIc4IISP017HdEqc7uAKS9fAxQlKMhM0hUGlAEBPyTDi1VOCcx3R+XQmg4KeXqRR2qwypjLW8KaySU6bjQ9LUMxrv8tYPv8+3/+ybDE/t8vhnD1hZaJEWf4K48Gms8xLWegzNW2BKAZw75bFYU1U1zjm6nZIR8X4AHl1oNDnYNR2bJIpa0LpG44C86iD7W9jSHbx4xAfGQUAFZ5DwTGMEjNI5kiVEIz4EMEdVRyI1PmQghnOGd0LmHGUZqGrPB9dHvPXqK5TZDk+tjFg6vsYTpwU6Z7ld/jzti1/Ad8+QpItTIaQpMhuTzKHeqGLTVDW9ipFSjWpNEDzg5j964q33nv68AHGucYuG2Ajsv/MOs7cuI1qRjk4T3Jj4w/8Jkghry3Q/9Umyfh+LjlqhTkbpjeAUN3cxUwO0SavON9YiAasia0Wk52tG44rpdMJ7P/xz3n79FaTaJLs4w7cWuPDCF1jZeI71J84jvQWIkSyOEEmoGEl8kyIxkNQUP/NUK9K0zcGkaSWZl69gYE3Ac879SA1uZC4wjpFv3Pwhezfe4NzyJzgKz9IKnqI6Znt0zMHBLf7WhXOcX15jt5pSJ6XIPaUD03oOcAOCNg4y74g9eRYQOvSqiu333ud777/Fi2c2udR6l7fZZ1h12a6f56XPfYXl9SfptlqIU+pqBqaoKNE3Wcib4gwkeSBDwrxQmtccIo5Qh5rkZ+CqeRnmP+QOJyA0zUoTyS8vD7j20nPo2npj3rFk0BeuH+xwZ/eQvazkdA3jqibPHKVTUJ3HhAZMAYK5xua8wznjYDgh1rB/a5urb9/i5s2XWR6+zdmVRZ55+gssPf5F1lbPsLSyTJEpUacQmwPZvOL0ehK55nWIb3iKvb0jZnUiz3MG5tncvEPQ2EPNYzKZ78vNUbovCN61gKYnzyXSqRLbm5u8H4+pCaRYUN+ZMZnusOS7iGXMaqOVeVqZ4GO82//fF1kwUaJkiC842Nvl3dfeJe3cZLBgpPFlepnnTvgCg7XP8/nHP09neQGPUk2bgCbuhK94eJ3sxJFS5PqtLfaHE3r9HmfIeO+D2wSZHpCVa9TWnYNQo+ruHhazpr2d3yKmiPPG586dYyaO3XpGd/oWA73DsHyW0H6aM4tdFtsFAcUHh9PYJNI5uCcWpuJQH3BFh8nBLtff+FP2rnyfQX2NhYXAYPEca+tf4uzzn2Nx5TT9VmRUHyAxx+ERkUdTZfdZsJnhfCDkGTFGZlVFUZaEPH0HV3+CrF5hFkrMJcQSzoGZgvm5BSQchuCI0ubS6nOcW3mOqdT0b9xkcOf/EM//HH7jF0mMkGiYVojWGEKUvOnORFHv5o1JINiUcPgqbH+dzv5rMI089twKF5/6BMv5z2C9T3LgA29Nj9kYH7PoA4XLSRqbGvhjcAQ2t+LVpQUWBws4gU4nh9U+wVNj9Rv4qo23J6nDOt63MY2oVYhzQKQwIznPvnlujxOjWc3ZVsljbSFjitkWZIY68LOEmmBExAK4HO8yRJqg6tMEF6/B+Cp29App7+uUtkln8GmWez/N4sVL+MUhXdnhgB10tsw4Rt4Zlzy/kNFxU2JqiNmPs04C+pn1lcaOxWiXbQadnDAKL2Buk4wPyKf7WPY4ZOfwbkDIOqhMEBWmGthLwtbMiKps9BxLRQHVmBQrVDyqgtYgKcN5xXybWnIyTWT1ASnexEbvUxz+EBt/H51dwZJDygvI6i+xsvBFevlp2tJmkt4kzX5AV5Tl7qc4Wy6yPTVGZtwc1SxmnszLQxukhwFxUp6bKYIQqvwxopxiIVuj1NfI05skvY7KJZI/j3qYasFWqplQs5JlrOceH6agBSae2tVILbhqimQwCy18PYTpDqF+Hzd6HTt8BxldwVe3m348O4X0voIufYG48GU0W6H0SmEe05roHyNoRVFdph69iuSf5Mlun1eGyk7dYpAnGrLs49Nk97PeDSecCLlLjHybA/cEi2UbX72N2Dbbe9fZOqiRVklrYYHpzCiD0B90GQ1rNve3WV10dMMOMnkPr0fE/T/HtZfx6Zji6F3c4avo9DKmu1ho4fPzyMrfJPY/Reo8g8vPoHmPytW46pi8MsTN06L10exZagJSvY+rfsBx9gJ17NLPITj52HOMR63QIUIe2RmPyLINFlpd6rjDzmyLWzubdFqRQWuJ0VFgUpUcWORYhfduThiPP+CC+x/0j96k8J766JvI8fcg7WL1iJivYr1L0P/bWPd5UusJrFjBXBswLEZkNiSXCictxAnKGFVBLGG+pPLP4BlT1m8xrTdQW8AROek1/9IAmBoD56m8Y1Qd48oCzc4RM0fWUQoZ4S1goSJnTKj2KPNV+v2SfPxt2uPfpghHSDhFVu9Rze4Qy1Vs7e9haz8F/YtIOIvDN5WazaA+nifZhkH0UuC8EFPEyJB5JhLNMKbADLOCEDpQ+4Z5/isiSUPtoJNg4DMObMp0NibzBWuLiwxaHQJGuxN4cmmG1EM8B7TiFr3iXXqTb5L7KbVbxqUJFR3i8k/Cxs8jg5+CbJFkEacVpCnQkJHNOqnJBXFNoYIqzp9kdo8jQn0Dn26TpI+4BTKnDeN8l2n4SwLgrMn3YpFO5iGBJ9Lp54TFFgCqFfgu5s/ixleQ679H2P9vWHaWav3vY8NtbPgHxMWfpjz/L4i9x7FU4WdDBEOdoV7AhAfJYsW5cF8ql7uFlzjB6h1CfQOsJGYXcaGNJ+FNeIC4+csCoA5UjKCGuBw1Q62iigbqQQrEFbjDH8KN3yDtfYvYeRG38VVC5xya/pw4XCL0f4LUfRytxgSbYOLnx5pXgfDAppuz2r301PQqqATMKqS6ieghml0k5eew+YY1OkQVnGJ4nMrcKn4MAOzuyKHxyig13gpcUmJWo2GBoILb+zp2/d9Rj64i67+CX/8HWO6w6Q9wtkkmHpWMmoQYRGkKjhNCTO4+tftX851qwubVZwNXhlQ3yONVzC2j+XnEB6hr+iFjq0rMIrRKxTSnmQXwYxlEgHvMtZ1sSCI4j/Mt0H3crd9DbvwmMXO4879GtvxLpKxH1CmSfxLXfgfkZdzoB/jqb6BujWSCZ/oAvXb/MgznmjJ7bvVNayw5rj4g1G+Di2j+NOqWEBvjorIYHDsuso+j1IxME9GlOZX//z8/DCewNbnXUcbArDCitMmH1wm3fx3Z+iNovYRc/Mfo4K8To1HbDiZtXHYOej+Jy7+OjF9FRq+StV/E+TZmJxPdB5+80JAhEuZWYWBOQDykSKjfwOkeMXsRzdYxiZiBQygssZAL+7WxFDO6fkotCexjsXsfAYDvIj7D+wx1SpREiGM4/F9w/bfg+Hvo+i+SzvxTtH0OiVNSSngJGIZmEygeh/I5/PBblNM3caUHOYfm66glZtGaDlPuG07NI5+pzae/HjPBxSuEeB31Z6mzSzhJwJTkAs48tSqLWeCgjkwUWqEZ1zcx5qN84N7I7aMBiDswiXB0A5ttYbMbZEfvYsffIfoCd/6fo+u/TCp6uOoQr6BkiIUmalhEfR9XnsMfVRxMlddubHBtXOKywMVF4YUVw7lGJqPmSGaIhyzz1LEmRsisxKVbjenTQ7NPYCHDdIbDNwNbB7UpLSe0vHCgxoIGAkolJ8ecsz02b+nvKiXcPcbrfgD8O/8S8mNsuIWPE8RKnF8h9r8Ep77GbPAVfPK42QhB0HlrfPcyyYH3+N6T2H6Pt/eU3z+8yGF9TJWmXD0o2OgJGwszZpOIM0fmCrw4UjJMHHkokeoAP3sLNJKKS6RsEaFCREkG2Amn1/SAhTcOUg0WcE4xN6e/7lJeCWcOPRFtiGIfIbEIbnQF8R18fgHpP0XsXyJ2noH8LD6USEyYzeYG9BFmZNrk+oVnie2XmO7uc2ljyjODgv0qsXl0zNHhLqc7PZJfxQcFc8SoVGmC+JKWgaS3kHiTmF0kZecw8QgzIDGOY3yW08v6aC2oCpYSreBxuZDSPKj60EyNPEStiZbwWs6fU93QB/ZgCx30qX+NLQyIqYu5ZcQVqMtIUuPqGT45xN3LMSf0mFnDFokIpAqyNVj5CrJ/mf2J8V7R4mg0JquUPtfJpkYhz6O+g1rEJIB3OEvI9AYSb2LZGpY/ibkuUIEaUR3eFdSzxPu3bxErY2GhTwqBo8N9Xp8csdRdoNUvOTwckiohz2FlfYWQtZDU0GZmZeMakubPsbGloEtfxEqBWULTlKBjQh3wLqKiqPfNRFeEIs9RNVKKSPBkeYGmRKyn+KJHa+OLPL57hzdvfpMr1ZfBDXipvct66zricjr6OqkW1HXBrYE/CzbC+auoFdTZM5Ctz5VCiklAfE4rz7h56xbvvnuVaa2sr6/S7S+ydWuLva0bXDh3ng23wbUrd6hqJeSwsLhEl5vI9APEAbJK9CuY5IgLcwEHBKuPIOsi1RhHRIV5M9JMco2Ec4GUjLffeZ/j0ZillQHiPLe2d+i2CpYXF9g+3OR4f8w5Eb7sf4fNasTyhZ+hV73LK6/dos5Os7F8wHKZmOge5g6wuE/kEI27lK3HWTi1igJoauaEzs33YEQz2v0+ISqh1WJveMy0VlZWNjgYT7C9HWaTSJ3ljKsD9OBtiv4tYAwmZLpFtAzVDmI9nLTx0wmhGVhpo6ow14i1ZF5ZzRuOEDwHR0P+5OXvMp7WXHrqCYLP+Mb//jM2Vpb5/F/7NDe2brGzP6L77KdJfswrL3+bZ2eCrbT51g/a7E73+cyLa5wbDNje26Rs71LIAVGVw+GYtdUxL23UeFGSVvO6RJpRjcsofE27SI27xWkzyqmPIAgHE6W/EOi2h4y1oF0dUKYhI+lxKz3NsfTIdZ92vMOCKF23i9gWudqHZ4OqCecczp1UaIKpMZ5MQDxlp+T4uOLoaJdWq0tKnus3t1he79HuOvanjmjPc33vGvLmt2k//xR5vkhGQosWV/anvPH6HqdWE+dOD9g8cGxuDfmkfxdGkXaRk+p4N+SaCTIV1nykszSl7iVMdsjLkjg4Js3GjK2k3zd0fUKYHmCuZGvhHGPO4GUJ7zJiWOIoXuCmwgZvcIFttuzUhwE4GYHdr/IyjCLL2VhdYlYneu2M4PuMpxMChpPEU49dQOsZ3339Tc5srPHVL3+FMP4jVvQbnBp8hSK8yKDbwYoJyyvL9NrQzsYMOjW2/DgLi55kRxAVS4n5jKOxAoXMC0t9jwOSOQ6TkPfOshgiYjWWDHELzIAr0x47PMaprMOqqwlSEX1GVGU42aVd72OaI7KBHA13r7bb3cfvSmU/VDg1paomYzKriDHhRPB5xvFoSqpntFoFi90BYp7N0R3arR6lD2Tbv4e79uscskbc+DXK9c/jisR4qrjqmHb9Cupm1OXnyIoFcjnE6RQhcqLfUjFsrjcWkUZ64QLbs4Ib0xL1jnYrEXVKEUu2ZjkjX/NcAU8ULerMozqjqLZw8QYu3kElh8GLTGcrV+VouPMgAD+a5pvpIt57gveNfEabrBBCuOs2sTZUIeQekWaAKvEYu/XvybZ/CxcGxLVfhfWfg85jUGvTPKW3IL9IHT7NzATTY5yBibvbSD3YTTT8gpixUwXerTOOVFGt6eDohYJOeZtWfZ31/DFKDOprZNWdZv7pl9DWWbLeY0xG06uBkzZ1ftD7b2ZzX/A+kDSRUprXAo2LVNWME1YHfNPWzhJOHMqMOutgZ/4urWIF2fwPyNV/i21+AzZ+lbT+Ver282RHU8rDN9C8wlovINJFZYK5KWIOp+GkU7v/qRBczamyppcLMYJXxUlNViSmZgxxRLtMPtnBJ6UqVrD8HMIKybfIzGFMCWYO05Px+Fy5a/digHduLljm7oD0BIQT2cw8fDZAiJKsKU2z+ggvfdLqr6CDl5Dd/05++/eRK/8G9r4BZ/4O2r9EJTXZ9D0CM7R4AUIbNZlLaD+sDgsaqDSiTOiKx2fNwEUbcSlt69NOt8hn10lulVn7SciWmo6ThNiURngTkOFweLXVat11gfsrPZHGKnIf8MFjalSxJlp8JB9ngIqQxaaCnOaCo4Mn4idvwdbv4rb+GGc1afWr2MrX8LnHx03MBsTyE8SwCpZwzOY8xT0u0eM5sgMmOmLFLSGuoJaEwxOS4GfvY+kyzq1SlZeIoY9XxagAJeBptTocTMdXg1nCTOc/dpecaGoAQZzxxvHbvLF7mdXWIp9dfYGWlMQflbjet4RG56zeMKnwpuQRRDLq9gu48+dJK1+m2vyPZFt/TNj5PvXpL2H9T5ExwlVvIu4zmOthNK5w/0hDXYIU8dLwCM6EgCNPNW56HY3vkPJF6tYziBQErRHTOZCNCsVQvM0lMs7Jh2aMbq6geHP4Nv/12n8hWuL1/cRhtccvnv1aI1175GDihGgLeBXUJUxqJEbUtaD/BUL7Iiy8TLz9u7jr/4nU/wBO/SwuKPnsGpY/Q+XL5u8eCAGO0rfJKVHL8ObJzLD6Cskuo2EJ8mcRStD6vt0A96mOnc0ZoY+K/sF5jtOYV3ff4oXBZ7kw2ODOeMgbe2+zNdvmTL5BZfUjADjZ7YlQYR5exRCtaXTAG+jKL1MvfY5w43cIN34b0h386V+g6rZJsoLYGlj6UBB0Usz1PgGhwk2vUdsVLFuA7EXM9eEj9/dgTmmkWQ/ZuIihruKIIduxx4EekeeBli/+P8dS85vayecEZsxkRjAh92fgsX+G+jbug9/Abv0h9uTPkoolvA2aqTL3XK55aUrBMrwTLO6h6T2c75PCZ1AZIBzf/e1HrXDyKz6EpsrS1PBvwTFwA7608Vn+87U/4Ltbr3C2v8rPn/4ZVooV6lg1ock5EIfQDDcaydvDbjcXYkmjDAqaYW5GtAovi7jT/5BaK+Lmb1J8UJNvPEY1eIrkAnI35pyoDucEhynoUcP8+POkMEBs2ridPPotE4Agc5HB0bhmdHzMoNumjomDwzv4kLHQXuYXVn+Ovd4RS+UCTy9c4vBoSNTIYGGBo+Exk1lNQlhoF7TygN4NOD968xNLOInois3JTLMj1HWQs/8IsSPkxm+D+xbWewnx60A1B7DJCEaGOkdIc3msBJLvND4vM5Jkjzz4XQBCVrK9d8Tv/uHXOdjf59LFJ8nLkveuvM9sOmNjZY2QeUazEa1sj3gpYzwd40Qo8l2uXr2GAs7Blz73Et1WQYoPcau7qzERnfu1O3GNNMb5RVj/J8TDyzB6GZu9hxWnaOR8SiPFBWcl3mpCOkTSHkkCJqFRsZigYo98FeguACICLrB/NGT/6Ji9oyHZtOKDW7dxEuh1B4x3R+zs7dNptcizhgQJWaCuaobDY06fPU2nndHtdUmafsyhlSAkkh1Rd0+RL32RcPNl3PBVtPtZkDAPao0UztsYN7uJ1bdJHGP5WdRnzRsm5rFHu/49ACxGBt2Cp584y60ycGZtibLd4c7mMs45Vpe72EKbc6fX6fe7FGVg584u1XRIp9NldfUsw9GYw8Mx08mUfqfk4RXCX7Q8Ro1IhfSew/wa7vBVbHUby89APdcyioNU4eobGCPIL0J2ChVHUMWpJ8nH20WIVtF2GV/8zKeYzWqKsqCKidXFASEE2mUjbnIIIc8YTSZ0u30wZaHXpd1ts72zd1eVZycvYQkfMsETdWajzjCQ5v0jNKKWEJfjCEhMuM6TSO8CcvwmNr5GVZ5BnOI1NGxVczGENuIvEKUExpg0JfHHtcLgREhq3Ly5ySuvvcGzzz7LbFbxznvvkRUlpzfWmU4nDI+O6PZ6JIU//b/fo9tt8fnPvISi7O3s8tjpMzx59hSPSjtRQTXe7TOqVBNjouWhbOVUKTZUmGRMZQE6n0MO3qc4uoYMPgXeI+oRiU016D0uJpJMQXKcNgrR5D6+AwbUSwhtxrPElRubPP7UJ6ii8v6tbcpWC7KS0fGQ/f0D+v0JrXa34eNSZFQrsa64fWefldUNOp0+cToizMcTNi8vnROiwub2Dju7+/gQ6HTajGcVBwcHrA/6rK4ss7mziwue1YVlNrcOOdi/yOL0Uzw1fI92vUMVLgDV3L89OIe5iPkZ4hTRh02HHlwiJx2sSMD5Uhz4IHztZ38a54V2q+DpS09yeHREkTlCr8PK4gKz2YyFxSWef+YCS4sD1hb7HBwccvbMKVqtDNWaVreDpYTeJ4j03lFHIxlEM8q8oN1uU6kQk1G0O3T7A3R3Hx+Msu1JruZA1ljoPEHLv0Ymx4SWg1SgkuMQxHehUlLexrLWfbXCXwyAcwGQMpjpe8PhXn3uzEpcGAw4OjjE+8Bj64tMpxXTyZSqShR5Rko1Rdni4rk1uq02wWWMBj2m9ZS8zBiNDkixbN4HRjl5J9E7T50AjRBrjo8PyESZTWoyAdWa7Z1tyjzgBTa395mlGaJjrB4yGR0SR4doNkbqGhNwcYKv9kCnxHRMygpkXiD9xQA4QigC6LX/B7Ut4GXSOgGWAAAAAElFTkSuQmCC";
471229
471301
  const osmUrl = "data:image/png;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iI2YyZjJmMiIvPgogIDxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiNjY2NjY2MiIHN0cm9rZS13aWR0aD0iMSIvPgogIDxwYXRoIGQ9Ik0yMCAzMCBMNDAgMjAgTDYwIDM1IEw4MCAyNSBMODAgNzAgTDYwIDc1IEw0MCA2MCBMMjAgNzAgWiIgZmlsbD0iIzdkZDNjMCIgc3Ryb2tlPSIjNWNiM2EwIiBzdHJva2Utd2lkdGg9IjEiLz4KICA8Y2lyY2xlIGN4PSIzNSIgY3k9IjQ1IiByPSIzIiBmaWxsPSIjZmY2YjZiIi8+CiAgPGNpcmNsZSBjeD0iNTUiIGN5PSIzNSIgcj0iMiIgZmlsbD0iIzRlY2RjNCIvPgogIDxjaXJjbGUgY3g9IjY1IiBjeT0iNTUiIHI9IjIiIGZpbGw9IiM0NWI3ZDEiLz4KICA8dGV4dCB4PSI1MCIgeT0iOTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iIzY2NiI+T1NNPC90ZXh0Pgo8L3N2Zz4=";
471230
471302
  const customBlueUrl = "data:image/png;base64,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";
471231
- const _hoisted_1$i = { class: "basemap-content" };
471232
- const _hoisted_2$h = { class: "basemap-grid" };
471233
- const _hoisted_3$h = ["onClick"];
471234
- const _hoisted_4$h = { class: "basemap-preview" };
471235
- const _hoisted_5$h = ["src", "alt"];
471303
+ const _hoisted_1$j = { class: "basemap-content" };
471304
+ const _hoisted_2$i = { class: "basemap-grid" };
471305
+ const _hoisted_3$i = ["onClick"];
471306
+ const _hoisted_4$i = { class: "basemap-preview" };
471307
+ const _hoisted_5$i = ["src", "alt"];
471236
471308
  const _hoisted_6$e = { class: "basemap-name" };
471237
- const _sfc_main$j = /* @__PURE__ */ defineComponent({
471309
+ const _sfc_main$k = /* @__PURE__ */ defineComponent({
471238
471310
  __name: "BasemapPanel",
471239
471311
  props: {
471240
471312
  modelValue: { type: Boolean }
@@ -471449,7 +471521,7 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
471449
471521
  }
471450
471522
  };
471451
471523
  return (_ctx, _cache) => {
471452
- return openBlock(), createBlock(_sfc_main$k, {
471524
+ return openBlock(), createBlock(_sfc_main$l, {
471453
471525
  modelValue: visible.value,
471454
471526
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
471455
471527
  title: "底图选择",
@@ -471465,23 +471537,23 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
471465
471537
  onClose: handleClose
471466
471538
  }, {
471467
471539
  default: withCtx(() => [
471468
- createElementVNode("div", _hoisted_1$i, [
471469
- createElementVNode("div", _hoisted_2$h, [
471540
+ createElementVNode("div", _hoisted_1$j, [
471541
+ createElementVNode("div", _hoisted_2$i, [
471470
471542
  (openBlock(true), createElementBlock(Fragment, null, renderList(displayBasemaps.value, (basemap) => {
471471
471543
  return openBlock(), createElementBlock("div", {
471472
471544
  key: basemap.id,
471473
471545
  class: normalizeClass(["basemap-item", { active: selectedBasemap.value === basemap.id }]),
471474
471546
  onClick: ($event) => selectBasemap(basemap)
471475
471547
  }, [
471476
- createElementVNode("div", _hoisted_4$h, [
471548
+ createElementVNode("div", _hoisted_4$i, [
471477
471549
  createElementVNode("img", {
471478
471550
  src: basemap.thumbnail,
471479
471551
  alt: basemap.name,
471480
471552
  loading: "lazy"
471481
- }, null, 8, _hoisted_5$h)
471553
+ }, null, 8, _hoisted_5$i)
471482
471554
  ]),
471483
471555
  createElementVNode("div", _hoisted_6$e, toDisplayString(basemap.name), 1)
471484
- ], 10, _hoisted_3$h);
471556
+ ], 10, _hoisted_3$i);
471485
471557
  }), 128))
471486
471558
  ])
471487
471559
  ])
@@ -471822,15 +471894,15 @@ class OverviewMapUtil {
471822
471894
  function createOverviewMapUtil() {
471823
471895
  return new OverviewMapUtil();
471824
471896
  }
471825
- const _hoisted_1$h = { class: "measurement-content h-full flex flex-col" };
471826
- const _hoisted_2$g = { class: "measurement-header flex justify-between items-center px-6 py-4" };
471827
- const _hoisted_3$g = { class: "measurement-result py-8 text-center" };
471828
- const _hoisted_4$g = { class: "result-value" };
471829
- const _hoisted_5$g = { class: "tool-grid flex-1 py-5" };
471897
+ const _hoisted_1$i = { class: "measurement-content h-full flex flex-col" };
471898
+ const _hoisted_2$h = { class: "measurement-header flex justify-between items-center px-6 py-4" };
471899
+ const _hoisted_3$h = { class: "measurement-result py-8 text-center" };
471900
+ const _hoisted_4$h = { class: "result-value" };
471901
+ const _hoisted_5$h = { class: "tool-grid flex-1 py-5" };
471830
471902
  const _hoisted_6$d = ["onClick"];
471831
471903
  const _hoisted_7$c = ["src", "alt"];
471832
471904
  const _hoisted_8$9 = { class: "tool-label" };
471833
- const _sfc_main$i = /* @__PURE__ */ defineComponent({
471905
+ const _sfc_main$j = /* @__PURE__ */ defineComponent({
471834
471906
  __name: "MeasurementDialog",
471835
471907
  props: {
471836
471908
  modelValue: { type: Boolean }
@@ -472062,7 +472134,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
472062
472134
  const _component_el_option_group = resolveComponent("el-option-group");
472063
472135
  const _component_el_select = resolveComponent("el-select");
472064
472136
  const _component_el_button = resolveComponent("el-button");
472065
- return openBlock(), createBlock(_sfc_main$k, {
472137
+ return openBlock(), createBlock(_sfc_main$l, {
472066
472138
  modelValue: dialogVisible.value,
472067
472139
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => dialogVisible.value = $event),
472068
472140
  title: "图上量算",
@@ -472072,8 +472144,8 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
472072
472144
  cacheId: "measurement-dialog"
472073
472145
  }, {
472074
472146
  default: withCtx(() => [
472075
- createElementVNode("div", _hoisted_1$h, [
472076
- createElementVNode("div", _hoisted_2$g, [
472147
+ createElementVNode("div", _hoisted_1$i, [
472148
+ createElementVNode("div", _hoisted_2$h, [
472077
472149
  createVNode$1(_component_el_select, {
472078
472150
  modelValue: selectedUnit.value,
472079
472151
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedUnit.value = $event),
@@ -472141,10 +472213,10 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
472141
472213
  _: 1
472142
472214
  })
472143
472215
  ]),
472144
- createElementVNode("div", _hoisted_3$g, [
472145
- createElementVNode("div", _hoisted_4$g, toDisplayString(getDisplayValue()), 1)
472216
+ createElementVNode("div", _hoisted_3$h, [
472217
+ createElementVNode("div", _hoisted_4$h, toDisplayString(getDisplayValue()), 1)
472146
472218
  ]),
472147
- createElementVNode("div", _hoisted_5$g, [
472219
+ createElementVNode("div", _hoisted_5$h, [
472148
472220
  (openBlock(), createElementBlock(Fragment, null, renderList(measurementTools, (tool) => {
472149
472221
  return createElementVNode("div", {
472150
472222
  key: tool.type,
@@ -472174,13 +472246,13 @@ const _export_sfc = (sfc, props) => {
472174
472246
  }
472175
472247
  return target;
472176
472248
  };
472177
- const MeasurementDialog = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-d868b567"]]);
472178
- const _hoisted_1$g = { class: "coordinate-content" };
472179
- const _hoisted_2$f = { class: "format-selection" };
472180
- const _hoisted_3$f = { class: "format-options" };
472181
- const _hoisted_4$f = { class: "coordinate-input" };
472182
- const _hoisted_5$f = { class: "dialog-footer" };
472183
- const _sfc_main$h = /* @__PURE__ */ defineComponent({
472249
+ const MeasurementDialog = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-d868b567"]]);
472250
+ const _hoisted_1$h = { class: "coordinate-content" };
472251
+ const _hoisted_2$g = { class: "format-selection" };
472252
+ const _hoisted_3$g = { class: "format-options" };
472253
+ const _hoisted_4$g = { class: "coordinate-input" };
472254
+ const _hoisted_5$g = { class: "dialog-footer" };
472255
+ const _sfc_main$i = /* @__PURE__ */ defineComponent({
472184
472256
  __name: "CoordinateLocationDialog",
472185
472257
  props: {
472186
472258
  modelValue: { type: Boolean }
@@ -472330,7 +472402,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
472330
472402
  const _component_el_form_item = resolveComponent("el-form-item");
472331
472403
  const _component_el_form = resolveComponent("el-form");
472332
472404
  const _component_el_button = resolveComponent("el-button");
472333
- return openBlock(), createBlock(_sfc_main$k, {
472405
+ return openBlock(), createBlock(_sfc_main$l, {
472334
472406
  modelValue: dialogVisible.value,
472335
472407
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => dialogVisible.value = $event),
472336
472408
  title: "坐标拾取",
@@ -472341,7 +472413,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
472341
472413
  class: "coordinate-dialog"
472342
472414
  }, {
472343
472415
  footer: withCtx(() => [
472344
- createElementVNode("div", _hoisted_5$f, [
472416
+ createElementVNode("div", _hoisted_5$g, [
472345
472417
  createVNode$1(_component_el_button, {
472346
472418
  type: "primary",
472347
472419
  onClick: getCurrentLocation
@@ -472363,10 +472435,10 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
472363
472435
  ])
472364
472436
  ]),
472365
472437
  default: withCtx(() => [
472366
- createElementVNode("div", _hoisted_1$g, [
472367
- createElementVNode("div", _hoisted_2$f, [
472438
+ createElementVNode("div", _hoisted_1$h, [
472439
+ createElementVNode("div", _hoisted_2$g, [
472368
472440
  _cache[6] || (_cache[6] = createElementVNode("div", { class: "format-title" }, "坐标格式", -1)),
472369
- createElementVNode("div", _hoisted_3$f, [
472441
+ createElementVNode("div", _hoisted_3$g, [
472370
472442
  createVNode$1(_component_el_radio_group, {
472371
472443
  modelValue: selectedFormat.value,
472372
472444
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedFormat.value = $event),
@@ -472390,7 +472462,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
472390
472462
  }, 8, ["modelValue"])
472391
472463
  ])
472392
472464
  ]),
472393
- createElementVNode("div", _hoisted_4$f, [
472465
+ createElementVNode("div", _hoisted_4$g, [
472394
472466
  createVNode$1(_component_el_form, {
472395
472467
  model: coordinateForm,
472396
472468
  "label-width": "60px"
@@ -472431,14 +472503,14 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
472431
472503
  };
472432
472504
  }
472433
472505
  });
472434
- const _hoisted_1$f = { class: "region-content" };
472435
- const _hoisted_2$e = {
472506
+ const _hoisted_1$g = { class: "region-content" };
472507
+ const _hoisted_2$f = {
472436
472508
  key: 0,
472437
472509
  class: "region-categories"
472438
472510
  };
472439
- const _hoisted_3$e = { class: "region-group" };
472440
- const _hoisted_4$e = { class: "region-items" };
472441
- const _hoisted_5$e = { class: "region-group" };
472511
+ const _hoisted_3$f = { class: "region-group" };
472512
+ const _hoisted_4$f = { class: "region-items" };
472513
+ const _hoisted_5$f = { class: "region-group" };
472442
472514
  const _hoisted_6$c = { class: "region-items" };
472443
472515
  const _hoisted_7$b = { class: "region-group" };
472444
472516
  const _hoisted_8$8 = { class: "region-items" };
@@ -472457,7 +472529,7 @@ const _hoisted_19$4 = {
472457
472529
  class: "sub-regions"
472458
472530
  };
472459
472531
  const _hoisted_20$4 = { class: "district-grid" };
472460
- const _sfc_main$g = /* @__PURE__ */ defineComponent({
472532
+ const _sfc_main$h = /* @__PURE__ */ defineComponent({
472461
472533
  __name: "RegionNavigationDialog",
472462
472534
  props: {
472463
472535
  modelValue: { type: Boolean }
@@ -473542,7 +473614,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
473542
473614
  const _component_el_button = resolveComponent("el-button");
473543
473615
  const _component_el_tab_pane = resolveComponent("el-tab-pane");
473544
473616
  const _component_el_tabs = resolveComponent("el-tabs");
473545
- return openBlock(), createBlock(_sfc_main$k, {
473617
+ return openBlock(), createBlock(_sfc_main$l, {
473546
473618
  modelValue: dialogVisible.value,
473547
473619
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => dialogVisible.value = $event),
473548
473620
  title: "地区导航",
@@ -473553,7 +473625,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
473553
473625
  class: "region-dialog"
473554
473626
  }, {
473555
473627
  default: withCtx(() => [
473556
- createElementVNode("div", _hoisted_1$f, [
473628
+ createElementVNode("div", _hoisted_1$g, [
473557
473629
  createVNode$1(_component_el_tabs, {
473558
473630
  modelValue: activeTab.value,
473559
473631
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTab.value = $event),
@@ -473571,10 +473643,10 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
473571
473643
  closable: index2 > 0
473572
473644
  }, {
473573
473645
  default: withCtx(() => [
473574
- tab.name === "china" ? (openBlock(), createElementBlock("div", _hoisted_2$e, [
473575
- createElementVNode("div", _hoisted_3$e, [
473646
+ tab.name === "china" ? (openBlock(), createElementBlock("div", _hoisted_2$f, [
473647
+ createElementVNode("div", _hoisted_3$f, [
473576
473648
  _cache[2] || (_cache[2] = createElementVNode("div", { class: "group-title" }, "华北", -1)),
473577
- createElementVNode("div", _hoisted_4$e, [
473649
+ createElementVNode("div", _hoisted_4$f, [
473578
473650
  (openBlock(true), createElementBlock(Fragment, null, renderList(regions.north, (region) => {
473579
473651
  return openBlock(), createBlock(_component_el_button, {
473580
473652
  key: region.code,
@@ -473590,7 +473662,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
473590
473662
  }), 128))
473591
473663
  ])
473592
473664
  ]),
473593
- createElementVNode("div", _hoisted_5$e, [
473665
+ createElementVNode("div", _hoisted_5$f, [
473594
473666
  _cache[3] || (_cache[3] = createElementVNode("div", { class: "group-title" }, "东北", -1)),
473595
473667
  createElementVNode("div", _hoisted_6$c, [
473596
473668
  (openBlock(true), createElementBlock(Fragment, null, renderList(regions.northeast, (region) => {
@@ -473746,12 +473818,12 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
473746
473818
  };
473747
473819
  }
473748
473820
  });
473749
- const _hoisted_1$e = { class: "markers-content" };
473750
- const _hoisted_2$d = { class: "toolbar" };
473751
- const _hoisted_3$d = { class: "search-filter" };
473752
- const _hoisted_4$d = { class: "markers-list" };
473753
- const _hoisted_5$d = { class: "marker-name" };
473754
- const _sfc_main$f = /* @__PURE__ */ defineComponent({
473821
+ const _hoisted_1$f = { class: "markers-content" };
473822
+ const _hoisted_2$e = { class: "toolbar" };
473823
+ const _hoisted_3$e = { class: "search-filter" };
473824
+ const _hoisted_4$e = { class: "markers-list" };
473825
+ const _hoisted_5$e = { class: "marker-name" };
473826
+ const _sfc_main$g = /* @__PURE__ */ defineComponent({
473755
473827
  __name: "MyMarkersDialog",
473756
473828
  props: {
473757
473829
  modelValue: { type: Boolean }
@@ -474077,7 +474149,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
474077
474149
  const _component_el_form_item = resolveComponent("el-form-item");
474078
474150
  const _component_el_form = resolveComponent("el-form");
474079
474151
  return openBlock(), createElementBlock(Fragment, null, [
474080
- createVNode$1(_sfc_main$k, {
474152
+ createVNode$1(_sfc_main$l, {
474081
474153
  modelValue: dialogVisible.value,
474082
474154
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => dialogVisible.value = $event),
474083
474155
  title: "我的标记",
@@ -474088,8 +474160,8 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
474088
474160
  class: "markers-dialog"
474089
474161
  }, {
474090
474162
  default: withCtx(() => [
474091
- createElementVNode("div", _hoisted_1$e, [
474092
- createElementVNode("div", _hoisted_2$d, [
474163
+ createElementVNode("div", _hoisted_1$f, [
474164
+ createElementVNode("div", _hoisted_2$e, [
474093
474165
  createVNode$1(_component_el_button, {
474094
474166
  type: "primary",
474095
474167
  icon: unref(plus_default),
@@ -474130,7 +474202,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
474130
474202
  _: 1
474131
474203
  }, 8, ["icon", "disabled"])
474132
474204
  ]),
474133
- createElementVNode("div", _hoisted_3$d, [
474205
+ createElementVNode("div", _hoisted_3$e, [
474134
474206
  createVNode$1(_component_el_input, {
474135
474207
  modelValue: searchKeyword.value,
474136
474208
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchKeyword.value = $event),
@@ -474163,7 +474235,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
474163
474235
  _: 1
474164
474236
  }, 8, ["modelValue"])
474165
474237
  ]),
474166
- createElementVNode("div", _hoisted_4$d, [
474238
+ createElementVNode("div", _hoisted_4$e, [
474167
474239
  createVNode$1(_component_el_table, {
474168
474240
  data: filteredMarkers.value,
474169
474241
  height: "300",
@@ -474177,7 +474249,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
474177
474249
  width: "120"
474178
474250
  }, {
474179
474251
  default: withCtx(({ row }) => [
474180
- createElementVNode("div", _hoisted_5$d, [
474252
+ createElementVNode("div", _hoisted_5$e, [
474181
474253
  createVNode$1(_component_el_icon, {
474182
474254
  color: row.color,
474183
474255
  size: "16"
@@ -474251,7 +474323,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
474251
474323
  ]),
474252
474324
  _: 1
474253
474325
  }, 8, ["modelValue"]),
474254
- createVNode$1(_sfc_main$k, {
474326
+ createVNode$1(_sfc_main$l, {
474255
474327
  modelValue: showAddDialog.value,
474256
474328
  "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => showAddDialog.value = $event),
474257
474329
  title: "添加标记",
@@ -474322,11 +474394,11 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
474322
474394
  };
474323
474395
  }
474324
474396
  });
474325
- const _hoisted_1$d = { class: "bookmarks-content" };
474326
- const _hoisted_2$c = { class: "toolbar" };
474327
- const _hoisted_3$c = { class: "search-filter" };
474328
- const _hoisted_4$c = { class: "bookmarks-grid" };
474329
- const _hoisted_5$c = ["onClick"];
474397
+ const _hoisted_1$e = { class: "bookmarks-content" };
474398
+ const _hoisted_2$d = { class: "toolbar" };
474399
+ const _hoisted_3$d = { class: "search-filter" };
474400
+ const _hoisted_4$d = { class: "bookmarks-grid" };
474401
+ const _hoisted_5$d = ["onClick"];
474330
474402
  const _hoisted_6$b = { class: "bookmark-thumbnail" };
474331
474403
  const _hoisted_7$a = { class: "thumbnail-placeholder" };
474332
474404
  const _hoisted_8$7 = { class: "bookmark-overlay" };
@@ -474348,7 +474420,7 @@ const _hoisted_19$3 = {
474348
474420
  class: "statistics"
474349
474421
  };
474350
474422
  const _hoisted_20$3 = { class: "dialog-footer" };
474351
- const _sfc_main$e = /* @__PURE__ */ defineComponent({
474423
+ const _sfc_main$f = /* @__PURE__ */ defineComponent({
474352
474424
  __name: "ViewBookmarksDialog",
474353
474425
  props: {
474354
474426
  modelValue: { type: Boolean }
@@ -474607,7 +474679,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
474607
474679
  const _component_el_form_item = resolveComponent("el-form-item");
474608
474680
  const _component_el_slider = resolveComponent("el-slider");
474609
474681
  const _component_el_form = resolveComponent("el-form");
474610
- return openBlock(), createBlock(_sfc_main$k, {
474682
+ return openBlock(), createBlock(_sfc_main$l, {
474611
474683
  modelValue: dialogVisible.value,
474612
474684
  "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => dialogVisible.value = $event),
474613
474685
  title: "视角书签",
@@ -474628,8 +474700,8 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
474628
474700
  ])
474629
474701
  ]),
474630
474702
  default: withCtx(() => [
474631
- createElementVNode("div", _hoisted_1$d, [
474632
- createElementVNode("div", _hoisted_2$c, [
474703
+ createElementVNode("div", _hoisted_1$e, [
474704
+ createElementVNode("div", _hoisted_2$d, [
474633
474705
  createVNode$1(_component_el_button, {
474634
474706
  type: "primary",
474635
474707
  icon: unref(plus_default),
@@ -474669,7 +474741,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
474669
474741
  _: 1
474670
474742
  }, 8, ["icon", "disabled"])
474671
474743
  ]),
474672
- createElementVNode("div", _hoisted_3$c, [
474744
+ createElementVNode("div", _hoisted_3$d, [
474673
474745
  createVNode$1(_component_el_input, {
474674
474746
  modelValue: searchKeyword.value,
474675
474747
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchKeyword.value = $event),
@@ -474724,7 +474796,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
474724
474796
  _: 1
474725
474797
  }, 8, ["modelValue"])
474726
474798
  ]),
474727
- createElementVNode("div", _hoisted_4$c, [
474799
+ createElementVNode("div", _hoisted_4$d, [
474728
474800
  (openBlock(true), createElementBlock(Fragment, null, renderList(filteredBookmarks.value, (bookmark, index2) => {
474729
474801
  return openBlock(), createElementBlock("div", {
474730
474802
  key: bookmark.id,
@@ -474820,7 +474892,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
474820
474892
  ]),
474821
474893
  createElementVNode("div", _hoisted_17$4, toDisplayString(formatTime(bookmark.createTime)), 1)
474822
474894
  ])
474823
- ], 8, _hoisted_5$c);
474895
+ ], 8, _hoisted_5$d);
474824
474896
  }), 128))
474825
474897
  ]),
474826
474898
  filteredBookmarks.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_18$4, [
@@ -474883,7 +474955,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
474883
474955
  })
474884
474956
  ])) : createCommentVNode("", true)
474885
474957
  ]),
474886
- createVNode$1(_sfc_main$k, {
474958
+ createVNode$1(_sfc_main$l, {
474887
474959
  modelValue: showBookmarkForm.value,
474888
474960
  "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => showBookmarkForm.value = $event),
474889
474961
  title: editingIndex.value >= 0 ? "编辑书签" : "保存视角书签",
@@ -475037,11 +475109,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
475037
475109
  };
475038
475110
  }
475039
475111
  });
475040
- const _hoisted_1$c = { class: "py-2.5" };
475041
- const _hoisted_2$b = { class: "h-150 overflow-y-auto" };
475042
- const _hoisted_3$b = { class: "flex items-center justify-between" };
475043
- const _hoisted_4$b = { class: "mb-5" };
475044
- const _hoisted_5$b = { class: "mb-3" };
475112
+ const _hoisted_1$d = { class: "py-2.5" };
475113
+ const _hoisted_2$c = { class: "h-150 overflow-y-auto" };
475114
+ const _hoisted_3$c = { class: "flex items-center justify-between" };
475115
+ const _hoisted_4$c = { class: "mb-5" };
475116
+ const _hoisted_5$c = { class: "mb-3" };
475045
475117
  const _hoisted_6$a = {
475046
475118
  key: 0,
475047
475119
  class: "mb-3"
@@ -475126,7 +475198,7 @@ const _hoisted_44 = {
475126
475198
  const _hoisted_45 = { key: 0 };
475127
475199
  const _hoisted_46 = { key: 0 };
475128
475200
  const _hoisted_47 = { class: "text-right" };
475129
- const _sfc_main$d = /* @__PURE__ */ defineComponent({
475201
+ const _sfc_main$e = /* @__PURE__ */ defineComponent({
475130
475202
  __name: "MapPrintDialog",
475131
475203
  props: {
475132
475204
  modelValue: { type: Boolean },
@@ -475505,7 +475577,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
475505
475577
  const _component_el_col = resolveComponent("el-col");
475506
475578
  const _component_el_button_group = resolveComponent("el-button-group");
475507
475579
  const _component_el_row = resolveComponent("el-row");
475508
- return openBlock(), createBlock(_sfc_main$k, {
475580
+ return openBlock(), createBlock(_sfc_main$l, {
475509
475581
  modelValue: dialogVisible.value,
475510
475582
  "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => dialogVisible.value = $event),
475511
475583
  title: "地图打印",
@@ -475543,15 +475615,15 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
475543
475615
  ])
475544
475616
  ]),
475545
475617
  default: withCtx(() => [
475546
- createElementVNode("div", _hoisted_1$c, [
475618
+ createElementVNode("div", _hoisted_1$d, [
475547
475619
  createVNode$1(_component_el_row, { gutter: 20 }, {
475548
475620
  default: withCtx(() => [
475549
475621
  createVNode$1(_component_el_col, { span: 8 }, {
475550
475622
  default: withCtx(() => [
475551
- createElementVNode("div", _hoisted_2$b, [
475623
+ createElementVNode("div", _hoisted_2$c, [
475552
475624
  createVNode$1(_component_el_card, { shadow: "hover" }, {
475553
475625
  header: withCtx(() => [
475554
- createElementVNode("div", _hoisted_3$b, [
475626
+ createElementVNode("div", _hoisted_3$c, [
475555
475627
  _cache[18] || (_cache[18] = createElementVNode("span", null, "打印设置", -1)),
475556
475628
  createVNode$1(_component_el_button, {
475557
475629
  type: "text",
@@ -475571,9 +475643,9 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
475571
475643
  ])
475572
475644
  ]),
475573
475645
  default: withCtx(() => [
475574
- createElementVNode("div", _hoisted_4$b, [
475646
+ createElementVNode("div", _hoisted_4$c, [
475575
475647
  _cache[21] || (_cache[21] = createElementVNode("label", { class: "block text-sm font-medium text-gray-700 mb-2" }, "纸张设置", -1)),
475576
- createElementVNode("div", _hoisted_5$b, [
475648
+ createElementVNode("div", _hoisted_5$c, [
475577
475649
  createVNode$1(_component_el_select, {
475578
475650
  modelValue: printSettings.paperSize,
475579
475651
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => printSettings.paperSize = $event),
@@ -476112,17 +476184,17 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
476112
476184
  };
476113
476185
  }
476114
476186
  });
476115
- const _hoisted_1$b = { class: "mark-tab-container" };
476116
- const _hoisted_2$a = { class: "continuous-switch" };
476117
- const _hoisted_3$a = { class: "tools-grid" };
476118
- const _hoisted_4$a = ["onClick"];
476119
- const _hoisted_5$a = ["src"];
476187
+ const _hoisted_1$c = { class: "mark-tab-container" };
476188
+ const _hoisted_2$b = { class: "continuous-switch" };
476189
+ const _hoisted_3$b = { class: "tools-grid" };
476190
+ const _hoisted_4$b = ["onClick"];
476191
+ const _hoisted_5$b = ["src"];
476120
476192
  const _hoisted_6$9 = { class: "tool-label" };
476121
476193
  const _hoisted_7$8 = {
476122
476194
  key: 0,
476123
476195
  class: "stop-drawing-section"
476124
476196
  };
476125
- const _sfc_main$c = {
476197
+ const _sfc_main$d = {
476126
476198
  __name: "MarkTab",
476127
476199
  setup(__props) {
476128
476200
  const mapRef = inject("map");
@@ -476645,7 +476717,7 @@ const _sfc_main$c = {
476645
476717
  const _component_el_select = resolveComponent("el-select");
476646
476718
  const _component_el_switch = resolveComponent("el-switch");
476647
476719
  const _component_el_button = resolveComponent("el-button");
476648
- return openBlock(), createElementBlock("div", _hoisted_1$b, [
476720
+ return openBlock(), createElementBlock("div", _hoisted_1$c, [
476649
476721
  createVNode$1(_component_el_select, {
476650
476722
  modelValue: selectedType.value,
476651
476723
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedType.value = $event),
@@ -476663,7 +476735,7 @@ const _sfc_main$c = {
476663
476735
  ]),
476664
476736
  _: 1
476665
476737
  }, 8, ["modelValue"]),
476666
- createElementVNode("div", _hoisted_2$a, [
476738
+ createElementVNode("div", _hoisted_2$b, [
476667
476739
  _cache[2] || (_cache[2] = createElementVNode("span", { class: "switch-label" }, "连续标绘模式", -1)),
476668
476740
  createVNode$1(_component_el_switch, {
476669
476741
  modelValue: continuousDrawing.value,
@@ -476671,7 +476743,7 @@ const _sfc_main$c = {
476671
476743
  size: "small"
476672
476744
  }, null, 8, ["modelValue"])
476673
476745
  ]),
476674
- createElementVNode("div", _hoisted_3$a, [
476746
+ createElementVNode("div", _hoisted_3$b, [
476675
476747
  (openBlock(true), createElementBlock(Fragment, null, renderList(currentTools.value, (tool, idx) => {
476676
476748
  return openBlock(), createElementBlock("div", {
476677
476749
  key: idx,
@@ -476683,12 +476755,12 @@ const _sfc_main$c = {
476683
476755
  src: tool.icon,
476684
476756
  class: "tool-image",
476685
476757
  alt: "tool icon"
476686
- }, null, 8, _hoisted_5$a)) : (openBlock(), createElementBlock("i", {
476758
+ }, null, 8, _hoisted_5$b)) : (openBlock(), createElementBlock("i", {
476687
476759
  key: 1,
476688
476760
  class: normalizeClass([tool.icon, "tool-icon-large"])
476689
476761
  }, null, 2)),
476690
476762
  createElementVNode("span", _hoisted_6$9, toDisplayString(tool.label), 1)
476691
- ], 8, _hoisted_4$a);
476763
+ ], 8, _hoisted_4$b);
476692
476764
  }), 128))
476693
476765
  ]),
476694
476766
  activeDrawingTool.value && continuousDrawing.value ? (openBlock(), createElementBlock("div", _hoisted_7$8, [
@@ -476708,18 +476780,18 @@ const _sfc_main$c = {
476708
476780
  };
476709
476781
  }
476710
476782
  };
476711
- const MarkTab = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-127b85ab"]]);
476712
- const _hoisted_1$a = { class: "list-tab-container" };
476713
- const _hoisted_2$9 = { class: "toolbar" };
476714
- const _hoisted_3$9 = { class: "toolbar-left" };
476715
- const _hoisted_4$9 = { class: "data-count" };
476716
- const _hoisted_5$9 = { class: "list-content" };
476783
+ const MarkTab = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-127b85ab"]]);
476784
+ const _hoisted_1$b = { class: "list-tab-container" };
476785
+ const _hoisted_2$a = { class: "toolbar" };
476786
+ const _hoisted_3$a = { class: "toolbar-left" };
476787
+ const _hoisted_4$a = { class: "data-count" };
476788
+ const _hoisted_5$a = { class: "list-content" };
476717
476789
  const _hoisted_6$8 = { class: "tree-node" };
476718
476790
  const _hoisted_7$7 = {
476719
476791
  key: 1,
476720
476792
  class: "empty-state"
476721
476793
  };
476722
- const _sfc_main$b = {
476794
+ const _sfc_main$c = {
476723
476795
  __name: "ListTab",
476724
476796
  setup(__props) {
476725
476797
  const groups = ref([
@@ -476740,9 +476812,9 @@ const _sfc_main$b = {
476740
476812
  return (_ctx, _cache) => {
476741
476813
  const _component_el_button = resolveComponent("el-button");
476742
476814
  const _component_el_tree = resolveComponent("el-tree");
476743
- return openBlock(), createElementBlock("div", _hoisted_1$a, [
476744
- createElementVNode("div", _hoisted_2$9, [
476745
- createElementVNode("div", _hoisted_3$9, [
476815
+ return openBlock(), createElementBlock("div", _hoisted_1$b, [
476816
+ createElementVNode("div", _hoisted_2$a, [
476817
+ createElementVNode("div", _hoisted_3$a, [
476746
476818
  _cache[2] || (_cache[2] = createElementVNode("span", { class: "toolbar-title" }, "分组管理:", -1)),
476747
476819
  createVNode$1(_component_el_button, {
476748
476820
  type: "primary",
@@ -476765,9 +476837,9 @@ const _sfc_main$b = {
476765
476837
  _: 1
476766
476838
  })
476767
476839
  ]),
476768
- createElementVNode("div", _hoisted_4$9, "共" + toDisplayString(groups.value.length) + "条数据", 1)
476840
+ createElementVNode("div", _hoisted_4$a, "共" + toDisplayString(groups.value.length) + "条数据", 1)
476769
476841
  ]),
476770
- createElementVNode("div", _hoisted_5$9, [
476842
+ createElementVNode("div", _hoisted_5$a, [
476771
476843
  groups.value.length ? (openBlock(), createBlock(_component_el_tree, {
476772
476844
  key: 0,
476773
476845
  data: groups.value,
@@ -476790,15 +476862,15 @@ const _sfc_main$b = {
476790
476862
  };
476791
476863
  }
476792
476864
  };
476793
- const ListTab = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-1cc008ea"]]);
476794
- const _hoisted_1$9 = { class: "dialog-content" };
476795
- const _hoisted_2$8 = { class: "toolbar" };
476796
- const _hoisted_3$8 = { class: "toolbar-left" };
476797
- const _hoisted_4$8 = ["onClick"];
476798
- const _hoisted_5$8 = { class: "toolbar-right" };
476865
+ const ListTab = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-1cc008ea"]]);
476866
+ const _hoisted_1$a = { class: "dialog-content" };
476867
+ const _hoisted_2$9 = { class: "toolbar" };
476868
+ const _hoisted_3$9 = { class: "toolbar-left" };
476869
+ const _hoisted_4$9 = ["onClick"];
476870
+ const _hoisted_5$9 = { class: "toolbar-right" };
476799
476871
  const _hoisted_6$7 = ["onClick"];
476800
476872
  const _hoisted_7$6 = { class: "content-area" };
476801
- const _sfc_main$a = {
476873
+ const _sfc_main$b = {
476802
476874
  __name: "index",
476803
476875
  setup(__props) {
476804
476876
  const visible = ref(true);
@@ -476860,9 +476932,9 @@ const _sfc_main$a = {
476860
476932
  onClose: handleClose
476861
476933
  }, {
476862
476934
  default: withCtx(() => [
476863
- createElementVNode("div", _hoisted_1$9, [
476864
- createElementVNode("div", _hoisted_2$8, [
476865
- createElementVNode("div", _hoisted_3$8, [
476935
+ createElementVNode("div", _hoisted_1$a, [
476936
+ createElementVNode("div", _hoisted_2$9, [
476937
+ createElementVNode("div", _hoisted_3$9, [
476866
476938
  (openBlock(), createElementBlock(Fragment, null, renderList(leftTools, (tool, idx) => {
476867
476939
  return createVNode$1(_component_el_tooltip, {
476868
476940
  key: idx,
@@ -476874,13 +476946,13 @@ const _sfc_main$a = {
476874
476946
  createElementVNode("i", {
476875
476947
  class: normalizeClass([tool.icon, "tool-icon"]),
476876
476948
  onClick: ($event) => handleToolClick(tool, "left", idx)
476877
- }, null, 10, _hoisted_4$8)
476949
+ }, null, 10, _hoisted_4$9)
476878
476950
  ]),
476879
476951
  _: 2
476880
476952
  }, 1032, ["content"]);
476881
476953
  }), 64))
476882
476954
  ]),
476883
- createElementVNode("div", _hoisted_5$8, [
476955
+ createElementVNode("div", _hoisted_5$9, [
476884
476956
  (openBlock(), createElementBlock(Fragment, null, renderList(rightTools, (tool, idx) => {
476885
476957
  return createVNode$1(_component_el_tooltip, {
476886
476958
  key: idx,
@@ -476936,9 +477008,9 @@ const _sfc_main$a = {
476936
477008
  };
476937
477009
  }
476938
477010
  };
476939
- const MapDrawingDialog = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-16fc7a81"]]);
476940
- const _hoisted_1$8 = { class: "flex" };
476941
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
477011
+ const MapDrawingDialog = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-16fc7a81"]]);
477012
+ const _hoisted_1$9 = { class: "flex" };
477013
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
476942
477014
  __name: "MapToolbar",
476943
477015
  props: {
476944
477016
  config: { default: void 0 },
@@ -477129,7 +477201,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
477129
477201
  class: "main-menu-item"
477130
477202
  }, {
477131
477203
  title: withCtx(() => [
477132
- createElementVNode("div", _hoisted_1$8, [
477204
+ createElementVNode("div", _hoisted_1$9, [
477133
477205
  createElementVNode("div", null, [
477134
477206
  createVNode$1(_component_el_icon, null, {
477135
477207
  default: withCtx(() => [
@@ -477306,7 +477378,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
477306
477378
  ]),
477307
477379
  _: 1
477308
477380
  }, 8, ["default-active"]),
477309
- createVNode$1(_sfc_main$j, {
477381
+ createVNode$1(_sfc_main$k, {
477310
477382
  modelValue: showBasemapPanel.value,
477311
477383
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => showBasemapPanel.value = $event),
477312
477384
  config: props.config,
@@ -477317,28 +477389,28 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
477317
477389
  modelValue: showMeasurement.value,
477318
477390
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showMeasurement.value = $event)
477319
477391
  }, null, 8, ["modelValue"]),
477320
- createVNode$1(_sfc_main$h, {
477392
+ createVNode$1(_sfc_main$i, {
477321
477393
  ref_key: "coordinateLocationDialogRef",
477322
477394
  ref: coordinateLocationDialogRef,
477323
477395
  modelValue: showCoordinateLocation.value,
477324
477396
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => showCoordinateLocation.value = $event)
477325
477397
  }, null, 8, ["modelValue"]),
477326
- createVNode$1(_sfc_main$g, {
477398
+ createVNode$1(_sfc_main$h, {
477327
477399
  modelValue: showRegionNavigation.value,
477328
477400
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => showRegionNavigation.value = $event),
477329
477401
  onNavigationAction: handleNavigationAction
477330
477402
  }, null, 8, ["modelValue"]),
477331
- createVNode$1(_sfc_main$f, {
477403
+ createVNode$1(_sfc_main$g, {
477332
477404
  modelValue: showMyMarkers.value,
477333
477405
  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => showMyMarkers.value = $event),
477334
477406
  onMarkerAction: handleMarkerAction
477335
477407
  }, null, 8, ["modelValue"]),
477336
- createVNode$1(_sfc_main$e, {
477408
+ createVNode$1(_sfc_main$f, {
477337
477409
  modelValue: showViewBookmarks.value,
477338
477410
  "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => showViewBookmarks.value = $event),
477339
477411
  onBookmarkAction: handleBookmarkAction
477340
477412
  }, null, 8, ["modelValue"]),
477341
- createVNode$1(_sfc_main$d, {
477413
+ createVNode$1(_sfc_main$e, {
477342
477414
  modelValue: showMapPrint.value,
477343
477415
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => showMapPrint.value = $event),
477344
477416
  onPrintAction: handlePrintAction
@@ -477352,7 +477424,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
477352
477424
  };
477353
477425
  }
477354
477426
  });
477355
- const MapToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-f8ee8458"]]);
477427
+ const MapToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-f8ee8458"]]);
477356
477428
  const TIANDITU_CONFIG = {
477357
477429
  baseUrl: "https://api.tianditu.gov.cn/v2/search",
477358
477430
  key: "9a7244dd5d1a1299a52946a3d0f8ff68"
@@ -478012,14 +478084,14 @@ const searchService = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defin
478012
478084
  MapSearchService,
478013
478085
  defaultSearchConfig
478014
478086
  }, Symbol.toStringTag, { value: "Module" }));
478015
- const _hoisted_1$7 = { class: "search-input-wrapper" };
478016
- const _hoisted_2$7 = { class: "search-results" };
478017
- const _hoisted_3$7 = {
478087
+ const _hoisted_1$8 = { class: "search-input-wrapper" };
478088
+ const _hoisted_2$8 = { class: "search-results" };
478089
+ const _hoisted_3$8 = {
478018
478090
  key: 0,
478019
478091
  class: "search-section"
478020
478092
  };
478021
- const _hoisted_4$7 = { class: "section-title" };
478022
- const _hoisted_5$7 = ["onClick"];
478093
+ const _hoisted_4$8 = { class: "section-title" };
478094
+ const _hoisted_5$8 = ["onClick"];
478023
478095
  const _hoisted_6$6 = { class: "item-content" };
478024
478096
  const _hoisted_7$5 = { class: "item-name" };
478025
478097
  const _hoisted_8$5 = { class: "item-address" };
@@ -478048,7 +478120,7 @@ const _hoisted_18$2 = {
478048
478120
  key: 0,
478049
478121
  class: "no-results"
478050
478122
  };
478051
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
478123
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
478052
478124
  __name: "MapSearch",
478053
478125
  props: {
478054
478126
  config: { default: () => ({
@@ -478293,7 +478365,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
478293
478365
  class: normalizeClass(["map-search-container", [`position-${position2.value}`, { "search-active": isSearchActive.value }]])
478294
478366
  }, [
478295
478367
  renderSlot(_ctx.$slots, "prepend"),
478296
- createElementVNode("div", _hoisted_1$7, [
478368
+ createElementVNode("div", _hoisted_1$8, [
478297
478369
  renderSlot(_ctx.$slots, "search-input", {
478298
478370
  searchQuery: searchQuery.value,
478299
478371
  placeholder: placeholder.value,
@@ -478349,7 +478421,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
478349
478421
  }, 8, ["modelValue", "placeholder"])
478350
478422
  ])
478351
478423
  ]),
478352
- withDirectives(createElementVNode("div", _hoisted_2$7, [
478424
+ withDirectives(createElementVNode("div", _hoisted_2$8, [
478353
478425
  renderSlot(_ctx.$slots, "search-results", {
478354
478426
  searchResults: searchResults.value,
478355
478427
  searchHistory: searchHistory.value,
@@ -478361,9 +478433,9 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
478361
478433
  clearHistory,
478362
478434
  highlightText
478363
478435
  }, () => [
478364
- showHistory.value && searchHistory.value.length > 0 && !searchQuery.value ? (openBlock(), createElementBlock("div", _hoisted_3$7, [
478436
+ showHistory.value && searchHistory.value.length > 0 && !searchQuery.value ? (openBlock(), createElementBlock("div", _hoisted_3$8, [
478365
478437
  renderSlot(_ctx.$slots, "history-title", { clearHistory }, () => [
478366
- createElementVNode("div", _hoisted_4$7, [
478438
+ createElementVNode("div", _hoisted_4$8, [
478367
478439
  _cache[2] || (_cache[2] = createElementVNode("span", null, "搜索历史", -1)),
478368
478440
  createVNode$1(unref(ElButton), {
478369
478441
  type: "text",
@@ -478399,7 +478471,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
478399
478471
  createElementVNode("div", _hoisted_7$5, toDisplayString(item.name), 1),
478400
478472
  createElementVNode("div", _hoisted_8$5, toDisplayString(item.address), 1)
478401
478473
  ])
478402
- ], 10, _hoisted_5$7)
478474
+ ], 10, _hoisted_5$8)
478403
478475
  ]);
478404
478476
  }), 128))
478405
478477
  ])) : createCommentVNode("", true),
@@ -478473,7 +478545,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
478473
478545
  };
478474
478546
  }
478475
478547
  });
478476
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
478548
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
478477
478549
  __name: "index",
478478
478550
  props: {
478479
478551
  config: {},
@@ -479019,12 +479091,12 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
479019
479091
  };
479020
479092
  }
479021
479093
  });
479022
- const MapControls = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-45410a30"]]);
479023
- const _hoisted_1$6 = { class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 bg-gray-50 rounded-t-lg" };
479024
- const _hoisted_2$6 = { class: "panel-actions" };
479025
- const _hoisted_3$6 = { class: "panel-content max-h-125 overflow-y-auto" };
479026
- const _hoisted_4$6 = { class: "p-2" };
479027
- const _hoisted_5$6 = { class: "legend-content p-2" };
479094
+ const MapControls = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-45410a30"]]);
479095
+ const _hoisted_1$7 = { class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 bg-gray-50 rounded-t-lg" };
479096
+ const _hoisted_2$7 = { class: "panel-actions" };
479097
+ const _hoisted_3$7 = { class: "panel-content max-h-125 overflow-y-auto" };
479098
+ const _hoisted_4$7 = { class: "p-2" };
479099
+ const _hoisted_5$7 = { class: "legend-content p-2" };
479028
479100
  const _hoisted_6$5 = { key: 0 };
479029
479101
  const _hoisted_7$4 = { class: "text-xs text-gray-600" };
479030
479102
  const _hoisted_8$4 = { key: 1 };
@@ -479055,7 +479127,7 @@ const _hoisted_23 = {
479055
479127
  key: 1,
479056
479128
  class: "py-10 px-5 text-center"
479057
479129
  };
479058
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
479130
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
479059
479131
  __name: "LegendPanel",
479060
479132
  props: {
479061
479133
  position: { default: "right" },
@@ -479265,9 +479337,9 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
479265
479337
  class: normalizeClass(["custom-legend-box absolute bg-white rounded-lg bottom-40px shadow-lg transition-all duration-300 max-h-[calc(100vh-40px)] overflow-hidden z-1000", { "legend-collapsed": isCollapsed.value }]),
479266
479338
  style: normalizeStyle$1(panelStyle.value)
479267
479339
  }, [
479268
- createElementVNode("div", _hoisted_1$6, [
479340
+ createElementVNode("div", _hoisted_1$7, [
479269
479341
  _cache[1] || (_cache[1] = createElementVNode("h3", { class: "m-0 text-sm font-semibold text-gray-800" }, "图例", -1)),
479270
- createElementVNode("div", _hoisted_2$6, [
479342
+ createElementVNode("div", _hoisted_2$7, [
479271
479343
  createVNode$1(_component_el_button, {
479272
479344
  link: "",
479273
479345
  size: "small",
@@ -479276,8 +479348,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
479276
479348
  }, null, 8, ["icon"])
479277
479349
  ])
479278
479350
  ]),
479279
- createElementVNode("div", _hoisted_3$6, [
479280
- createElementVNode("div", _hoisted_4$6, [
479351
+ createElementVNode("div", _hoisted_3$7, [
479352
+ createElementVNode("div", _hoisted_4$7, [
479281
479353
  visibleLegends.value.length > 0 ? (openBlock(), createBlock(_component_el_collapse, {
479282
479354
  key: 0,
479283
479355
  modelValue: activeNames.value,
@@ -479293,7 +479365,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
479293
479365
  class: "legend-item"
479294
479366
  }, {
479295
479367
  default: withCtx(() => [
479296
- createElementVNode("div", _hoisted_5$6, [
479368
+ createElementVNode("div", _hoisted_5$7, [
479297
479369
  legend.type === "symbol" ? (openBlock(), createElementBlock("div", _hoisted_6$5, [
479298
479370
  (openBlock(true), createElementBlock(Fragment, null, renderList(legend.items, (item) => {
479299
479371
  return openBlock(), createElementBlock("div", {
@@ -480500,11 +480572,11 @@ class LayerConfigManager {
480500
480572
  console.log("批量更新结果:", results);
480501
480573
  }
480502
480574
  }
480503
- const _hoisted_1$5 = { class: "filter-panel" };
480504
- const _hoisted_2$5 = { class: "config-section" };
480505
- const _hoisted_3$5 = { class: "config-item" };
480506
- const _hoisted_4$5 = { class: "value-text" };
480507
- const _hoisted_5$5 = { class: "config-item" };
480575
+ const _hoisted_1$6 = { class: "filter-panel" };
480576
+ const _hoisted_2$6 = { class: "config-section" };
480577
+ const _hoisted_3$6 = { class: "config-item" };
480578
+ const _hoisted_4$6 = { class: "value-text" };
480579
+ const _hoisted_5$6 = { class: "config-item" };
480508
480580
  const _hoisted_6$4 = { class: "value-text" };
480509
480581
  const _hoisted_7$3 = { class: "config-item" };
480510
480582
  const _hoisted_8$3 = { class: "value-text" };
@@ -480521,7 +480593,7 @@ const _hoisted_18 = { class: "config-item" };
480521
480593
  const _hoisted_19 = { class: "value-text" };
480522
480594
  const _hoisted_20 = { class: "config-section" };
480523
480595
  const _hoisted_21 = { class: "preset-buttons" };
480524
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
480596
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
480525
480597
  __name: "FilterPanel",
480526
480598
  props: {
480527
480599
  filters: {}
@@ -480541,10 +480613,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
480541
480613
  return (_ctx, _cache) => {
480542
480614
  const _component_el_slider = resolveComponent("el-slider");
480543
480615
  const _component_el_button = resolveComponent("el-button");
480544
- return openBlock(), createElementBlock("div", _hoisted_1$5, [
480545
- createElementVNode("div", _hoisted_2$5, [
480616
+ return openBlock(), createElementBlock("div", _hoisted_1$6, [
480617
+ createElementVNode("div", _hoisted_2$6, [
480546
480618
  _cache[15] || (_cache[15] = createElementVNode("h5", null, "色彩调整", -1)),
480547
- createElementVNode("div", _hoisted_3$5, [
480619
+ createElementVNode("div", _hoisted_3$6, [
480548
480620
  _cache[11] || (_cache[11] = createElementVNode("label", null, "色相:", -1)),
480549
480621
  createVNode$1(_component_el_slider, {
480550
480622
  modelValue: _ctx.filters.hue,
@@ -480554,9 +480626,9 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
480554
480626
  step: 1,
480555
480627
  onInput: handleFilterChange
480556
480628
  }, null, 8, ["modelValue"]),
480557
- createElementVNode("span", _hoisted_4$5, toDisplayString(_ctx.filters.hue) + "°", 1)
480629
+ createElementVNode("span", _hoisted_4$6, toDisplayString(_ctx.filters.hue) + "°", 1)
480558
480630
  ]),
480559
- createElementVNode("div", _hoisted_5$5, [
480631
+ createElementVNode("div", _hoisted_5$6, [
480560
480632
  _cache[12] || (_cache[12] = createElementVNode("label", null, "饱和度:", -1)),
480561
480633
  createVNode$1(_component_el_slider, {
480562
480634
  modelValue: _ctx.filters.saturate,
@@ -480691,14 +480763,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
480691
480763
  };
480692
480764
  }
480693
480765
  });
480694
- const _hoisted_1$4 = { class: "style-config-panel" };
480695
- const _hoisted_2$4 = { class: "panel-title" };
480696
- const _hoisted_3$4 = {
480766
+ const _hoisted_1$5 = { class: "style-config-panel" };
480767
+ const _hoisted_2$5 = { class: "panel-title" };
480768
+ const _hoisted_3$5 = {
480697
480769
  key: 0,
480698
480770
  class: "config-section"
480699
480771
  };
480700
- const _hoisted_4$4 = { class: "config-item" };
480701
- const _hoisted_5$4 = { class: "value-text" };
480772
+ const _hoisted_4$5 = { class: "config-item" };
480773
+ const _hoisted_5$5 = { class: "value-text" };
480702
480774
  const _hoisted_6$3 = { class: "config-item" };
480703
480775
  const _hoisted_7$2 = { class: "value-text" };
480704
480776
  const _hoisted_8$2 = {
@@ -480710,7 +480782,7 @@ const _hoisted_10$1 = { class: "config-item" };
480710
480782
  const _hoisted_11$1 = { class: "config-item" };
480711
480783
  const _hoisted_12$1 = { class: "config-item" };
480712
480784
  const _hoisted_13$1 = { class: "panel-actions" };
480713
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
480785
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
480714
480786
  __name: "LayerStyleConfig",
480715
480787
  props: {
480716
480788
  layerData: {}
@@ -480741,11 +480813,11 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
480741
480813
  const _component_el_select = resolveComponent("el-select");
480742
480814
  const _component_el_switch = resolveComponent("el-switch");
480743
480815
  const _component_el_button = resolveComponent("el-button");
480744
- return openBlock(), createElementBlock("div", _hoisted_1$4, [
480745
- createElementVNode("h4", _hoisted_2$4, toDisplayString(_ctx.layerData.label) + " - 样式配置", 1),
480746
- isClusterLayer.value ? (openBlock(), createElementBlock("div", _hoisted_3$4, [
480816
+ return openBlock(), createElementBlock("div", _hoisted_1$5, [
480817
+ createElementVNode("h4", _hoisted_2$5, toDisplayString(_ctx.layerData.label) + " - 样式配置", 1),
480818
+ isClusterLayer.value ? (openBlock(), createElementBlock("div", _hoisted_3$5, [
480747
480819
  _cache[8] || (_cache[8] = createElementVNode("h5", null, "聚合配置", -1)),
480748
- createElementVNode("div", _hoisted_4$4, [
480820
+ createElementVNode("div", _hoisted_4$5, [
480749
480821
  _cache[6] || (_cache[6] = createElementVNode("label", null, "聚合距离:", -1)),
480750
480822
  createVNode$1(_component_el_slider, {
480751
480823
  modelValue: _ctx.layerData.clusterDistance,
@@ -480755,7 +480827,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
480755
480827
  size: "small",
480756
480828
  onInput: handleClusterDistanceChange
480757
480829
  }, null, 8, ["modelValue"]),
480758
- createElementVNode("span", _hoisted_5$4, toDisplayString(_ctx.layerData.clusterDistance) + "px", 1)
480830
+ createElementVNode("span", _hoisted_5$5, toDisplayString(_ctx.layerData.clusterDistance) + "px", 1)
480759
480831
  ]),
480760
480832
  createElementVNode("div", _hoisted_6$3, [
480761
480833
  _cache[7] || (_cache[7] = createElementVNode("label", null, "最小距离:", -1)),
@@ -480840,12 +480912,12 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
480840
480912
  };
480841
480913
  }
480842
480914
  });
480843
- const _hoisted_1$3 = { class: "font-medium" };
480844
- const _hoisted_2$3 = { class: "layer-info" };
480845
- const _hoisted_3$3 = { class: "layer-name" };
480846
- const _hoisted_4$3 = { class: "opacity-control" };
480847
- const _hoisted_5$3 = { class: "opacity-value" };
480848
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480915
+ const _hoisted_1$4 = { class: "font-medium" };
480916
+ const _hoisted_2$4 = { class: "layer-info" };
480917
+ const _hoisted_3$4 = { class: "layer-name" };
480918
+ const _hoisted_4$4 = { class: "opacity-control" };
480919
+ const _hoisted_5$4 = { class: "opacity-value" };
480920
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
480849
480921
  __name: "LayerTreeNode",
480850
480922
  props: {
480851
480923
  data: {},
@@ -480897,7 +480969,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480897
480969
  ]),
480898
480970
  _: 1
480899
480971
  }),
480900
- createElementVNode("span", _hoisted_1$3, toDisplayString(_ctx.data.label), 1)
480972
+ createElementVNode("span", _hoisted_1$4, toDisplayString(_ctx.data.label), 1)
480901
480973
  ], 32)) : (openBlock(), createElementBlock("div", {
480902
480974
  key: 1,
480903
480975
  class: "layer-item",
@@ -480905,7 +480977,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480905
480977
  onClick: _cache[5] || (_cache[5] = withModifiers(() => {
480906
480978
  }, ["stop"]))
480907
480979
  }, [
480908
- createElementVNode("div", _hoisted_2$3, [
480980
+ createElementVNode("div", _hoisted_2$4, [
480909
480981
  createVNode$1(_component_el_icon, {
480910
480982
  class: normalizeClass(["layer-icon", layerIconClass.value])
480911
480983
  }, {
@@ -480914,7 +480986,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480914
480986
  ]),
480915
480987
  _: 1
480916
480988
  }, 8, ["class"]),
480917
- createElementVNode("span", _hoisted_3$3, toDisplayString(_ctx.data.label), 1)
480989
+ createElementVNode("span", _hoisted_3$4, toDisplayString(_ctx.data.label), 1)
480918
480990
  ]),
480919
480991
  createElementVNode("div", {
480920
480992
  class: "layer-controls",
@@ -480925,7 +480997,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480925
480997
  onDblclick: _cache[4] || (_cache[4] = withModifiers(() => {
480926
480998
  }, ["stop"]))
480927
480999
  }, [
480928
- createElementVNode("div", _hoisted_4$3, [
481000
+ createElementVNode("div", _hoisted_4$4, [
480929
481001
  createVNode$1(_component_el_slider, {
480930
481002
  modelValue: _ctx.data.layerData.opacity,
480931
481003
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.data.layerData.opacity = $event),
@@ -480935,7 +481007,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480935
481007
  class: "opacity-slider",
480936
481008
  onInput: handleOpacityChange
480937
481009
  }, null, 8, ["modelValue"]),
480938
- createElementVNode("span", _hoisted_5$3, toDisplayString(_ctx.data.layerData.opacity) + "%", 1)
481010
+ createElementVNode("span", _hoisted_5$4, toDisplayString(_ctx.data.layerData.opacity) + "%", 1)
480939
481011
  ]),
480940
481012
  createVNode$1(_component_el_popover, {
480941
481013
  placement: "left",
@@ -480964,7 +481036,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480964
481036
  })
480965
481037
  ]),
480966
481038
  default: withCtx(() => [
480967
- createVNode$1(_sfc_main$4, {
481039
+ createVNode$1(_sfc_main$5, {
480968
481040
  "layer-data": _ctx.data.layerData,
480969
481041
  onClusterDistanceChange: handleClusterDistanceChange,
480970
481042
  onSuperMapConfigChange: handleSuperMapConfigChange,
@@ -480979,15 +481051,15 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480979
481051
  };
480980
481052
  }
480981
481053
  });
480982
- const _hoisted_1$2 = { class: "flex-1 overflow-y-auto p-4" };
480983
- const _hoisted_2$2 = { class: "pb-2 flex items-center justify-between" };
480984
- const _hoisted_3$2 = { class: "text-xs font-semibold text-gray-700 px-1 py-1 border-b border-gray-200 mb-2" };
480985
- const _hoisted_4$2 = { class: "global-style-panel" };
480986
- const _hoisted_5$2 = { class: "config-section" };
481054
+ const _hoisted_1$3 = { class: "flex-1 overflow-y-auto p-4" };
481055
+ const _hoisted_2$3 = { class: "pb-2 flex items-center justify-between" };
481056
+ const _hoisted_3$3 = { class: "text-xs font-semibold text-gray-700 px-1 py-1 border-b border-gray-200 mb-2" };
481057
+ const _hoisted_4$3 = { class: "global-style-panel" };
481058
+ const _hoisted_5$3 = { class: "config-section" };
480987
481059
  const _hoisted_6$2 = { class: "config-item" };
480988
481060
  const _hoisted_7$1 = { class: "current-style-display" };
480989
481061
  const _hoisted_8$1 = { class: "style-preview" };
480990
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481062
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
480991
481063
  __name: "LayerPanel",
480992
481064
  props: {
480993
481065
  modelValue: { type: Boolean }
@@ -481825,7 +481897,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481825
481897
  const _component_el_tree = resolveComponent("el-tree");
481826
481898
  const _component_el_tab_pane = resolveComponent("el-tab-pane");
481827
481899
  const _component_el_tabs = resolveComponent("el-tabs");
481828
- return openBlock(), createBlock(_sfc_main$k, mergeProps({
481900
+ return openBlock(), createBlock(_sfc_main$l, mergeProps({
481829
481901
  modelValue: visible.value,
481830
481902
  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => visible.value = $event)
481831
481903
  }, dialogProps.value, { onClose: handleClose }), createSlots({
@@ -481863,8 +481935,8 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481863
481935
  name: "layers"
481864
481936
  }, {
481865
481937
  default: withCtx(() => [
481866
- createElementVNode("div", _hoisted_1$2, [
481867
- createElementVNode("div", _hoisted_2$2, [
481938
+ createElementVNode("div", _hoisted_1$3, [
481939
+ createElementVNode("div", _hoisted_2$3, [
481868
481940
  _cache[7] || (_cache[7] = createElementVNode("div", { class: "text-sm text-gray-600" }, "树形视图", -1)),
481869
481941
  createVNode$1(_component_el_radio_group, {
481870
481942
  modelValue: activeTreeType.value,
@@ -481910,7 +481982,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481910
481982
  class: "layer-tree"
481911
481983
  }, {
481912
481984
  default: withCtx(({ node, data }) => [
481913
- createVNode$1(_sfc_main$3, {
481985
+ createVNode$1(_sfc_main$4, {
481914
481986
  data,
481915
481987
  "layer-tree-manager": unref(layerTreeManager),
481916
481988
  onDoubleClick: handleLayerDoubleClick,
@@ -481926,7 +481998,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481926
481998
  key: group2.id,
481927
481999
  class: "mb-3"
481928
482000
  }, [
481929
- createElementVNode("div", _hoisted_3$2, toDisplayString(group2.name), 1),
482001
+ createElementVNode("div", _hoisted_3$3, toDisplayString(group2.name), 1),
481930
482002
  createVNode$1(_component_el_tree, {
481931
482003
  ref_for: true,
481932
482004
  ref: (el) => classificationTreeRefs.value[group2.id] = el,
@@ -481948,7 +482020,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481948
482020
  class: "layer-tree"
481949
482021
  }, {
481950
482022
  default: withCtx(({ node, data }) => [
481951
- createVNode$1(_sfc_main$3, {
482023
+ createVNode$1(_sfc_main$4, {
481952
482024
  data,
481953
482025
  "layer-tree-manager": unref(layerTreeManager),
481954
482026
  onDoubleClick: handleLayerDoubleClick,
@@ -481971,7 +482043,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481971
482043
  name: "style"
481972
482044
  }, {
481973
482045
  default: withCtx(() => [
481974
- createElementVNode("div", _hoisted_4$2, [
482046
+ createElementVNode("div", _hoisted_4$3, [
481975
482047
  createVNode$1(_component_el_tabs, {
481976
482048
  modelValue: activeStyleTab.value,
481977
482049
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => activeStyleTab.value = $event),
@@ -481983,7 +482055,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481983
482055
  name: "filters"
481984
482056
  }, {
481985
482057
  default: withCtx(() => [
481986
- createVNode$1(_sfc_main$5, {
482058
+ createVNode$1(_sfc_main$6, {
481987
482059
  filters: unref(globalFilters),
481988
482060
  onFilterChange: applyFilterEffect,
481989
482061
  onReset: resetFilters,
@@ -481997,7 +482069,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
481997
482069
  name: "custom"
481998
482070
  }, {
481999
482071
  default: withCtx(() => [
482000
- createElementVNode("div", _hoisted_5$2, [
482072
+ createElementVNode("div", _hoisted_5$3, [
482001
482073
  createElementVNode("div", _hoisted_6$2, [
482002
482074
  createVNode$1(unref(ElInput), {
482003
482075
  modelValue: unref(globalCustomCss),
@@ -482068,6 +482140,150 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
482068
482140
  };
482069
482141
  }
482070
482142
  });
482143
+ const _hoisted_1$2 = { class: "layer-panel" };
482144
+ const _hoisted_2$2 = ["onClick"];
482145
+ const _hoisted_3$2 = ["title"];
482146
+ const _hoisted_4$2 = {
482147
+ key: 0,
482148
+ class: "active-border"
482149
+ };
482150
+ const _hoisted_5$2 = { class: "layer-name" };
482151
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
482152
+ __name: "OlBaseLayerSwitcher",
482153
+ props: {
482154
+ map: {},
482155
+ baseLayers: {}
482156
+ },
482157
+ setup(__props) {
482158
+ const props = __props;
482159
+ const expand2 = ref(false);
482160
+ const validBaseLayers = computed(() => {
482161
+ return props.baseLayers.filter((layer2) => layer2.baseImgUrl && layer2.baseImgUrl.trim() !== "");
482162
+ });
482163
+ const containerStyle = computed(() => {
482164
+ if (!expand2.value) {
482165
+ return { width: "96px" };
482166
+ }
482167
+ const count2 = validBaseLayers.value.length;
482168
+ if (count2 === 0)
482169
+ return { width: "96px" };
482170
+ const width = count2 * 86 + (count2 - 1) * 10 + 10;
482171
+ return { width: `${width}px` };
482172
+ });
482173
+ const currentLayer = ref(null);
482174
+ watch(() => props.baseLayers, (layers) => {
482175
+ if (!currentLayer.value) {
482176
+ const visibleLayer = layers.find((l2) => l2.visible && l2.baseImgUrl);
482177
+ if (visibleLayer) {
482178
+ currentLayer.value = visibleLayer;
482179
+ } else if (validBaseLayers.value.length > 0) {
482180
+ currentLayer.value = validBaseLayers.value[0];
482181
+ }
482182
+ }
482183
+ }, { deep: true, immediate: true });
482184
+ const switchLayer = (targetLayer) => {
482185
+ if (!props.map)
482186
+ return;
482187
+ currentLayer.value = targetLayer;
482188
+ layerEventBus.emit("basemap-switch-request", {
482189
+ basemapId: targetLayer.id,
482190
+ basemapName: targetLayer.name,
482191
+ basemapType: targetLayer.type,
482192
+ basemapConfig: targetLayer
482193
+ });
482194
+ props.baseLayers.forEach((layerConfig) => {
482195
+ const isVisible2 = layerConfig.id === targetLayer.id;
482196
+ setLayerVisibility(layerConfig, isVisible2);
482197
+ });
482198
+ expand2.value = false;
482199
+ };
482200
+ const setLayerVisibility = (config, visible) => {
482201
+ config.visible = visible;
482202
+ if (config.type === "group") {
482203
+ if (config.layers) {
482204
+ config.layers.forEach((child) => setLayerVisibility(child, visible));
482205
+ }
482206
+ if (config.children) {
482207
+ config.children.forEach((child) => setLayerVisibility(child, visible));
482208
+ }
482209
+ }
482210
+ if (config.id) {
482211
+ const layer2 = findLayerById(props.map, config.id);
482212
+ if (layer2) {
482213
+ layer2.setVisible(visible);
482214
+ }
482215
+ }
482216
+ };
482217
+ const findLayerById = (map2, id) => {
482218
+ const layers = map2.getLayers().getArray();
482219
+ return findLayerRecursive(layers, id);
482220
+ };
482221
+ const findLayerRecursive = (layers, id) => {
482222
+ for (const layer2 of layers) {
482223
+ if (layer2.get("id") === id) {
482224
+ return layer2;
482225
+ }
482226
+ if (layer2.getLayers && typeof layer2.getLayers === "function") {
482227
+ const found = findLayerRecursive(layer2.getLayers().getArray(), id);
482228
+ if (found)
482229
+ return found;
482230
+ }
482231
+ }
482232
+ return null;
482233
+ };
482234
+ return (_ctx, _cache) => {
482235
+ var _a3, _b3;
482236
+ return openBlock(), createElementBlock("div", {
482237
+ class: normalizeClass(["ol-base-layer-switcher", { "is-expanded": expand2.value }]),
482238
+ style: normalizeStyle$1(containerStyle.value),
482239
+ onMouseenter: _cache[0] || (_cache[0] = ($event) => expand2.value = true),
482240
+ onMouseleave: _cache[1] || (_cache[1] = ($event) => expand2.value = false)
482241
+ }, [
482242
+ createElementVNode("div", _hoisted_1$2, [
482243
+ (openBlock(true), createElementBlock(Fragment, null, renderList(validBaseLayers.value, (layer2) => {
482244
+ var _a4, _b4;
482245
+ return openBlock(), createElementBlock("div", {
482246
+ key: layer2.id,
482247
+ class: normalizeClass(["layer-item", { active: ((_a4 = currentLayer.value) == null ? void 0 : _a4.id) === layer2.id }]),
482248
+ onClick: ($event) => switchLayer(layer2),
482249
+ style: normalizeStyle$1({ backgroundImage: `url(${layer2.baseImgUrl})` })
482250
+ }, [
482251
+ createElementVNode("div", {
482252
+ class: "layer-name",
482253
+ title: layer2.name
482254
+ }, toDisplayString(layer2.name), 9, _hoisted_3$2),
482255
+ ((_b4 = currentLayer.value) == null ? void 0 : _b4.id) === layer2.id ? (openBlock(), createElementBlock("div", _hoisted_4$2, [..._cache[2] || (_cache[2] = [
482256
+ createElementVNode("div", { class: "check-icon" }, [
482257
+ createElementVNode("svg", {
482258
+ viewBox: "0 0 1024 1024",
482259
+ width: "16",
482260
+ height: "16"
482261
+ }, [
482262
+ createElementVNode("path", {
482263
+ d: "M384 725.333333l-192-192 64-64 128 128 320-320 64 64z",
482264
+ fill: "#fff"
482265
+ })
482266
+ ])
482267
+ ], -1)
482268
+ ])])) : createCommentVNode("", true)
482269
+ ], 14, _hoisted_2$2);
482270
+ }), 128))
482271
+ ]),
482272
+ createElementVNode("div", {
482273
+ class: normalizeClass(["layer-trigger", { "is-hidden": expand2.value }])
482274
+ }, [
482275
+ createElementVNode("div", {
482276
+ class: "current-layer-box",
482277
+ style: normalizeStyle$1({ backgroundImage: `url(${(_a3 = currentLayer.value) == null ? void 0 : _a3.baseImgUrl})` })
482278
+ }, [
482279
+ createElementVNode("div", _hoisted_5$2, toDisplayString((_b3 = currentLayer.value) == null ? void 0 : _b3.name), 1)
482280
+ ], 4)
482281
+ ], 2)
482282
+ ], 38);
482283
+ };
482284
+ }
482285
+ });
482286
+ const OlBaseLayerSwitcher = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-396e5ed1"]]);
482071
482287
  const _hoisted_1$1 = {
482072
482288
  key: 2,
482073
482289
  class: "tooltip-content"
@@ -483313,12 +483529,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
483313
483529
  isInFullscreen: () => isFullscreen.value
483314
483530
  });
483315
483531
  return (_ctx, _cache) => {
483532
+ var _a3;
483316
483533
  const _component_el_icon = resolveComponent("el-icon");
483317
483534
  const _component_el_button = resolveComponent("el-button");
483318
483535
  return openBlock(), createElementBlock("div", {
483319
483536
  class: normalizeClass(["relative w-full h-full overflow-hidden", { "fixed top-0 left-0 w-screen h-screen z-9999": isFullscreen.value }])
483320
483537
  }, [
483321
- createVNode$1(_sfc_main$m, {
483538
+ createVNode$1(_sfc_main$n, {
483322
483539
  ref_key: "mapContainerRef",
483323
483540
  ref: mapContainerRef,
483324
483541
  config: finalMapConfig.value,
@@ -483422,7 +483639,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
483422
483639
  }, null, 8, ["config", "left-offset", "right-offset", "top-offset", "bottom-offset"]), [
483423
483640
  [vShow, finalShowToolbar.value]
483424
483641
  ]),
483425
- withDirectives(createVNode$1(_sfc_main$8, {
483642
+ withDirectives(createVNode$1(_sfc_main$9, {
483426
483643
  ref_key: "mapSearchRef",
483427
483644
  ref: mapSearchRef,
483428
483645
  config: finalSearchConfig.value,
@@ -483457,7 +483674,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
483457
483674
  hasToolbarSlot.value ? renderSlot(_ctx.$slots, "toolbar", { key: 2 }) : createCommentVNode("", true),
483458
483675
  hasMapInfoSlot.value ? renderSlot(_ctx.$slots, "mapInfo", { key: 3 }) : createCommentVNode("", true),
483459
483676
  hasMapInfoSlot.value ? renderSlot(_ctx.$slots, "map-info", { key: 4 }) : createCommentVNode("", true),
483460
- finalEnableLayerPanel.value ? (openBlock(), createBlock(_sfc_main$2, {
483677
+ finalEnableLayerPanel.value ? (openBlock(), createBlock(_sfc_main$3, {
483461
483678
  key: 5,
483462
483679
  modelValue: showLayerPanel.value,
483463
483680
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => showLayerPanel.value = $event)
@@ -483488,7 +483705,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
483488
483705
  key: "2"
483489
483706
  } : void 0
483490
483707
  ]), 1032, ["modelValue"])) : createCommentVNode("", true),
483491
- showLegend.value ? (openBlock(), createBlock(_sfc_main$6, {
483708
+ showLegend.value ? (openBlock(), createBlock(_sfc_main$7, {
483492
483709
  key: 6,
483493
483710
  position: finalLegendPosition.value,
483494
483711
  width: finalLegendWidth.value,
@@ -483536,7 +483753,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
483536
483753
  }), 128))
483537
483754
  ])
483538
483755
  ])) : createCommentVNode("", true),
483539
- createVNode$1(_sfc_main$d, {
483756
+ map2.value && ((_a3 = finalMapConfig.value.baseLayers) == null ? void 0 : _a3.length) ? (openBlock(), createBlock(OlBaseLayerSwitcher, {
483757
+ key: 9,
483758
+ map: map2.value,
483759
+ "base-layers": finalMapConfig.value.baseLayers
483760
+ }, null, 8, ["map", "base-layers"])) : createCommentVNode("", true),
483761
+ createVNode$1(_sfc_main$e, {
483540
483762
  modelValue: showPrintDialog.value,
483541
483763
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showPrintDialog.value = $event),
483542
483764
  "map-instance": map2.value,
@@ -491818,7 +492040,7 @@ function(t3) {
491818
492040
  */
491819
492041
  function(t3) {
491820
492042
  function e8() {
491821
- return (n.canvg ? Promise.resolve(n.canvg) : import("./index.es-a7ad7c48.mjs")).catch(function(t4) {
492043
+ return (n.canvg ? Promise.resolve(n.canvg) : import("./index.es-5569f6dd.mjs")).catch(function(t4) {
491822
492044
  return Promise.reject(new Error("Could not load canvg: " + t4));
491823
492045
  }).then(function(t4) {
491824
492046
  return t4.default ? t4.default : t4;
@@ -500693,14 +500915,14 @@ const getAssetUrl = (path2) => {
500693
500915
  };
500694
500916
  const install = (app) => {
500695
500917
  app.component("CustomOpenlayer", _sfc_main);
500696
- app.component("CustomDialog", _sfc_main$k);
500697
- app.component("SvgIcon", _sfc_main$l);
500918
+ app.component("CustomDialog", _sfc_main$l);
500919
+ app.component("SvgIcon", _sfc_main$m);
500698
500920
  };
500699
500921
  const index = {
500700
500922
  install,
500701
500923
  CustomOpenlayer: _sfc_main,
500702
- CustomDialog: _sfc_main$k,
500703
- SvgIcon: _sfc_main$l
500924
+ CustomDialog: _sfc_main$l,
500925
+ SvgIcon: _sfc_main$m
500704
500926
  };
500705
500927
  const version = "1.0.0";
500706
500928
  export {
@@ -500745,8 +500967,8 @@ export {
500745
500967
  _defineProperty as b,
500746
500968
  commonjsGlobal as c,
500747
500969
  _sfc_main as d,
500748
- _sfc_main$k as e,
500749
- _sfc_main$l as f,
500970
+ _sfc_main$l as e,
500971
+ _sfc_main$m as f,
500750
500972
  index as g,
500751
500973
  getAssetUrl as h,
500752
500974
  install as i,