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
package/lib/index.umd.js CHANGED
@@ -1557,7 +1557,7 @@ var __publicField = (obj, key, value) => {
1557
1557
  name: "ElIcon",
1558
1558
  inheritAttrs: false
1559
1559
  });
1560
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
1560
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
1561
1561
  ...__default__$5,
1562
1562
  props: iconProps,
1563
1563
  setup(__props) {
@@ -1582,7 +1582,7 @@ var __publicField = (obj, key, value) => {
1582
1582
  };
1583
1583
  }
1584
1584
  });
1585
- var Icon$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["__file", "icon.vue"]]);
1585
+ var Icon$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__file", "icon.vue"]]);
1586
1586
  const ElIcon = withInstall(Icon$4);
1587
1587
  /*! Element Plus Icons Vue v2.3.2 */
1588
1588
  var _sfc_main2 = /* @__PURE__ */ vue.defineComponent({
@@ -2814,7 +2814,7 @@ var __publicField = (obj, key, value) => {
2814
2814
  name: COMPONENT_NAME,
2815
2815
  inheritAttrs: false
2816
2816
  });
2817
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
2817
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
2818
2818
  ...__default__$4,
2819
2819
  props: inputProps,
2820
2820
  emits: inputEmits,
@@ -3225,7 +3225,7 @@ var __publicField = (obj, key, value) => {
3225
3225
  };
3226
3226
  }
3227
3227
  });
3228
- var Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["__file", "input.vue"]]);
3228
+ var Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["__file", "input.vue"]]);
3229
3229
  const ElInput = withInstall(Input);
3230
3230
  const FOCUS_AFTER_TRAPPED = "focus-trap.focus-after-trapped";
3231
3231
  const FOCUS_AFTER_RELEASED = "focus-trap.focus-after-released";
@@ -3420,7 +3420,7 @@ var __publicField = (obj, key, value) => {
3420
3420
  }
3421
3421
  });
3422
3422
  };
3423
- const _sfc_main$w = vue.defineComponent({
3423
+ const _sfc_main$x = vue.defineComponent({
3424
3424
  name: "ElFocusTrap",
3425
3425
  inheritAttrs: false,
3426
3426
  props: {
@@ -3665,7 +3665,7 @@ var __publicField = (obj, key, value) => {
3665
3665
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
3666
3666
  return vue.renderSlot(_ctx.$slots, "default", { handleKeydown: _ctx.onKeydown });
3667
3667
  }
3668
- var ElFocusTrap = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["render", _sfc_render$1], ["__file", "focus-trap.vue"]]);
3668
+ var ElFocusTrap = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["render", _sfc_render$1], ["__file", "focus-trap.vue"]]);
3669
3669
  const badgeProps = buildProps({
3670
3670
  value: {
3671
3671
  type: [String, Number],
@@ -3701,7 +3701,7 @@ var __publicField = (obj, key, value) => {
3701
3701
  const __default__$3 = vue.defineComponent({
3702
3702
  name: "ElBadge"
3703
3703
  });
3704
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
3704
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
3705
3705
  ...__default__$3,
3706
3706
  props: badgeProps,
3707
3707
  setup(__props, { expose }) {
@@ -3763,7 +3763,7 @@ var __publicField = (obj, key, value) => {
3763
3763
  };
3764
3764
  }
3765
3765
  });
3766
- var Badge = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__file", "badge.vue"]]);
3766
+ var Badge = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["__file", "badge.vue"]]);
3767
3767
  const ElBadge = withInstall(Badge);
3768
3768
  const buttonGroupContextKey = Symbol("buttonGroupContextKey");
3769
3769
  const useDeprecated = ({ from, replacement: replacement2, scope, version: version2, ref, type = "API" }, condition) => {
@@ -4858,7 +4858,7 @@ var __publicField = (obj, key, value) => {
4858
4858
  const __default__$2 = vue.defineComponent({
4859
4859
  name: "ElButton"
4860
4860
  });
4861
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
4861
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
4862
4862
  ...__default__$2,
4863
4863
  props: buttonProps,
4864
4864
  emits: buttonEmits,
@@ -4936,7 +4936,7 @@ var __publicField = (obj, key, value) => {
4936
4936
  };
4937
4937
  }
4938
4938
  });
4939
- var Button$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["__file", "button.vue"]]);
4939
+ var Button$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__file", "button.vue"]]);
4940
4940
  const buttonGroupProps = {
4941
4941
  size: buttonProps.size,
4942
4942
  type: buttonProps.type
@@ -4944,7 +4944,7 @@ var __publicField = (obj, key, value) => {
4944
4944
  const __default__$1 = vue.defineComponent({
4945
4945
  name: "ElButtonGroup"
4946
4946
  });
4947
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
4947
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
4948
4948
  ...__default__$1,
4949
4949
  props: buttonGroupProps,
4950
4950
  setup(__props) {
@@ -4963,7 +4963,7 @@ var __publicField = (obj, key, value) => {
4963
4963
  };
4964
4964
  }
4965
4965
  });
4966
- var ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__file", "button-group.vue"]]);
4966
+ var ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["__file", "button-group.vue"]]);
4967
4967
  const ElButton = withInstall(Button$2, {
4968
4968
  ButtonGroup
4969
4969
  });
@@ -5410,7 +5410,7 @@ var __publicField = (obj, key, value) => {
5410
5410
  const __default__ = vue.defineComponent({
5411
5411
  name: "ElMessage"
5412
5412
  });
5413
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
5413
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
5414
5414
  ...__default__,
5415
5415
  props: messageProps,
5416
5416
  emits: messageEmits,
@@ -5564,7 +5564,7 @@ var __publicField = (obj, key, value) => {
5564
5564
  };
5565
5565
  }
5566
5566
  });
5567
- var MessageConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["__file", "message.vue"]]);
5567
+ var MessageConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__file", "message.vue"]]);
5568
5568
  let seed = 1;
5569
5569
  const normalizeAppendTo = (normalized) => {
5570
5570
  const appendTo = normalized.appendTo;
@@ -5759,7 +5759,7 @@ var __publicField = (obj, key, value) => {
5759
5759
  }
5760
5760
  }
5761
5761
  };
5762
- const _sfc_main$r = vue.defineComponent({
5762
+ const _sfc_main$s = vue.defineComponent({
5763
5763
  name: "ElMessageBox",
5764
5764
  directives: {
5765
5765
  TrapFocus
@@ -6231,7 +6231,7 @@ var __publicField = (obj, key, value) => {
6231
6231
  _: 3
6232
6232
  }, 8, ["onAfterLeave"]);
6233
6233
  }
6234
- var MessageBoxConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["render", _sfc_render], ["__file", "index.vue"]]);
6234
+ var MessageBoxConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["render", _sfc_render], ["__file", "index.vue"]]);
6235
6235
  const messageInstance = /* @__PURE__ */ new Map();
6236
6236
  const getAppendToElement = (props) => {
6237
6237
  let appendTo = document.body;
@@ -81630,12 +81630,308 @@ ${this.attributes_.map(
81630
81630
  this.locateToGeoJSON(featureCollection2, options);
81631
81631
  }
81632
81632
  }
81633
+ const DEFAULT_HIGHLIGHT_STYLE = {
81634
+ fill: {
81635
+ color: "rgba(255, 255, 0, 0.3)",
81636
+ // 黄色半透明填充
81637
+ opacity: 0.3
81638
+ },
81639
+ stroke: {
81640
+ color: "#ffff00",
81641
+ // 黄色描边
81642
+ width: 3,
81643
+ lineDash: [5, 5]
81644
+ // 虚线
81645
+ },
81646
+ circle: {
81647
+ radius: 8,
81648
+ fill: {
81649
+ color: "rgba(255, 255, 0, 0.6)",
81650
+ opacity: 0.6
81651
+ },
81652
+ stroke: {
81653
+ color: "#ffff00",
81654
+ width: 3
81655
+ }
81656
+ },
81657
+ text: {
81658
+ font: "12px Arial",
81659
+ fill: {
81660
+ color: "#000000"
81661
+ },
81662
+ stroke: {
81663
+ color: "#ffffff",
81664
+ width: 2
81665
+ },
81666
+ offsetY: -15,
81667
+ scale: 1.2
81668
+ }
81669
+ };
81670
+ class FeatureHighlightManager {
81671
+ constructor(map2, styleConfig) {
81672
+ __publicField(this, "map");
81673
+ __publicField(this, "highlightLayer");
81674
+ __publicField(this, "highlightedFeatures", /* @__PURE__ */ new Map());
81675
+ __publicField(this, "styleConfig");
81676
+ __publicField(this, "featureIdCounter", 0);
81677
+ this.map = map2;
81678
+ this.styleConfig = { ...DEFAULT_HIGHLIGHT_STYLE, ...styleConfig };
81679
+ this.highlightedFeatures = /* @__PURE__ */ new Map();
81680
+ this.highlightLayer = new VectorLayer$3({
81681
+ source: new VectorSource$2(),
81682
+ style: this.createHighlightStyle.bind(this),
81683
+ zIndex: 9999
81684
+ // 确保高亮图层在最上层
81685
+ });
81686
+ this.map.addLayer(this.highlightLayer);
81687
+ }
81688
+ /**
81689
+ * 确保 highlightedFeatures 是有效的 Map 实例
81690
+ */
81691
+ ensureHighlightedFeaturesMap() {
81692
+ if (!this.highlightedFeatures || !(this.highlightedFeatures instanceof Map)) {
81693
+ console.warn("FeatureHighlightManager: highlightedFeatures corrupted, reinitializing...");
81694
+ this.highlightedFeatures = /* @__PURE__ */ new Map();
81695
+ }
81696
+ }
81697
+ /**
81698
+ * 创建高亮样式
81699
+ */
81700
+ createHighlightStyle(feature2) {
81701
+ var _a3, _b3, _c2, _d, _e2, _f;
81702
+ const geometry2 = feature2.getGeometry();
81703
+ const geometryType = geometry2 == null ? void 0 : geometry2.getType();
81704
+ const styleOptions = {};
81705
+ if (geometryType === "Point" || geometryType === "MultiPoint") {
81706
+ if (this.styleConfig.circle) {
81707
+ styleOptions.image = new Circle$8({
81708
+ radius: this.styleConfig.circle.radius || 8,
81709
+ fill: new Fill$2({
81710
+ color: ((_a3 = this.styleConfig.circle.fill) == null ? void 0 : _a3.color) || "rgba(255, 255, 0, 0.6)"
81711
+ }),
81712
+ stroke: new Stroke$2({
81713
+ color: ((_b3 = this.styleConfig.circle.stroke) == null ? void 0 : _b3.color) || "#ffff00",
81714
+ width: ((_c2 = this.styleConfig.circle.stroke) == null ? void 0 : _c2.width) || 3
81715
+ })
81716
+ });
81717
+ }
81718
+ } else {
81719
+ if (this.styleConfig.fill) {
81720
+ styleOptions.fill = new Fill$2({
81721
+ color: this.styleConfig.fill.color || "rgba(255, 255, 0, 0.3)"
81722
+ });
81723
+ }
81724
+ if (this.styleConfig.stroke) {
81725
+ styleOptions.stroke = new Stroke$2({
81726
+ color: this.styleConfig.stroke.color || "#ffff00",
81727
+ width: this.styleConfig.stroke.width || 3,
81728
+ lineDash: this.styleConfig.stroke.lineDash || [5, 5]
81729
+ });
81730
+ }
81731
+ }
81732
+ if (this.styleConfig.text) {
81733
+ const properties = feature2.getProperties();
81734
+ const labelText = properties.name || properties.label || "高亮要素";
81735
+ styleOptions.text = new Text$5({
81736
+ text: labelText,
81737
+ font: this.styleConfig.text.font || "12px Arial",
81738
+ fill: new Fill$2({
81739
+ color: ((_d = this.styleConfig.text.fill) == null ? void 0 : _d.color) || "#000000"
81740
+ }),
81741
+ stroke: new Stroke$2({
81742
+ color: ((_e2 = this.styleConfig.text.stroke) == null ? void 0 : _e2.color) || "#ffffff",
81743
+ width: ((_f = this.styleConfig.text.stroke) == null ? void 0 : _f.width) || 2
81744
+ }),
81745
+ offsetY: this.styleConfig.text.offsetY || -15,
81746
+ scale: this.styleConfig.text.scale || 1.2
81747
+ });
81748
+ }
81749
+ return new Style$3(styleOptions);
81750
+ }
81751
+ /**
81752
+ * 根据图层配置创建自定义高亮样式
81753
+ */
81754
+ createCustomHighlightStyle(feature2, customStyleConfig) {
81755
+ var _a3, _b3, _c2, _d, _e2, _f, _g, _h, _i2, _j;
81756
+ const geometry2 = feature2.getGeometry();
81757
+ const geometryType = geometry2 == null ? void 0 : geometry2.getType();
81758
+ const styleOptions = {};
81759
+ if (geometryType === "Point" || geometryType === "MultiPoint") {
81760
+ if (customStyleConfig == null ? void 0 : customStyleConfig.circle) {
81761
+ styleOptions.image = new Circle$8({
81762
+ radius: customStyleConfig.circle.radius || 8,
81763
+ fill: new Fill$2({
81764
+ color: ((_a3 = customStyleConfig.circle.fill) == null ? void 0 : _a3.color) || "rgba(255, 255, 0, 0.6)"
81765
+ }),
81766
+ stroke: new Stroke$2({
81767
+ color: ((_b3 = customStyleConfig.circle.stroke) == null ? void 0 : _b3.color) || "#ffff00",
81768
+ width: ((_c2 = customStyleConfig.circle.stroke) == null ? void 0 : _c2.width) || 3
81769
+ })
81770
+ });
81771
+ }
81772
+ } else {
81773
+ if ((customStyleConfig == null ? void 0 : customStyleConfig.fill) || (customStyleConfig == null ? void 0 : customStyleConfig.fillColor)) {
81774
+ 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)";
81775
+ styleOptions.fill = new Fill$2({
81776
+ color: color2
81777
+ });
81778
+ }
81779
+ if ((customStyleConfig == null ? void 0 : customStyleConfig.stroke) || (customStyleConfig == null ? void 0 : customStyleConfig.strokeColor)) {
81780
+ const color2 = ((_e2 = customStyleConfig == null ? void 0 : customStyleConfig.stroke) == null ? void 0 : _e2.color) || (customStyleConfig == null ? void 0 : customStyleConfig.strokeColor) || "#ffff00";
81781
+ const width = ((_f = customStyleConfig == null ? void 0 : customStyleConfig.stroke) == null ? void 0 : _f.width) || (customStyleConfig == null ? void 0 : customStyleConfig.strokeWidth) || 3;
81782
+ const lineDash = ((_g = customStyleConfig == null ? void 0 : customStyleConfig.stroke) == null ? void 0 : _g.lineDash) || (customStyleConfig == null ? void 0 : customStyleConfig.lineDash) || [5, 5];
81783
+ styleOptions.stroke = new Stroke$2({
81784
+ color: color2,
81785
+ width,
81786
+ lineDash
81787
+ });
81788
+ }
81789
+ }
81790
+ if (customStyleConfig == null ? void 0 : customStyleConfig.text) {
81791
+ const properties = feature2.getProperties();
81792
+ const labelText = properties.name || properties.label || "高亮要素";
81793
+ styleOptions.text = new Text$5({
81794
+ text: labelText,
81795
+ font: customStyleConfig.text.font || "12px Arial",
81796
+ fill: new Fill$2({
81797
+ color: ((_h = customStyleConfig.text.fill) == null ? void 0 : _h.color) || "#000000"
81798
+ }),
81799
+ stroke: new Stroke$2({
81800
+ color: ((_i2 = customStyleConfig.text.stroke) == null ? void 0 : _i2.color) || "#ffffff",
81801
+ width: ((_j = customStyleConfig.text.stroke) == null ? void 0 : _j.width) || 2
81802
+ }),
81803
+ offsetX: customStyleConfig.text.offsetX || 0,
81804
+ offsetY: customStyleConfig.text.offsetY || -15,
81805
+ scale: customStyleConfig.text.scale || 1.2
81806
+ });
81807
+ }
81808
+ return new Style$3(styleOptions);
81809
+ }
81810
+ /**
81811
+ * 高亮要素
81812
+ */
81813
+ highlightFeature(feature2, layerId, layerHighlightConfig) {
81814
+ var _a3;
81815
+ this.ensureHighlightedFeaturesMap();
81816
+ const existingId = this.isFeatureHighlighted(feature2);
81817
+ if (existingId) {
81818
+ return existingId;
81819
+ }
81820
+ if (layerHighlightConfig == null ? void 0 : layerHighlightConfig.clearOthersOnHighlight) {
81821
+ this.clearAllHighlights();
81822
+ }
81823
+ const featureId2 = `highlight_${++this.featureIdCounter}_${Date.now()}`;
81824
+ const highlightFeature = feature2.clone();
81825
+ highlightFeature.setId(featureId2);
81826
+ if (layerHighlightConfig == null ? void 0 : layerHighlightConfig.style) {
81827
+ const customStyle = this.createCustomHighlightStyle(highlightFeature, layerHighlightConfig.style);
81828
+ highlightFeature.setStyle(customStyle);
81829
+ }
81830
+ const originalStyle = feature2.getStyle();
81831
+ const highlightInfo = {
81832
+ originalFeature: feature2,
81833
+ highlightFeature,
81834
+ originalStyle,
81835
+ layerId
81836
+ };
81837
+ (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.addFeature(highlightFeature);
81838
+ this.highlightedFeatures.set(featureId2, highlightInfo);
81839
+ return featureId2;
81840
+ }
81841
+ /**
81842
+ * 取消高亮要素
81843
+ */
81844
+ unhighlightFeature(featureId2) {
81845
+ var _a3;
81846
+ this.ensureHighlightedFeaturesMap();
81847
+ const highlightInfo = this.highlightedFeatures.get(featureId2);
81848
+ if (!highlightInfo) {
81849
+ return false;
81850
+ }
81851
+ (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.removeFeature(highlightInfo.highlightFeature);
81852
+ this.highlightedFeatures.delete(featureId2);
81853
+ return true;
81854
+ }
81855
+ /**
81856
+ * 清除所有高亮
81857
+ */
81858
+ clearAllHighlights() {
81859
+ var _a3;
81860
+ (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.clear();
81861
+ this.ensureHighlightedFeaturesMap();
81862
+ this.highlightedFeatures.clear();
81863
+ }
81864
+ /**
81865
+ * 获取当前高亮的要素数量
81866
+ */
81867
+ getHighlightedCount() {
81868
+ this.ensureHighlightedFeaturesMap();
81869
+ return this.highlightedFeatures.size;
81870
+ }
81871
+ /**
81872
+ * 获取所有高亮要素的ID
81873
+ */
81874
+ getHighlightedFeatureIds() {
81875
+ this.ensureHighlightedFeaturesMap();
81876
+ return Array.from(this.highlightedFeatures.keys());
81877
+ }
81878
+ /**
81879
+ * 检查要素是否已高亮
81880
+ */
81881
+ isFeatureHighlighted(feature2) {
81882
+ this.ensureHighlightedFeaturesMap();
81883
+ if (!this.highlightedFeatures || typeof this.highlightedFeatures[Symbol.iterator] !== "function") {
81884
+ console.warn("FeatureHighlightManager: highlightedFeatures lost iterator, reinitializing...");
81885
+ this.highlightedFeatures = /* @__PURE__ */ new Map();
81886
+ return null;
81887
+ }
81888
+ try {
81889
+ const entries = Array.from(this.highlightedFeatures.entries());
81890
+ for (const [id2, info] of entries) {
81891
+ if (info && info.originalFeature === feature2) {
81892
+ return id2;
81893
+ }
81894
+ }
81895
+ } catch (error2) {
81896
+ console.error("Error iterating highlightedFeatures:", error2);
81897
+ this.highlightedFeatures = /* @__PURE__ */ new Map();
81898
+ return null;
81899
+ }
81900
+ return null;
81901
+ }
81902
+ /**
81903
+ * 更新高亮样式配置
81904
+ */
81905
+ updateStyleConfig(newConfig) {
81906
+ var _a3;
81907
+ this.styleConfig = { ...this.styleConfig, ...newConfig };
81908
+ this.ensureHighlightedFeaturesMap();
81909
+ (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.getFeatures().forEach((feature2) => {
81910
+ feature2.changed();
81911
+ });
81912
+ }
81913
+ /**
81914
+ * 获取当前样式配置
81915
+ */
81916
+ getStyleConfig() {
81917
+ return { ...this.styleConfig };
81918
+ }
81919
+ /**
81920
+ * 销毁管理器
81921
+ */
81922
+ destroy() {
81923
+ this.clearAllHighlights();
81924
+ this.map.removeLayer(this.highlightLayer);
81925
+ }
81926
+ }
81633
81927
  class GeoJSONLocationTool {
81634
- constructor(map2) {
81928
+ constructor(map2, featureHighlightManager) {
81635
81929
  __publicField(this, "map");
81636
81930
  __publicField(this, "format");
81931
+ __publicField(this, "featureHighlightManager");
81637
81932
  this.map = map2;
81638
81933
  this.format = new GeoJSON$4();
81934
+ this.featureHighlightManager = featureHighlightManager;
81639
81935
  }
81640
81936
  /**
81641
81937
  * 定位到 GeoJSON 数据
@@ -81707,6 +82003,18 @@ ${this.attributes_.map(
81707
82003
  duration: fitOptions.duration,
81708
82004
  minZoom: fitOptions.minZoom
81709
82005
  });
82006
+ if ((fitOptions.highlight || fitOptions.style) && this.featureHighlightManager) {
82007
+ if (fitOptions.clearPrevious !== false) {
82008
+ this.featureHighlightManager.clearAllHighlights();
82009
+ }
82010
+ const highlightConfig = {
82011
+ style: fitOptions.style,
82012
+ clearOthersOnHighlight: false
82013
+ };
82014
+ features2.forEach((feature2) => {
82015
+ this.featureHighlightManager.highlightFeature(feature2, "location_highlight", highlightConfig);
82016
+ });
82017
+ }
81710
82018
  if (fitOptions.showMessage) {
81711
82019
  }
81712
82020
  return true;
@@ -81755,6 +82063,16 @@ ${this.attributes_.map(
81755
82063
  zoom: targetZoom,
81756
82064
  duration: (options == null ? void 0 : options.duration) || 1e3
81757
82065
  });
82066
+ if (((options == null ? void 0 : options.highlight) || (options == null ? void 0 : options.style)) && this.featureHighlightManager) {
82067
+ if (options.clearPrevious !== false) {
82068
+ this.featureHighlightManager.clearAllHighlights();
82069
+ }
82070
+ const highlightConfig = {
82071
+ style: options.style,
82072
+ clearOthersOnHighlight: false
82073
+ };
82074
+ this.featureHighlightManager.highlightFeature(feature2, "location_center_highlight", highlightConfig);
82075
+ }
81758
82076
  if ((options == null ? void 0 : options.showMessage) !== false) {
81759
82077
  }
81760
82078
  return true;
@@ -83385,7 +83703,8 @@ ${this.attributes_.map(
83385
83703
  rotation: config.rotation,
83386
83704
  backgroundFill: this.createFill(config.backgroundFill),
83387
83705
  backgroundStroke: this.createStroke(config.backgroundStroke),
83388
- padding: config.padding
83706
+ padding: config.padding,
83707
+ overflow: config.overflow
83389
83708
  });
83390
83709
  return textStyle;
83391
83710
  }
@@ -83693,8 +84012,12 @@ ${this.attributes_.map(
83693
84012
  var _a3;
83694
84013
  const geometryType = StyleFactory.getFeatureGeometryType(feature2);
83695
84014
  const defaultConfig = this.getDefaultStyle(geometryType);
83696
- const customConfig = styleConfig == null ? void 0 : styleConfig[geometryType];
83697
- const finalConfig = this.mergeStyleConfig(defaultConfig, customConfig);
84015
+ const layerConfig = styleConfig == null ? void 0 : styleConfig[geometryType];
84016
+ let finalConfig = this.mergeStyleConfig(defaultConfig, layerConfig);
84017
+ const featureStyle = feature2.get("style");
84018
+ if (featureStyle) {
84019
+ finalConfig = this.mergeStyleConfig(finalConfig, featureStyle);
84020
+ }
83698
84021
  if (finalConfig && finalConfig.text) {
83699
84022
  const textCfg = { ...finalConfig.text };
83700
84023
  let content2 = textCfg.text;
@@ -83847,6 +84170,20 @@ ${this.attributes_.map(
83847
84170
  * 创建样式函数
83848
84171
  */
83849
84172
  createStyleFunction() {
84173
+ if (this.config.styleFunction) {
84174
+ const userFn = this.config.styleFunction;
84175
+ return (feature2, resolution) => {
84176
+ const result = userFn(feature2, resolution || 0);
84177
+ if (result instanceof Style$3 || Array.isArray(result) && result[0] instanceof Style$3) {
84178
+ return result;
84179
+ }
84180
+ if (result && typeof result === "object") {
84181
+ const geometryType = StyleFactory.getFeatureGeometryType(feature2);
84182
+ return StyleFactory.createStyleByGeometryType(geometryType, result);
84183
+ }
84184
+ return [];
84185
+ };
84186
+ }
83850
84187
  this.parseStyleConfig();
83851
84188
  return styleManager.createStyleFunction(this.styleConfig);
83852
84189
  }
@@ -86136,6 +86473,9 @@ ${this.attributes_.map(
86136
86473
  * 创建样式函数
86137
86474
  */
86138
86475
  createStyleFunction() {
86476
+ if (this.config.styleFunction) {
86477
+ return this.config.styleFunction;
86478
+ }
86139
86479
  this.parseStyleConfig();
86140
86480
  return styleManager.createStyleFunction(this.styleConfig);
86141
86481
  }
@@ -466759,6 +467099,9 @@ ${this.attributes_.map(
466759
467099
  * 创建样式函数
466760
467100
  */
466761
467101
  createStyleFunction() {
467102
+ if (this.config.styleFunction) {
467103
+ return this.config.styleFunction;
467104
+ }
466762
467105
  if (this.styleConfig) {
466763
467106
  return styleManager.createStyleFunction(this.styleConfig);
466764
467107
  }
@@ -468350,298 +468693,8 @@ ${this.attributes_.map(
468350
468693
  this.layerConfigs.clear();
468351
468694
  }
468352
468695
  }
468353
- const DEFAULT_HIGHLIGHT_STYLE = {
468354
- fill: {
468355
- color: "rgba(255, 255, 0, 0.3)",
468356
- // 黄色半透明填充
468357
- opacity: 0.3
468358
- },
468359
- stroke: {
468360
- color: "#ffff00",
468361
- // 黄色描边
468362
- width: 3,
468363
- lineDash: [5, 5]
468364
- // 虚线
468365
- },
468366
- circle: {
468367
- radius: 8,
468368
- fill: {
468369
- color: "rgba(255, 255, 0, 0.6)",
468370
- opacity: 0.6
468371
- },
468372
- stroke: {
468373
- color: "#ffff00",
468374
- width: 3
468375
- }
468376
- },
468377
- text: {
468378
- font: "12px Arial",
468379
- fill: {
468380
- color: "#000000"
468381
- },
468382
- stroke: {
468383
- color: "#ffffff",
468384
- width: 2
468385
- },
468386
- offsetY: -15,
468387
- scale: 1.2
468388
- }
468389
- };
468390
- class FeatureHighlightManager {
468391
- constructor(map2, styleConfig) {
468392
- __publicField(this, "map");
468393
- __publicField(this, "highlightLayer");
468394
- __publicField(this, "highlightedFeatures", /* @__PURE__ */ new Map());
468395
- __publicField(this, "styleConfig");
468396
- __publicField(this, "featureIdCounter", 0);
468397
- this.map = map2;
468398
- this.styleConfig = { ...DEFAULT_HIGHLIGHT_STYLE, ...styleConfig };
468399
- this.highlightedFeatures = /* @__PURE__ */ new Map();
468400
- this.highlightLayer = new VectorLayer$3({
468401
- source: new VectorSource$2(),
468402
- style: this.createHighlightStyle.bind(this),
468403
- zIndex: 9999
468404
- // 确保高亮图层在最上层
468405
- });
468406
- this.map.addLayer(this.highlightLayer);
468407
- }
468408
- /**
468409
- * 确保 highlightedFeatures 是有效的 Map 实例
468410
- */
468411
- ensureHighlightedFeaturesMap() {
468412
- if (!this.highlightedFeatures || !(this.highlightedFeatures instanceof Map)) {
468413
- console.warn("FeatureHighlightManager: highlightedFeatures corrupted, reinitializing...");
468414
- this.highlightedFeatures = /* @__PURE__ */ new Map();
468415
- }
468416
- }
468417
- /**
468418
- * 创建高亮样式
468419
- */
468420
- createHighlightStyle(feature2) {
468421
- var _a3, _b3, _c2, _d, _e2, _f;
468422
- const geometry2 = feature2.getGeometry();
468423
- const geometryType = geometry2 == null ? void 0 : geometry2.getType();
468424
- const styleOptions = {};
468425
- if (geometryType === "Point" || geometryType === "MultiPoint") {
468426
- if (this.styleConfig.circle) {
468427
- styleOptions.image = new Circle$8({
468428
- radius: this.styleConfig.circle.radius || 8,
468429
- fill: new Fill$2({
468430
- color: ((_a3 = this.styleConfig.circle.fill) == null ? void 0 : _a3.color) || "rgba(255, 255, 0, 0.6)"
468431
- }),
468432
- stroke: new Stroke$2({
468433
- color: ((_b3 = this.styleConfig.circle.stroke) == null ? void 0 : _b3.color) || "#ffff00",
468434
- width: ((_c2 = this.styleConfig.circle.stroke) == null ? void 0 : _c2.width) || 3
468435
- })
468436
- });
468437
- }
468438
- } else {
468439
- if (this.styleConfig.fill) {
468440
- styleOptions.fill = new Fill$2({
468441
- color: this.styleConfig.fill.color || "rgba(255, 255, 0, 0.3)"
468442
- });
468443
- }
468444
- if (this.styleConfig.stroke) {
468445
- styleOptions.stroke = new Stroke$2({
468446
- color: this.styleConfig.stroke.color || "#ffff00",
468447
- width: this.styleConfig.stroke.width || 3,
468448
- lineDash: this.styleConfig.stroke.lineDash || [5, 5]
468449
- });
468450
- }
468451
- }
468452
- if (this.styleConfig.text) {
468453
- const properties = feature2.getProperties();
468454
- const labelText = properties.name || properties.label || "高亮要素";
468455
- styleOptions.text = new Text$5({
468456
- text: labelText,
468457
- font: this.styleConfig.text.font || "12px Arial",
468458
- fill: new Fill$2({
468459
- color: ((_d = this.styleConfig.text.fill) == null ? void 0 : _d.color) || "#000000"
468460
- }),
468461
- stroke: new Stroke$2({
468462
- color: ((_e2 = this.styleConfig.text.stroke) == null ? void 0 : _e2.color) || "#ffffff",
468463
- width: ((_f = this.styleConfig.text.stroke) == null ? void 0 : _f.width) || 2
468464
- }),
468465
- offsetY: this.styleConfig.text.offsetY || -15,
468466
- scale: this.styleConfig.text.scale || 1.2
468467
- });
468468
- }
468469
- return new Style$3(styleOptions);
468470
- }
468471
- /**
468472
- * 根据图层配置创建自定义高亮样式
468473
- */
468474
- createCustomHighlightStyle(feature2, customStyleConfig) {
468475
- var _a3, _b3, _c2, _d, _e2, _f;
468476
- const geometry2 = feature2.getGeometry();
468477
- const geometryType = geometry2 == null ? void 0 : geometry2.getType();
468478
- const styleOptions = {};
468479
- if (geometryType === "Point" || geometryType === "MultiPoint") {
468480
- if (customStyleConfig == null ? void 0 : customStyleConfig.circle) {
468481
- styleOptions.image = new Circle$8({
468482
- radius: customStyleConfig.circle.radius || 8,
468483
- fill: new Fill$2({
468484
- color: ((_a3 = customStyleConfig.circle.fill) == null ? void 0 : _a3.color) || "rgba(255, 255, 0, 0.6)"
468485
- }),
468486
- stroke: new Stroke$2({
468487
- color: ((_b3 = customStyleConfig.circle.stroke) == null ? void 0 : _b3.color) || "#ffff00",
468488
- width: ((_c2 = customStyleConfig.circle.stroke) == null ? void 0 : _c2.width) || 3
468489
- })
468490
- });
468491
- }
468492
- } else {
468493
- if (customStyleConfig == null ? void 0 : customStyleConfig.fill) {
468494
- styleOptions.fill = new Fill$2({
468495
- color: customStyleConfig.fill.color || "rgba(255, 255, 0, 0.3)"
468496
- });
468497
- }
468498
- if (customStyleConfig == null ? void 0 : customStyleConfig.stroke) {
468499
- styleOptions.stroke = new Stroke$2({
468500
- color: customStyleConfig.stroke.color || "#ffff00",
468501
- width: customStyleConfig.stroke.width || 3,
468502
- lineDash: customStyleConfig.stroke.lineDash || [5, 5]
468503
- });
468504
- }
468505
- }
468506
- if (customStyleConfig == null ? void 0 : customStyleConfig.text) {
468507
- const properties = feature2.getProperties();
468508
- const labelText = properties.name || properties.label || "高亮要素";
468509
- styleOptions.text = new Text$5({
468510
- text: labelText,
468511
- font: customStyleConfig.text.font || "12px Arial",
468512
- fill: new Fill$2({
468513
- color: ((_d = customStyleConfig.text.fill) == null ? void 0 : _d.color) || "#000000"
468514
- }),
468515
- stroke: new Stroke$2({
468516
- color: ((_e2 = customStyleConfig.text.stroke) == null ? void 0 : _e2.color) || "#ffffff",
468517
- width: ((_f = customStyleConfig.text.stroke) == null ? void 0 : _f.width) || 2
468518
- }),
468519
- offsetX: customStyleConfig.text.offsetX || 0,
468520
- offsetY: customStyleConfig.text.offsetY || -15,
468521
- scale: customStyleConfig.text.scale || 1.2
468522
- });
468523
- }
468524
- return new Style$3(styleOptions);
468525
- }
468526
- /**
468527
- * 高亮要素
468528
- */
468529
- highlightFeature(feature2, layerId, layerHighlightConfig) {
468530
- var _a3;
468531
- this.ensureHighlightedFeaturesMap();
468532
- const existingId = this.isFeatureHighlighted(feature2);
468533
- if (existingId) {
468534
- return existingId;
468535
- }
468536
- if (layerHighlightConfig == null ? void 0 : layerHighlightConfig.clearOthersOnHighlight) {
468537
- this.clearAllHighlights();
468538
- }
468539
- const featureId2 = `highlight_${++this.featureIdCounter}_${Date.now()}`;
468540
- const highlightFeature = feature2.clone();
468541
- highlightFeature.setId(featureId2);
468542
- if (layerHighlightConfig == null ? void 0 : layerHighlightConfig.style) {
468543
- const customStyle = this.createCustomHighlightStyle(highlightFeature, layerHighlightConfig.style);
468544
- highlightFeature.setStyle(customStyle);
468545
- }
468546
- const originalStyle = feature2.getStyle();
468547
- const highlightInfo = {
468548
- originalFeature: feature2,
468549
- highlightFeature,
468550
- originalStyle,
468551
- layerId
468552
- };
468553
- (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.addFeature(highlightFeature);
468554
- this.highlightedFeatures.set(featureId2, highlightInfo);
468555
- return featureId2;
468556
- }
468557
- /**
468558
- * 取消高亮要素
468559
- */
468560
- unhighlightFeature(featureId2) {
468561
- var _a3;
468562
- this.ensureHighlightedFeaturesMap();
468563
- const highlightInfo = this.highlightedFeatures.get(featureId2);
468564
- if (!highlightInfo) {
468565
- return false;
468566
- }
468567
- (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.removeFeature(highlightInfo.highlightFeature);
468568
- this.highlightedFeatures.delete(featureId2);
468569
- return true;
468570
- }
468571
- /**
468572
- * 清除所有高亮
468573
- */
468574
- clearAllHighlights() {
468575
- var _a3;
468576
- (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.clear();
468577
- this.ensureHighlightedFeaturesMap();
468578
- this.highlightedFeatures.clear();
468579
- }
468580
- /**
468581
- * 获取当前高亮的要素数量
468582
- */
468583
- getHighlightedCount() {
468584
- this.ensureHighlightedFeaturesMap();
468585
- return this.highlightedFeatures.size;
468586
- }
468587
- /**
468588
- * 获取所有高亮要素的ID
468589
- */
468590
- getHighlightedFeatureIds() {
468591
- this.ensureHighlightedFeaturesMap();
468592
- return Array.from(this.highlightedFeatures.keys());
468593
- }
468594
- /**
468595
- * 检查要素是否已高亮
468596
- */
468597
- isFeatureHighlighted(feature2) {
468598
- this.ensureHighlightedFeaturesMap();
468599
- if (!this.highlightedFeatures || typeof this.highlightedFeatures[Symbol.iterator] !== "function") {
468600
- console.warn("FeatureHighlightManager: highlightedFeatures lost iterator, reinitializing...");
468601
- this.highlightedFeatures = /* @__PURE__ */ new Map();
468602
- return null;
468603
- }
468604
- try {
468605
- const entries = Array.from(this.highlightedFeatures.entries());
468606
- for (const [id2, info] of entries) {
468607
- if (info && info.originalFeature === feature2) {
468608
- return id2;
468609
- }
468610
- }
468611
- } catch (error2) {
468612
- console.error("Error iterating highlightedFeatures:", error2);
468613
- this.highlightedFeatures = /* @__PURE__ */ new Map();
468614
- return null;
468615
- }
468616
- return null;
468617
- }
468618
- /**
468619
- * 更新高亮样式配置
468620
- */
468621
- updateStyleConfig(newConfig) {
468622
- var _a3;
468623
- this.styleConfig = { ...this.styleConfig, ...newConfig };
468624
- this.ensureHighlightedFeaturesMap();
468625
- (_a3 = this.highlightLayer.getSource()) == null ? void 0 : _a3.getFeatures().forEach((feature2) => {
468626
- feature2.changed();
468627
- });
468628
- }
468629
- /**
468630
- * 获取当前样式配置
468631
- */
468632
- getStyleConfig() {
468633
- return { ...this.styleConfig };
468634
- }
468635
- /**
468636
- * 销毁管理器
468637
- */
468638
- destroy() {
468639
- this.clearAllHighlights();
468640
- this.map.removeLayer(this.highlightLayer);
468641
- }
468642
- }
468643
- const _hoisted_1$p = ["id"];
468644
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
468696
+ const _hoisted_1$q = ["id"];
468697
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
468645
468698
  __name: "BasePopup",
468646
468699
  props: {
468647
468700
  config: {},
@@ -468759,7 +468812,7 @@ ${this.attributes_.map(
468759
468812
  }, [
468760
468813
  vue.createElementVNode("div", {
468761
468814
  id: `popup-slot-${_ctx.id}`
468762
- }, null, 8, _hoisted_1$p),
468815
+ }, null, 8, _hoisted_1$q),
468763
468816
  vue.renderSlot(_ctx.$slots, "default", {
468764
468817
  feature: _ctx.feature,
468765
468818
  coordinate: _ctx.coordinate,
@@ -468775,13 +468828,13 @@ ${this.attributes_.map(
468775
468828
  }
468776
468829
  });
468777
468830
  const BasePopup_vue_vue_type_style_index_0_lang = "";
468778
- const _hoisted_1$o = { class: "html-popup-content" };
468779
- const _hoisted_2$m = {
468831
+ const _hoisted_1$p = { class: "html-popup-content" };
468832
+ const _hoisted_2$n = {
468780
468833
  key: 0,
468781
468834
  class: "html-popup-title"
468782
468835
  };
468783
- const _hoisted_3$l = ["innerHTML"];
468784
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
468836
+ const _hoisted_3$m = ["innerHTML"];
468837
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
468785
468838
  __name: "HtmlPopup",
468786
468839
  props: {
468787
468840
  config: {},
@@ -468829,7 +468882,7 @@ ${this.attributes_.map(
468829
468882
  return sanitizeHtml(content2);
468830
468883
  });
468831
468884
  return (_ctx, _cache) => {
468832
- return vue.openBlock(), vue.createBlock(_sfc_main$q, {
468885
+ return vue.openBlock(), vue.createBlock(_sfc_main$r, {
468833
468886
  config: _ctx.config,
468834
468887
  coordinate: _ctx.coordinate,
468835
468888
  feature: _ctx.feature,
@@ -468842,12 +468895,12 @@ ${this.attributes_.map(
468842
468895
  default: vue.withCtx(() => {
468843
468896
  var _a3;
468844
468897
  return [
468845
- vue.createElementVNode("div", _hoisted_1$o, [
468846
- ((_a3 = _ctx.config.template) == null ? void 0 : _a3.title) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$m, vue.toDisplayString(resolveTitle()), 1)) : vue.createCommentVNode("", true),
468898
+ vue.createElementVNode("div", _hoisted_1$p, [
468899
+ ((_a3 = _ctx.config.template) == null ? void 0 : _a3.title) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$n, vue.toDisplayString(resolveTitle()), 1)) : vue.createCommentVNode("", true),
468847
468900
  vue.createElementVNode("div", {
468848
468901
  class: "html-popup-body",
468849
468902
  innerHTML: resolveContent()
468850
- }, null, 8, _hoisted_3$l)
468903
+ }, null, 8, _hoisted_3$m)
468851
468904
  ])
468852
468905
  ];
468853
468906
  }),
@@ -468857,17 +468910,17 @@ ${this.attributes_.map(
468857
468910
  }
468858
468911
  });
468859
468912
  const HtmlPopup_vue_vue_type_style_index_0_lang = "";
468860
- const _hoisted_1$n = { class: "image-popup-content" };
468861
- const _hoisted_2$l = {
468913
+ const _hoisted_1$o = { class: "image-popup-content" };
468914
+ const _hoisted_2$m = {
468862
468915
  key: 0,
468863
468916
  class: "image-popup-title"
468864
468917
  };
468865
- const _hoisted_3$k = {
468918
+ const _hoisted_3$l = {
468866
468919
  key: 1,
468867
468920
  class: "image-popup-description"
468868
468921
  };
468869
- const _hoisted_4$k = { class: "image-popup-main" };
468870
- const _hoisted_5$k = { class: "image-container" };
468922
+ const _hoisted_4$l = { class: "image-popup-main" };
468923
+ const _hoisted_5$l = { class: "image-container" };
468871
468924
  const _hoisted_6$h = ["src", "alt"];
468872
468925
  const _hoisted_7$f = {
468873
468926
  key: 0,
@@ -468897,7 +468950,7 @@ ${this.attributes_.map(
468897
468950
  };
468898
468951
  const _hoisted_15$7 = { class: "fullscreen-container" };
468899
468952
  const _hoisted_16$7 = ["src", "alt"];
468900
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
468953
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
468901
468954
  __name: "ImagePopup",
468902
468955
  props: {
468903
468956
  config: {},
@@ -469030,7 +469083,7 @@ ${this.attributes_.map(
469030
469083
  document.removeEventListener("keydown", handleKeydown);
469031
469084
  });
469032
469085
  return (_ctx, _cache) => {
469033
- return vue.openBlock(), vue.createBlock(_sfc_main$q, {
469086
+ return vue.openBlock(), vue.createBlock(_sfc_main$r, {
469034
469087
  config: _ctx.config,
469035
469088
  coordinate: _ctx.coordinate,
469036
469089
  feature: _ctx.feature,
@@ -469041,11 +469094,11 @@ ${this.attributes_.map(
469041
469094
  onHide: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("hide"))
469042
469095
  }, {
469043
469096
  default: vue.withCtx(() => [
469044
- vue.createElementVNode("div", _hoisted_1$n, [
469045
- _ctx.config.title ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$l, vue.toDisplayString(resolveTitle()), 1)) : vue.createCommentVNode("", true),
469046
- _ctx.config.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$k, vue.toDisplayString(_ctx.config.description), 1)) : vue.createCommentVNode("", true),
469047
- vue.createElementVNode("div", _hoisted_4$k, [
469048
- vue.createElementVNode("div", _hoisted_5$k, [
469097
+ vue.createElementVNode("div", _hoisted_1$o, [
469098
+ _ctx.config.title ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$m, vue.toDisplayString(resolveTitle()), 1)) : vue.createCommentVNode("", true),
469099
+ _ctx.config.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$l, vue.toDisplayString(_ctx.config.description), 1)) : vue.createCommentVNode("", true),
469100
+ vue.createElementVNode("div", _hoisted_4$l, [
469101
+ vue.createElementVNode("div", _hoisted_5$l, [
469049
469102
  vue.createElementVNode("img", {
469050
469103
  src: currentImage.value,
469051
469104
  alt: `图片 ${currentIndex.value + 1}`,
@@ -469152,20 +469205,20 @@ ${this.attributes_.map(
469152
469205
  }
469153
469206
  });
469154
469207
  const ImagePopup_vue_vue_type_style_index_0_lang = "";
469155
- const _hoisted_1$m = { class: "array-popup-content" };
469156
- const _hoisted_2$k = {
469208
+ const _hoisted_1$n = { class: "array-popup-content" };
469209
+ const _hoisted_2$l = {
469157
469210
  key: 0,
469158
469211
  class: "array-popup-title"
469159
469212
  };
469160
- const _hoisted_3$j = {
469213
+ const _hoisted_3$k = {
469161
469214
  key: 1,
469162
469215
  class: "array-popup-description"
469163
469216
  };
469164
- const _hoisted_4$j = {
469217
+ const _hoisted_4$k = {
469165
469218
  key: 2,
469166
469219
  class: "view-switch"
469167
469220
  };
469168
- const _hoisted_5$j = {
469221
+ const _hoisted_5$k = {
469169
469222
  key: 3,
469170
469223
  class: "search-container"
469171
469224
  };
@@ -469229,7 +469282,7 @@ ${this.attributes_.map(
469229
469282
  class: "empty-data"
469230
469283
  };
469231
469284
  const _hoisted_44$1 = { class: "empty-text" };
469232
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
469285
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
469233
469286
  __name: "ArrayPopup",
469234
469287
  props: {
469235
469288
  config: {},
@@ -469375,7 +469428,7 @@ ${this.attributes_.map(
469375
469428
  }
469376
469429
  });
469377
469430
  return (_ctx, _cache) => {
469378
- return vue.openBlock(), vue.createBlock(_sfc_main$q, {
469431
+ return vue.openBlock(), vue.createBlock(_sfc_main$r, {
469379
469432
  config: _ctx.config,
469380
469433
  coordinate: _ctx.coordinate,
469381
469434
  feature: _ctx.feature,
@@ -469386,10 +469439,10 @@ ${this.attributes_.map(
469386
469439
  onHide: _cache[8] || (_cache[8] = ($event) => _ctx.$emit("hide"))
469387
469440
  }, {
469388
469441
  default: vue.withCtx(() => [
469389
- vue.createElementVNode("div", _hoisted_1$m, [
469390
- _ctx.config.title ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$k, vue.toDisplayString(resolveTitle()), 1)) : vue.createCommentVNode("", true),
469391
- _ctx.config.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$j, vue.toDisplayString(_ctx.config.description), 1)) : vue.createCommentVNode("", true),
469392
- _ctx.config.allowViewSwitch ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$j, [
469442
+ vue.createElementVNode("div", _hoisted_1$n, [
469443
+ _ctx.config.title ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$l, vue.toDisplayString(resolveTitle()), 1)) : vue.createCommentVNode("", true),
469444
+ _ctx.config.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$k, vue.toDisplayString(_ctx.config.description), 1)) : vue.createCommentVNode("", true),
469445
+ _ctx.config.allowViewSwitch ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$k, [
469393
469446
  vue.createVNode(vue.unref(ElButton), {
469394
469447
  class: vue.normalizeClass(["view-btn", { active: currentView.value === "table" }]),
469395
469448
  onClick: _cache[0] || (_cache[0] = ($event) => setView("table")),
@@ -469424,7 +469477,7 @@ ${this.attributes_.map(
469424
469477
  _: 1
469425
469478
  }, 8, ["class", "type"])
469426
469479
  ])) : vue.createCommentVNode("", true),
469427
- _ctx.config.searchable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$j, [
469480
+ _ctx.config.searchable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$k, [
469428
469481
  vue.createVNode(vue.unref(ElInput), {
469429
469482
  modelValue: searchQuery.value,
469430
469483
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => searchQuery.value = $event),
@@ -469810,7 +469863,7 @@ ${this.attributes_.map(
469810
469863
  let app = null;
469811
469864
  switch (type) {
469812
469865
  case "html":
469813
- app = vue.createApp(_sfc_main$p, {
469866
+ app = vue.createApp(_sfc_main$q, {
469814
469867
  id: popupId,
469815
469868
  config: { ...this.config.defaultConfig, ...config },
469816
469869
  coordinate,
@@ -469820,7 +469873,7 @@ ${this.attributes_.map(
469820
469873
  });
469821
469874
  break;
469822
469875
  case "image":
469823
- app = vue.createApp(_sfc_main$o, {
469876
+ app = vue.createApp(_sfc_main$p, {
469824
469877
  id: popupId,
469825
469878
  config: { ...this.config.defaultConfig, ...config },
469826
469879
  coordinate,
@@ -469830,7 +469883,7 @@ ${this.attributes_.map(
469830
469883
  });
469831
469884
  break;
469832
469885
  case "array":
469833
- app = vue.createApp(_sfc_main$n, {
469886
+ app = vue.createApp(_sfc_main$o, {
469834
469887
  id: popupId,
469835
469888
  config: { ...this.config.defaultConfig, ...config },
469836
469889
  coordinate,
@@ -469846,7 +469899,7 @@ ${this.attributes_.map(
469846
469899
  case "all":
469847
469900
  const allConfig = config;
469848
469901
  if (allConfig.htmlContent) {
469849
- app = vue.createApp(_sfc_main$p, {
469902
+ app = vue.createApp(_sfc_main$q, {
469850
469903
  id: popupId,
469851
469904
  config: {
469852
469905
  ...allConfig,
@@ -469858,7 +469911,7 @@ ${this.attributes_.map(
469858
469911
  onClose: () => this.closePopup(popupId)
469859
469912
  });
469860
469913
  } else if (allConfig.images) {
469861
- app = vue.createApp(_sfc_main$o, {
469914
+ app = vue.createApp(_sfc_main$p, {
469862
469915
  id: popupId,
469863
469916
  config: {
469864
469917
  ...allConfig,
@@ -469870,7 +469923,7 @@ ${this.attributes_.map(
469870
469923
  onClose: () => this.closePopup(popupId)
469871
469924
  });
469872
469925
  } else if (allConfig.data) {
469873
- app = vue.createApp(_sfc_main$n, {
469926
+ app = vue.createApp(_sfc_main$o, {
469874
469927
  id: popupId,
469875
469928
  config: {
469876
469929
  ...allConfig,
@@ -469886,7 +469939,7 @@ ${this.attributes_.map(
469886
469939
  }
469887
469940
  });
469888
469941
  } else {
469889
- app = vue.createApp(_sfc_main$q, {
469942
+ app = vue.createApp(_sfc_main$r, {
469890
469943
  id: popupId,
469891
469944
  config: allConfig,
469892
469945
  coordinate,
@@ -469909,7 +469962,7 @@ ${this.attributes_.map(
469909
469962
  },
469910
469963
  render() {
469911
469964
  return vue.h(
469912
- _sfc_main$q,
469965
+ _sfc_main$r,
469913
469966
  { config: this.cfg, coordinate: this.coordinate, feature: this.feature, visible: true, id: popupId, onClose: this.onClose },
469914
469967
  { default: () => vue.h(this.CustomComp, { ...this.computedProps, feature: this.feature, coordinate: this.coordinate, config: this.cfg }) }
469915
469968
  );
@@ -470164,28 +470217,47 @@ ${this.attributes_.map(
470164
470217
  }
470165
470218
  }
470166
470219
  /**
470167
- * 查找匹配的图层配置
470220
+ * 查找匹配的图层配置(支持递归查找子图层)
470168
470221
  */
470169
470222
  findMatchingLayer(layer2, allLayers) {
470170
- return allLayers.find((l2) => {
470171
- var _a3;
470172
- if (((_a3 = layer2.values_) == null ? void 0 : _a3.layerId) && l2.id === layer2.values_.layerId) {
470173
- return true;
470174
- }
470175
- if (layer2.layerId && l2.id === layer2.layerId) {
470176
- return true;
470177
- }
470178
- if (layer2.layerName && l2.name === layer2.layerName) {
470179
- return true;
470223
+ for (const config of allLayers) {
470224
+ if (this.isLayerMatch(layer2, config)) {
470225
+ return config;
470180
470226
  }
470181
- if (layer2.get && layer2.get("id") === l2.id) {
470182
- return true;
470227
+ if (config.children && config.children.length > 0) {
470228
+ const match2 = this.findMatchingLayer(layer2, config.children);
470229
+ if (match2)
470230
+ return match2;
470183
470231
  }
470184
- if (layer2.get && layer2.get("name") === l2.name) {
470185
- return true;
470232
+ if (config.layers && config.layers.length > 0) {
470233
+ const match2 = this.findMatchingLayer(layer2, config.layers);
470234
+ if (match2)
470235
+ return match2;
470186
470236
  }
470187
- return false;
470188
- });
470237
+ }
470238
+ return void 0;
470239
+ }
470240
+ /**
470241
+ * 检查图层实例是否匹配配置
470242
+ */
470243
+ isLayerMatch(layer2, config) {
470244
+ var _a3;
470245
+ if (((_a3 = layer2.values_) == null ? void 0 : _a3.layerId) && config.id === layer2.values_.layerId) {
470246
+ return true;
470247
+ }
470248
+ if (layer2.layerId && config.id === layer2.layerId) {
470249
+ return true;
470250
+ }
470251
+ if (layer2.layerName && config.name === layer2.layerName) {
470252
+ return true;
470253
+ }
470254
+ if (layer2.get && layer2.get("id") === config.id) {
470255
+ return true;
470256
+ }
470257
+ if (layer2.get && layer2.get("name") === config.name) {
470258
+ return true;
470259
+ }
470260
+ return false;
470189
470261
  }
470190
470262
  /**
470191
470263
  * 初始化地图
@@ -470304,7 +470376,7 @@ ${this.attributes_.map(
470304
470376
  const initialCenter = this.config.center || [116.404, 39.915];
470305
470377
  const initialZoom = this.config.zoom || 10;
470306
470378
  this.mapOperationTool = new MapOperationTool(this.map, initialCenter, initialZoom);
470307
- this.geoJsonLocationTool = new GeoJSONLocationTool(this.map);
470379
+ this.geoJsonLocationTool = new GeoJSONLocationTool(this.map, this.featureHighlightManager);
470308
470380
  const popupConfig = this.config.popupConfig || {};
470309
470381
  this.popupManager = new PopupManager(this.map, popupConfig);
470310
470382
  this.bindEventManagerEvents();
@@ -470910,13 +470982,13 @@ ${this.attributes_.map(
470910
470982
  this.map = null;
470911
470983
  }
470912
470984
  }
470913
- const _hoisted_1$l = ["id"];
470914
- const _hoisted_2$j = {
470985
+ const _hoisted_1$m = ["id"];
470986
+ const _hoisted_2$k = {
470915
470987
  class: "absolute top-0 left-0 w-full h-full z-2000",
470916
470988
  "element-loading-text": "地图加载中...",
470917
470989
  "element-loading-background": "rgba(0, 0, 0, 0.3)"
470918
470990
  };
470919
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
470991
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
470920
470992
  __name: "MapContainer",
470921
470993
  props: {
470922
470994
  config: {},
@@ -471099,8 +471171,8 @@ ${this.attributes_.map(
471099
471171
  vue.createElementVNode("div", {
471100
471172
  id: mapId.value,
471101
471173
  class: "w-full h-full bg-gray-100"
471102
- }, null, 8, _hoisted_1$l),
471103
- vue.withDirectives(vue.createElementVNode("div", _hoisted_2$j, null, 512), [
471174
+ }, null, 8, _hoisted_1$m),
471175
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_2$k, null, 512), [
471104
471176
  [vue.vShow, _ctx.loading],
471105
471177
  [_directive_loading, _ctx.loading]
471106
471178
  ])
@@ -471109,8 +471181,8 @@ ${this.attributes_.map(
471109
471181
  }
471110
471182
  });
471111
471183
  const MapContainer_vue_vue_type_style_index_0_lang = "";
471112
- const _hoisted_1$k = ["href"];
471113
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
471184
+ const _hoisted_1$l = ["href"];
471185
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
471114
471186
  __name: "index",
471115
471187
  props: {
471116
471188
  prefix: { default: "icon" },
@@ -471128,7 +471200,7 @@ ${this.attributes_.map(
471128
471200
  class: computedClass.value,
471129
471201
  "aria-hidden": "true"
471130
471202
  }, _ctx.$attrs), [
471131
- vue.createElementVNode("use", { href: symbolId.value }, null, 8, _hoisted_1$k)
471203
+ vue.createElementVNode("use", { href: symbolId.value }, null, 8, _hoisted_1$l)
471132
471204
  ], 16);
471133
471205
  };
471134
471206
  }
@@ -471329,14 +471401,14 @@ ${this.attributes_.map(
471329
471401
  }
471330
471402
  const dialogCacheManager = new DialogCacheManager();
471331
471403
  const dialogCacheManager$1 = dialogCacheManager;
471332
- const _hoisted_1$j = { class: "text-base font-semibold text-gray-800 flex-1 overflow-hidden text-ellipsis whitespace-nowrap" };
471333
- const _hoisted_2$i = { class: "flex items-center gap-2" };
471334
- const _hoisted_3$i = { class: "flex-1 overflow-auto min-h-0 h-0" };
471335
- const _hoisted_4$i = {
471404
+ const _hoisted_1$k = { class: "text-base font-semibold text-gray-800 flex-1 overflow-hidden text-ellipsis whitespace-nowrap" };
471405
+ const _hoisted_2$j = { class: "flex items-center gap-2" };
471406
+ const _hoisted_3$j = { class: "flex-1 overflow-auto min-h-0 h-0" };
471407
+ const _hoisted_4$j = {
471336
471408
  key: 0,
471337
471409
  class: "px-5 py-4 border-t border-gray-200 bg-gray-50 flex justify-end gap-3"
471338
471410
  };
471339
- const _hoisted_5$i = ["onMousedown"];
471411
+ const _hoisted_5$j = ["onMousedown"];
471340
471412
  const _hoisted_6$f = { class: "text-base font-semibold text-gray-800 flex-1 overflow-hidden text-ellipsis whitespace-nowrap" };
471341
471413
  const _hoisted_7$d = { class: "flex items-center gap-2" };
471342
471414
  const _hoisted_8$a = { class: "flex-1 overflow-auto min-h-0 h-0" };
@@ -471348,7 +471420,7 @@ ${this.attributes_.map(
471348
471420
  key: 1,
471349
471421
  class: "absolute top-0 left-0 w-full h-full pointer-events-none"
471350
471422
  };
471351
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
471423
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
471352
471424
  ...{
471353
471425
  inheritAttrs: false
471354
471426
  },
@@ -471839,12 +471911,12 @@ ${this.attributes_.map(
471839
471911
  class: vue.normalizeClass(["flex items-center justify-between px-5 py-4 border-b border-gray-200 bg-gray-50", { "cursor-move": _ctx.draggable && !isFullscreen.value }]),
471840
471912
  onMousedown: startDrag
471841
471913
  }, [
471842
- vue.createElementVNode("div", _hoisted_1$j, [
471914
+ vue.createElementVNode("div", _hoisted_1$k, [
471843
471915
  vue.renderSlot(_ctx.$slots, "title", {}, () => [
471844
471916
  vue.createTextVNode(vue.toDisplayString(_ctx.title), 1)
471845
471917
  ])
471846
471918
  ]),
471847
- vue.createElementVNode("div", _hoisted_2$i, [
471919
+ vue.createElementVNode("div", _hoisted_2$j, [
471848
471920
  _ctx.showFullscreen ? (vue.openBlock(), vue.createBlock(vue.unref(ElButton), {
471849
471921
  key: 0,
471850
471922
  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",
@@ -471852,7 +471924,7 @@ ${this.attributes_.map(
471852
471924
  title: isFullscreen.value ? "退出全屏" : "全屏"
471853
471925
  }, {
471854
471926
  default: vue.withCtx(() => [
471855
- vue.createVNode(_sfc_main$l, {
471927
+ vue.createVNode(_sfc_main$m, {
471856
471928
  name: isFullscreen.value ? "exit-fullscreen" : "fullscreen"
471857
471929
  }, null, 8, ["name"])
471858
471930
  ]),
@@ -471865,16 +471937,16 @@ ${this.attributes_.map(
471865
471937
  title: "关闭"
471866
471938
  }, {
471867
471939
  default: vue.withCtx(() => [
471868
- vue.createVNode(_sfc_main$l, { name: "close" })
471940
+ vue.createVNode(_sfc_main$m, { name: "close" })
471869
471941
  ]),
471870
471942
  _: 1
471871
471943
  })) : vue.createCommentVNode("", true)
471872
471944
  ])
471873
471945
  ], 34),
471874
- vue.createElementVNode("div", _hoisted_3$i, [
471946
+ vue.createElementVNode("div", _hoisted_3$j, [
471875
471947
  vue.renderSlot(_ctx.$slots, "default")
471876
471948
  ]),
471877
- _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$i, [
471949
+ _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$j, [
471878
471950
  vue.renderSlot(_ctx.$slots, "footer")
471879
471951
  ])) : vue.createCommentVNode("", true),
471880
471952
  _ctx.resizable && !isFullscreen.value ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(resizeDirections, (direction2) => {
@@ -471882,7 +471954,7 @@ ${this.attributes_.map(
471882
471954
  key: direction2,
471883
471955
  class: vue.normalizeClass(`absolute bg-transparent z-10 pointer-events-auto resize-${direction2}`),
471884
471956
  onMousedown: ($event) => startResize($event, direction2)
471885
- }, null, 42, _hoisted_5$i);
471957
+ }, null, 42, _hoisted_5$j);
471886
471958
  }), 64)) : vue.createCommentVNode("", true)
471887
471959
  ], 16)
471888
471960
  ], 6)) : vue.createCommentVNode("", true)
@@ -471935,7 +472007,7 @@ ${this.attributes_.map(
471935
472007
  title: isFullscreen.value ? "退出全屏" : "全屏"
471936
472008
  }, {
471937
472009
  default: vue.withCtx(() => [
471938
- vue.createVNode(_sfc_main$l, {
472010
+ vue.createVNode(_sfc_main$m, {
471939
472011
  name: isFullscreen.value ? "exit-fullscreen" : "fullscreen"
471940
472012
  }, null, 8, ["name"])
471941
472013
  ]),
@@ -471948,7 +472020,7 @@ ${this.attributes_.map(
471948
472020
  title: "关闭"
471949
472021
  }, {
471950
472022
  default: vue.withCtx(() => [
471951
- vue.createVNode(_sfc_main$l, { name: "close" })
472023
+ vue.createVNode(_sfc_main$m, { name: "close" })
471952
472024
  ]),
471953
472025
  _: 1
471954
472026
  })) : vue.createCommentVNode("", true)
@@ -472010,13 +472082,13 @@ ${this.attributes_.map(
472010
472082
  const tencentVecUrl = "data:image/png;base64,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";
472011
472083
  const osmUrl = "data:image/png;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iI2YyZjJmMiIvPgogIDxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiNjY2NjY2MiIHN0cm9rZS13aWR0aD0iMSIvPgogIDxwYXRoIGQ9Ik0yMCAzMCBMNDAgMjAgTDYwIDM1IEw4MCAyNSBMODAgNzAgTDYwIDc1IEw0MCA2MCBMMjAgNzAgWiIgZmlsbD0iIzdkZDNjMCIgc3Ryb2tlPSIjNWNiM2EwIiBzdHJva2Utd2lkdGg9IjEiLz4KICA8Y2lyY2xlIGN4PSIzNSIgY3k9IjQ1IiByPSIzIiBmaWxsPSIjZmY2YjZiIi8+CiAgPGNpcmNsZSBjeD0iNTUiIGN5PSIzNSIgcj0iMiIgZmlsbD0iIzRlY2RjNCIvPgogIDxjaXJjbGUgY3g9IjY1IiBjeT0iNTUiIHI9IjIiIGZpbGw9IiM0NWI3ZDEiLz4KICA8dGV4dCB4PSI1MCIgeT0iOTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iIzY2NiI+T1NNPC90ZXh0Pgo8L3N2Zz4=";
472012
472084
  const customBlueUrl = "data:image/png;base64,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";
472013
- const _hoisted_1$i = { class: "basemap-content" };
472014
- const _hoisted_2$h = { class: "basemap-grid" };
472015
- const _hoisted_3$h = ["onClick"];
472016
- const _hoisted_4$h = { class: "basemap-preview" };
472017
- const _hoisted_5$h = ["src", "alt"];
472085
+ const _hoisted_1$j = { class: "basemap-content" };
472086
+ const _hoisted_2$i = { class: "basemap-grid" };
472087
+ const _hoisted_3$i = ["onClick"];
472088
+ const _hoisted_4$i = { class: "basemap-preview" };
472089
+ const _hoisted_5$i = ["src", "alt"];
472018
472090
  const _hoisted_6$e = { class: "basemap-name" };
472019
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
472091
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
472020
472092
  __name: "BasemapPanel",
472021
472093
  props: {
472022
472094
  modelValue: { type: Boolean }
@@ -472231,7 +472303,7 @@ ${this.attributes_.map(
472231
472303
  }
472232
472304
  };
472233
472305
  return (_ctx, _cache) => {
472234
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
472306
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
472235
472307
  modelValue: visible.value,
472236
472308
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
472237
472309
  title: "底图选择",
@@ -472247,23 +472319,23 @@ ${this.attributes_.map(
472247
472319
  onClose: handleClose
472248
472320
  }, {
472249
472321
  default: vue.withCtx(() => [
472250
- vue.createElementVNode("div", _hoisted_1$i, [
472251
- vue.createElementVNode("div", _hoisted_2$h, [
472322
+ vue.createElementVNode("div", _hoisted_1$j, [
472323
+ vue.createElementVNode("div", _hoisted_2$i, [
472252
472324
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(displayBasemaps.value, (basemap) => {
472253
472325
  return vue.openBlock(), vue.createElementBlock("div", {
472254
472326
  key: basemap.id,
472255
472327
  class: vue.normalizeClass(["basemap-item", { active: selectedBasemap.value === basemap.id }]),
472256
472328
  onClick: ($event) => selectBasemap(basemap)
472257
472329
  }, [
472258
- vue.createElementVNode("div", _hoisted_4$h, [
472330
+ vue.createElementVNode("div", _hoisted_4$i, [
472259
472331
  vue.createElementVNode("img", {
472260
472332
  src: basemap.thumbnail,
472261
472333
  alt: basemap.name,
472262
472334
  loading: "lazy"
472263
- }, null, 8, _hoisted_5$h)
472335
+ }, null, 8, _hoisted_5$i)
472264
472336
  ]),
472265
472337
  vue.createElementVNode("div", _hoisted_6$e, vue.toDisplayString(basemap.name), 1)
472266
- ], 10, _hoisted_3$h);
472338
+ ], 10, _hoisted_3$i);
472267
472339
  }), 128))
472268
472340
  ])
472269
472341
  ])
@@ -472605,15 +472677,15 @@ ${this.attributes_.map(
472605
472677
  function createOverviewMapUtil() {
472606
472678
  return new OverviewMapUtil();
472607
472679
  }
472608
- const _hoisted_1$h = { class: "measurement-content h-full flex flex-col" };
472609
- const _hoisted_2$g = { class: "measurement-header flex justify-between items-center px-6 py-4" };
472610
- const _hoisted_3$g = { class: "measurement-result py-8 text-center" };
472611
- const _hoisted_4$g = { class: "result-value" };
472612
- const _hoisted_5$g = { class: "tool-grid flex-1 py-5" };
472680
+ const _hoisted_1$i = { class: "measurement-content h-full flex flex-col" };
472681
+ const _hoisted_2$h = { class: "measurement-header flex justify-between items-center px-6 py-4" };
472682
+ const _hoisted_3$h = { class: "measurement-result py-8 text-center" };
472683
+ const _hoisted_4$h = { class: "result-value" };
472684
+ const _hoisted_5$h = { class: "tool-grid flex-1 py-5" };
472613
472685
  const _hoisted_6$d = ["onClick"];
472614
472686
  const _hoisted_7$c = ["src", "alt"];
472615
472687
  const _hoisted_8$9 = { class: "tool-label" };
472616
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
472688
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
472617
472689
  __name: "MeasurementDialog",
472618
472690
  props: {
472619
472691
  modelValue: { type: Boolean }
@@ -472845,7 +472917,7 @@ ${this.attributes_.map(
472845
472917
  const _component_el_option_group = vue.resolveComponent("el-option-group");
472846
472918
  const _component_el_select = vue.resolveComponent("el-select");
472847
472919
  const _component_el_button = vue.resolveComponent("el-button");
472848
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
472920
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
472849
472921
  modelValue: dialogVisible.value,
472850
472922
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => dialogVisible.value = $event),
472851
472923
  title: "图上量算",
@@ -472855,8 +472927,8 @@ ${this.attributes_.map(
472855
472927
  cacheId: "measurement-dialog"
472856
472928
  }, {
472857
472929
  default: vue.withCtx(() => [
472858
- vue.createElementVNode("div", _hoisted_1$h, [
472859
- vue.createElementVNode("div", _hoisted_2$g, [
472930
+ vue.createElementVNode("div", _hoisted_1$i, [
472931
+ vue.createElementVNode("div", _hoisted_2$h, [
472860
472932
  vue.createVNode(_component_el_select, {
472861
472933
  modelValue: selectedUnit.value,
472862
472934
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedUnit.value = $event),
@@ -472924,10 +472996,10 @@ ${this.attributes_.map(
472924
472996
  _: 1
472925
472997
  })
472926
472998
  ]),
472927
- vue.createElementVNode("div", _hoisted_3$g, [
472928
- vue.createElementVNode("div", _hoisted_4$g, vue.toDisplayString(getDisplayValue()), 1)
472999
+ vue.createElementVNode("div", _hoisted_3$h, [
473000
+ vue.createElementVNode("div", _hoisted_4$h, vue.toDisplayString(getDisplayValue()), 1)
472929
473001
  ]),
472930
- vue.createElementVNode("div", _hoisted_5$g, [
473002
+ vue.createElementVNode("div", _hoisted_5$h, [
472931
473003
  (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(measurementTools, (tool) => {
472932
473004
  return vue.createElementVNode("div", {
472933
473005
  key: tool.type,
@@ -472958,13 +473030,13 @@ ${this.attributes_.map(
472958
473030
  }
472959
473031
  return target;
472960
473032
  };
472961
- const MeasurementDialog = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-d868b567"]]);
472962
- const _hoisted_1$g = { class: "coordinate-content" };
472963
- const _hoisted_2$f = { class: "format-selection" };
472964
- const _hoisted_3$f = { class: "format-options" };
472965
- const _hoisted_4$f = { class: "coordinate-input" };
472966
- const _hoisted_5$f = { class: "dialog-footer" };
472967
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
473033
+ const MeasurementDialog = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-d868b567"]]);
473034
+ const _hoisted_1$h = { class: "coordinate-content" };
473035
+ const _hoisted_2$g = { class: "format-selection" };
473036
+ const _hoisted_3$g = { class: "format-options" };
473037
+ const _hoisted_4$g = { class: "coordinate-input" };
473038
+ const _hoisted_5$g = { class: "dialog-footer" };
473039
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
472968
473040
  __name: "CoordinateLocationDialog",
472969
473041
  props: {
472970
473042
  modelValue: { type: Boolean }
@@ -473114,7 +473186,7 @@ ${this.attributes_.map(
473114
473186
  const _component_el_form_item = vue.resolveComponent("el-form-item");
473115
473187
  const _component_el_form = vue.resolveComponent("el-form");
473116
473188
  const _component_el_button = vue.resolveComponent("el-button");
473117
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
473189
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
473118
473190
  modelValue: dialogVisible.value,
473119
473191
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => dialogVisible.value = $event),
473120
473192
  title: "坐标拾取",
@@ -473125,7 +473197,7 @@ ${this.attributes_.map(
473125
473197
  class: "coordinate-dialog"
473126
473198
  }, {
473127
473199
  footer: vue.withCtx(() => [
473128
- vue.createElementVNode("div", _hoisted_5$f, [
473200
+ vue.createElementVNode("div", _hoisted_5$g, [
473129
473201
  vue.createVNode(_component_el_button, {
473130
473202
  type: "primary",
473131
473203
  onClick: getCurrentLocation
@@ -473147,10 +473219,10 @@ ${this.attributes_.map(
473147
473219
  ])
473148
473220
  ]),
473149
473221
  default: vue.withCtx(() => [
473150
- vue.createElementVNode("div", _hoisted_1$g, [
473151
- vue.createElementVNode("div", _hoisted_2$f, [
473222
+ vue.createElementVNode("div", _hoisted_1$h, [
473223
+ vue.createElementVNode("div", _hoisted_2$g, [
473152
473224
  _cache[6] || (_cache[6] = vue.createElementVNode("div", { class: "format-title" }, "坐标格式", -1)),
473153
- vue.createElementVNode("div", _hoisted_3$f, [
473225
+ vue.createElementVNode("div", _hoisted_3$g, [
473154
473226
  vue.createVNode(_component_el_radio_group, {
473155
473227
  modelValue: selectedFormat.value,
473156
473228
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedFormat.value = $event),
@@ -473174,7 +473246,7 @@ ${this.attributes_.map(
473174
473246
  }, 8, ["modelValue"])
473175
473247
  ])
473176
473248
  ]),
473177
- vue.createElementVNode("div", _hoisted_4$f, [
473249
+ vue.createElementVNode("div", _hoisted_4$g, [
473178
473250
  vue.createVNode(_component_el_form, {
473179
473251
  model: coordinateForm,
473180
473252
  "label-width": "60px"
@@ -473216,14 +473288,14 @@ ${this.attributes_.map(
473216
473288
  }
473217
473289
  });
473218
473290
  const CoordinateLocationDialog_vue_vue_type_style_index_0_lang = "";
473219
- const _hoisted_1$f = { class: "region-content" };
473220
- const _hoisted_2$e = {
473291
+ const _hoisted_1$g = { class: "region-content" };
473292
+ const _hoisted_2$f = {
473221
473293
  key: 0,
473222
473294
  class: "region-categories"
473223
473295
  };
473224
- const _hoisted_3$e = { class: "region-group" };
473225
- const _hoisted_4$e = { class: "region-items" };
473226
- const _hoisted_5$e = { class: "region-group" };
473296
+ const _hoisted_3$f = { class: "region-group" };
473297
+ const _hoisted_4$f = { class: "region-items" };
473298
+ const _hoisted_5$f = { class: "region-group" };
473227
473299
  const _hoisted_6$c = { class: "region-items" };
473228
473300
  const _hoisted_7$b = { class: "region-group" };
473229
473301
  const _hoisted_8$8 = { class: "region-items" };
@@ -473242,7 +473314,7 @@ ${this.attributes_.map(
473242
473314
  class: "sub-regions"
473243
473315
  };
473244
473316
  const _hoisted_20$4 = { class: "district-grid" };
473245
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
473317
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
473246
473318
  __name: "RegionNavigationDialog",
473247
473319
  props: {
473248
473320
  modelValue: { type: Boolean }
@@ -474327,7 +474399,7 @@ ${this.attributes_.map(
474327
474399
  const _component_el_button = vue.resolveComponent("el-button");
474328
474400
  const _component_el_tab_pane = vue.resolveComponent("el-tab-pane");
474329
474401
  const _component_el_tabs = vue.resolveComponent("el-tabs");
474330
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
474402
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
474331
474403
  modelValue: dialogVisible.value,
474332
474404
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => dialogVisible.value = $event),
474333
474405
  title: "地区导航",
@@ -474338,7 +474410,7 @@ ${this.attributes_.map(
474338
474410
  class: "region-dialog"
474339
474411
  }, {
474340
474412
  default: vue.withCtx(() => [
474341
- vue.createElementVNode("div", _hoisted_1$f, [
474413
+ vue.createElementVNode("div", _hoisted_1$g, [
474342
474414
  vue.createVNode(_component_el_tabs, {
474343
474415
  modelValue: activeTab.value,
474344
474416
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTab.value = $event),
@@ -474356,10 +474428,10 @@ ${this.attributes_.map(
474356
474428
  closable: index2 > 0
474357
474429
  }, {
474358
474430
  default: vue.withCtx(() => [
474359
- tab.name === "china" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e, [
474360
- vue.createElementVNode("div", _hoisted_3$e, [
474431
+ tab.name === "china" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, [
474432
+ vue.createElementVNode("div", _hoisted_3$f, [
474361
474433
  _cache[2] || (_cache[2] = vue.createElementVNode("div", { class: "group-title" }, "华北", -1)),
474362
- vue.createElementVNode("div", _hoisted_4$e, [
474434
+ vue.createElementVNode("div", _hoisted_4$f, [
474363
474435
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(regions.north, (region) => {
474364
474436
  return vue.openBlock(), vue.createBlock(_component_el_button, {
474365
474437
  key: region.code,
@@ -474375,7 +474447,7 @@ ${this.attributes_.map(
474375
474447
  }), 128))
474376
474448
  ])
474377
474449
  ]),
474378
- vue.createElementVNode("div", _hoisted_5$e, [
474450
+ vue.createElementVNode("div", _hoisted_5$f, [
474379
474451
  _cache[3] || (_cache[3] = vue.createElementVNode("div", { class: "group-title" }, "东北", -1)),
474380
474452
  vue.createElementVNode("div", _hoisted_6$c, [
474381
474453
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(regions.northeast, (region) => {
@@ -474532,12 +474604,12 @@ ${this.attributes_.map(
474532
474604
  }
474533
474605
  });
474534
474606
  const RegionNavigationDialog_vue_vue_type_style_index_0_lang = "";
474535
- const _hoisted_1$e = { class: "markers-content" };
474536
- const _hoisted_2$d = { class: "toolbar" };
474537
- const _hoisted_3$d = { class: "search-filter" };
474538
- const _hoisted_4$d = { class: "markers-list" };
474539
- const _hoisted_5$d = { class: "marker-name" };
474540
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
474607
+ const _hoisted_1$f = { class: "markers-content" };
474608
+ const _hoisted_2$e = { class: "toolbar" };
474609
+ const _hoisted_3$e = { class: "search-filter" };
474610
+ const _hoisted_4$e = { class: "markers-list" };
474611
+ const _hoisted_5$e = { class: "marker-name" };
474612
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
474541
474613
  __name: "MyMarkersDialog",
474542
474614
  props: {
474543
474615
  modelValue: { type: Boolean }
@@ -474863,7 +474935,7 @@ ${this.attributes_.map(
474863
474935
  const _component_el_form_item = vue.resolveComponent("el-form-item");
474864
474936
  const _component_el_form = vue.resolveComponent("el-form");
474865
474937
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
474866
- vue.createVNode(_sfc_main$k, {
474938
+ vue.createVNode(_sfc_main$l, {
474867
474939
  modelValue: dialogVisible.value,
474868
474940
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => dialogVisible.value = $event),
474869
474941
  title: "我的标记",
@@ -474874,8 +474946,8 @@ ${this.attributes_.map(
474874
474946
  class: "markers-dialog"
474875
474947
  }, {
474876
474948
  default: vue.withCtx(() => [
474877
- vue.createElementVNode("div", _hoisted_1$e, [
474878
- vue.createElementVNode("div", _hoisted_2$d, [
474949
+ vue.createElementVNode("div", _hoisted_1$f, [
474950
+ vue.createElementVNode("div", _hoisted_2$e, [
474879
474951
  vue.createVNode(_component_el_button, {
474880
474952
  type: "primary",
474881
474953
  icon: vue.unref(plus_default),
@@ -474916,7 +474988,7 @@ ${this.attributes_.map(
474916
474988
  _: 1
474917
474989
  }, 8, ["icon", "disabled"])
474918
474990
  ]),
474919
- vue.createElementVNode("div", _hoisted_3$d, [
474991
+ vue.createElementVNode("div", _hoisted_3$e, [
474920
474992
  vue.createVNode(_component_el_input, {
474921
474993
  modelValue: searchKeyword.value,
474922
474994
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchKeyword.value = $event),
@@ -474949,7 +475021,7 @@ ${this.attributes_.map(
474949
475021
  _: 1
474950
475022
  }, 8, ["modelValue"])
474951
475023
  ]),
474952
- vue.createElementVNode("div", _hoisted_4$d, [
475024
+ vue.createElementVNode("div", _hoisted_4$e, [
474953
475025
  vue.createVNode(_component_el_table, {
474954
475026
  data: filteredMarkers.value,
474955
475027
  height: "300",
@@ -474963,7 +475035,7 @@ ${this.attributes_.map(
474963
475035
  width: "120"
474964
475036
  }, {
474965
475037
  default: vue.withCtx(({ row }) => [
474966
- vue.createElementVNode("div", _hoisted_5$d, [
475038
+ vue.createElementVNode("div", _hoisted_5$e, [
474967
475039
  vue.createVNode(_component_el_icon, {
474968
475040
  color: row.color,
474969
475041
  size: "16"
@@ -475037,7 +475109,7 @@ ${this.attributes_.map(
475037
475109
  ]),
475038
475110
  _: 1
475039
475111
  }, 8, ["modelValue"]),
475040
- vue.createVNode(_sfc_main$k, {
475112
+ vue.createVNode(_sfc_main$l, {
475041
475113
  modelValue: showAddDialog.value,
475042
475114
  "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => showAddDialog.value = $event),
475043
475115
  title: "添加标记",
@@ -475109,11 +475181,11 @@ ${this.attributes_.map(
475109
475181
  }
475110
475182
  });
475111
475183
  const MyMarkersDialog_vue_vue_type_style_index_0_lang = "";
475112
- const _hoisted_1$d = { class: "bookmarks-content" };
475113
- const _hoisted_2$c = { class: "toolbar" };
475114
- const _hoisted_3$c = { class: "search-filter" };
475115
- const _hoisted_4$c = { class: "bookmarks-grid" };
475116
- const _hoisted_5$c = ["onClick"];
475184
+ const _hoisted_1$e = { class: "bookmarks-content" };
475185
+ const _hoisted_2$d = { class: "toolbar" };
475186
+ const _hoisted_3$d = { class: "search-filter" };
475187
+ const _hoisted_4$d = { class: "bookmarks-grid" };
475188
+ const _hoisted_5$d = ["onClick"];
475117
475189
  const _hoisted_6$b = { class: "bookmark-thumbnail" };
475118
475190
  const _hoisted_7$a = { class: "thumbnail-placeholder" };
475119
475191
  const _hoisted_8$7 = { class: "bookmark-overlay" };
@@ -475135,7 +475207,7 @@ ${this.attributes_.map(
475135
475207
  class: "statistics"
475136
475208
  };
475137
475209
  const _hoisted_20$3 = { class: "dialog-footer" };
475138
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
475210
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
475139
475211
  __name: "ViewBookmarksDialog",
475140
475212
  props: {
475141
475213
  modelValue: { type: Boolean }
@@ -475394,7 +475466,7 @@ ${this.attributes_.map(
475394
475466
  const _component_el_form_item = vue.resolveComponent("el-form-item");
475395
475467
  const _component_el_slider = vue.resolveComponent("el-slider");
475396
475468
  const _component_el_form = vue.resolveComponent("el-form");
475397
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
475469
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
475398
475470
  modelValue: dialogVisible.value,
475399
475471
  "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => dialogVisible.value = $event),
475400
475472
  title: "视角书签",
@@ -475415,8 +475487,8 @@ ${this.attributes_.map(
475415
475487
  ])
475416
475488
  ]),
475417
475489
  default: vue.withCtx(() => [
475418
- vue.createElementVNode("div", _hoisted_1$d, [
475419
- vue.createElementVNode("div", _hoisted_2$c, [
475490
+ vue.createElementVNode("div", _hoisted_1$e, [
475491
+ vue.createElementVNode("div", _hoisted_2$d, [
475420
475492
  vue.createVNode(_component_el_button, {
475421
475493
  type: "primary",
475422
475494
  icon: vue.unref(plus_default),
@@ -475456,7 +475528,7 @@ ${this.attributes_.map(
475456
475528
  _: 1
475457
475529
  }, 8, ["icon", "disabled"])
475458
475530
  ]),
475459
- vue.createElementVNode("div", _hoisted_3$c, [
475531
+ vue.createElementVNode("div", _hoisted_3$d, [
475460
475532
  vue.createVNode(_component_el_input, {
475461
475533
  modelValue: searchKeyword.value,
475462
475534
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchKeyword.value = $event),
@@ -475511,7 +475583,7 @@ ${this.attributes_.map(
475511
475583
  _: 1
475512
475584
  }, 8, ["modelValue"])
475513
475585
  ]),
475514
- vue.createElementVNode("div", _hoisted_4$c, [
475586
+ vue.createElementVNode("div", _hoisted_4$d, [
475515
475587
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredBookmarks.value, (bookmark, index2) => {
475516
475588
  return vue.openBlock(), vue.createElementBlock("div", {
475517
475589
  key: bookmark.id,
@@ -475607,7 +475679,7 @@ ${this.attributes_.map(
475607
475679
  ]),
475608
475680
  vue.createElementVNode("div", _hoisted_17$4, vue.toDisplayString(formatTime(bookmark.createTime)), 1)
475609
475681
  ])
475610
- ], 8, _hoisted_5$c);
475682
+ ], 8, _hoisted_5$d);
475611
475683
  }), 128))
475612
475684
  ]),
475613
475685
  filteredBookmarks.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_18$4, [
@@ -475670,7 +475742,7 @@ ${this.attributes_.map(
475670
475742
  })
475671
475743
  ])) : vue.createCommentVNode("", true)
475672
475744
  ]),
475673
- vue.createVNode(_sfc_main$k, {
475745
+ vue.createVNode(_sfc_main$l, {
475674
475746
  modelValue: showBookmarkForm.value,
475675
475747
  "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => showBookmarkForm.value = $event),
475676
475748
  title: editingIndex.value >= 0 ? "编辑书签" : "保存视角书签",
@@ -475825,11 +475897,11 @@ ${this.attributes_.map(
475825
475897
  }
475826
475898
  });
475827
475899
  const ViewBookmarksDialog_vue_vue_type_style_index_0_lang = "";
475828
- const _hoisted_1$c = { class: "py-2.5" };
475829
- const _hoisted_2$b = { class: "h-150 overflow-y-auto" };
475830
- const _hoisted_3$b = { class: "flex items-center justify-between" };
475831
- const _hoisted_4$b = { class: "mb-5" };
475832
- const _hoisted_5$b = { class: "mb-3" };
475900
+ const _hoisted_1$d = { class: "py-2.5" };
475901
+ const _hoisted_2$c = { class: "h-150 overflow-y-auto" };
475902
+ const _hoisted_3$c = { class: "flex items-center justify-between" };
475903
+ const _hoisted_4$c = { class: "mb-5" };
475904
+ const _hoisted_5$c = { class: "mb-3" };
475833
475905
  const _hoisted_6$a = {
475834
475906
  key: 0,
475835
475907
  class: "mb-3"
@@ -475914,7 +475986,7 @@ ${this.attributes_.map(
475914
475986
  const _hoisted_45 = { key: 0 };
475915
475987
  const _hoisted_46 = { key: 0 };
475916
475988
  const _hoisted_47 = { class: "text-right" };
475917
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
475989
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
475918
475990
  __name: "MapPrintDialog",
475919
475991
  props: {
475920
475992
  modelValue: { type: Boolean },
@@ -476293,7 +476365,7 @@ ${this.attributes_.map(
476293
476365
  const _component_el_col = vue.resolveComponent("el-col");
476294
476366
  const _component_el_button_group = vue.resolveComponent("el-button-group");
476295
476367
  const _component_el_row = vue.resolveComponent("el-row");
476296
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
476368
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
476297
476369
  modelValue: dialogVisible.value,
476298
476370
  "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => dialogVisible.value = $event),
476299
476371
  title: "地图打印",
@@ -476331,15 +476403,15 @@ ${this.attributes_.map(
476331
476403
  ])
476332
476404
  ]),
476333
476405
  default: vue.withCtx(() => [
476334
- vue.createElementVNode("div", _hoisted_1$c, [
476406
+ vue.createElementVNode("div", _hoisted_1$d, [
476335
476407
  vue.createVNode(_component_el_row, { gutter: 20 }, {
476336
476408
  default: vue.withCtx(() => [
476337
476409
  vue.createVNode(_component_el_col, { span: 8 }, {
476338
476410
  default: vue.withCtx(() => [
476339
- vue.createElementVNode("div", _hoisted_2$b, [
476411
+ vue.createElementVNode("div", _hoisted_2$c, [
476340
476412
  vue.createVNode(_component_el_card, { shadow: "hover" }, {
476341
476413
  header: vue.withCtx(() => [
476342
- vue.createElementVNode("div", _hoisted_3$b, [
476414
+ vue.createElementVNode("div", _hoisted_3$c, [
476343
476415
  _cache[18] || (_cache[18] = vue.createElementVNode("span", null, "打印设置", -1)),
476344
476416
  vue.createVNode(_component_el_button, {
476345
476417
  type: "text",
@@ -476359,9 +476431,9 @@ ${this.attributes_.map(
476359
476431
  ])
476360
476432
  ]),
476361
476433
  default: vue.withCtx(() => [
476362
- vue.createElementVNode("div", _hoisted_4$b, [
476434
+ vue.createElementVNode("div", _hoisted_4$c, [
476363
476435
  _cache[21] || (_cache[21] = vue.createElementVNode("label", { class: "block text-sm font-medium text-gray-700 mb-2" }, "纸张设置", -1)),
476364
- vue.createElementVNode("div", _hoisted_5$b, [
476436
+ vue.createElementVNode("div", _hoisted_5$c, [
476365
476437
  vue.createVNode(_component_el_select, {
476366
476438
  modelValue: printSettings.paperSize,
476367
476439
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => printSettings.paperSize = $event),
@@ -476903,17 +476975,17 @@ ${this.attributes_.map(
476903
476975
  const MapPrintDialog_vue_vue_type_style_index_0_lang = "";
476904
476976
  const MarkTab_vue_vue_type_style_index_0_scoped_127b85ab_lang = "";
476905
476977
  const MarkTab_vue_vue_type_style_index_1_lang = "";
476906
- const _hoisted_1$b = { class: "mark-tab-container" };
476907
- const _hoisted_2$a = { class: "continuous-switch" };
476908
- const _hoisted_3$a = { class: "tools-grid" };
476909
- const _hoisted_4$a = ["onClick"];
476910
- const _hoisted_5$a = ["src"];
476978
+ const _hoisted_1$c = { class: "mark-tab-container" };
476979
+ const _hoisted_2$b = { class: "continuous-switch" };
476980
+ const _hoisted_3$b = { class: "tools-grid" };
476981
+ const _hoisted_4$b = ["onClick"];
476982
+ const _hoisted_5$b = ["src"];
476911
476983
  const _hoisted_6$9 = { class: "tool-label" };
476912
476984
  const _hoisted_7$8 = {
476913
476985
  key: 0,
476914
476986
  class: "stop-drawing-section"
476915
476987
  };
476916
- const _sfc_main$c = {
476988
+ const _sfc_main$d = {
476917
476989
  __name: "MarkTab",
476918
476990
  setup(__props) {
476919
476991
  const mapRef = vue.inject("map");
@@ -477436,7 +477508,7 @@ ${this.attributes_.map(
477436
477508
  const _component_el_select = vue.resolveComponent("el-select");
477437
477509
  const _component_el_switch = vue.resolveComponent("el-switch");
477438
477510
  const _component_el_button = vue.resolveComponent("el-button");
477439
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
477511
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
477440
477512
  vue.createVNode(_component_el_select, {
477441
477513
  modelValue: selectedType.value,
477442
477514
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedType.value = $event),
@@ -477454,7 +477526,7 @@ ${this.attributes_.map(
477454
477526
  ]),
477455
477527
  _: 1
477456
477528
  }, 8, ["modelValue"]),
477457
- vue.createElementVNode("div", _hoisted_2$a, [
477529
+ vue.createElementVNode("div", _hoisted_2$b, [
477458
477530
  _cache[2] || (_cache[2] = vue.createElementVNode("span", { class: "switch-label" }, "连续标绘模式", -1)),
477459
477531
  vue.createVNode(_component_el_switch, {
477460
477532
  modelValue: continuousDrawing.value,
@@ -477462,7 +477534,7 @@ ${this.attributes_.map(
477462
477534
  size: "small"
477463
477535
  }, null, 8, ["modelValue"])
477464
477536
  ]),
477465
- vue.createElementVNode("div", _hoisted_3$a, [
477537
+ vue.createElementVNode("div", _hoisted_3$b, [
477466
477538
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(currentTools.value, (tool, idx) => {
477467
477539
  return vue.openBlock(), vue.createElementBlock("div", {
477468
477540
  key: idx,
@@ -477474,12 +477546,12 @@ ${this.attributes_.map(
477474
477546
  src: tool.icon,
477475
477547
  class: "tool-image",
477476
477548
  alt: "tool icon"
477477
- }, null, 8, _hoisted_5$a)) : (vue.openBlock(), vue.createElementBlock("i", {
477549
+ }, null, 8, _hoisted_5$b)) : (vue.openBlock(), vue.createElementBlock("i", {
477478
477550
  key: 1,
477479
477551
  class: vue.normalizeClass([tool.icon, "tool-icon-large"])
477480
477552
  }, null, 2)),
477481
477553
  vue.createElementVNode("span", _hoisted_6$9, vue.toDisplayString(tool.label), 1)
477482
- ], 8, _hoisted_4$a);
477554
+ ], 8, _hoisted_4$b);
477483
477555
  }), 128))
477484
477556
  ]),
477485
477557
  activeDrawingTool.value && continuousDrawing.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$8, [
@@ -477499,19 +477571,19 @@ ${this.attributes_.map(
477499
477571
  };
477500
477572
  }
477501
477573
  };
477502
- const MarkTab = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-127b85ab"]]);
477574
+ const MarkTab = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-127b85ab"]]);
477503
477575
  const ListTab_vue_vue_type_style_index_0_scoped_1cc008ea_lang = "";
477504
- const _hoisted_1$a = { class: "list-tab-container" };
477505
- const _hoisted_2$9 = { class: "toolbar" };
477506
- const _hoisted_3$9 = { class: "toolbar-left" };
477507
- const _hoisted_4$9 = { class: "data-count" };
477508
- const _hoisted_5$9 = { class: "list-content" };
477576
+ const _hoisted_1$b = { class: "list-tab-container" };
477577
+ const _hoisted_2$a = { class: "toolbar" };
477578
+ const _hoisted_3$a = { class: "toolbar-left" };
477579
+ const _hoisted_4$a = { class: "data-count" };
477580
+ const _hoisted_5$a = { class: "list-content" };
477509
477581
  const _hoisted_6$8 = { class: "tree-node" };
477510
477582
  const _hoisted_7$7 = {
477511
477583
  key: 1,
477512
477584
  class: "empty-state"
477513
477585
  };
477514
- const _sfc_main$b = {
477586
+ const _sfc_main$c = {
477515
477587
  __name: "ListTab",
477516
477588
  setup(__props) {
477517
477589
  const groups = vue.ref([
@@ -477532,9 +477604,9 @@ ${this.attributes_.map(
477532
477604
  return (_ctx, _cache) => {
477533
477605
  const _component_el_button = vue.resolveComponent("el-button");
477534
477606
  const _component_el_tree = vue.resolveComponent("el-tree");
477535
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
477536
- vue.createElementVNode("div", _hoisted_2$9, [
477537
- vue.createElementVNode("div", _hoisted_3$9, [
477607
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
477608
+ vue.createElementVNode("div", _hoisted_2$a, [
477609
+ vue.createElementVNode("div", _hoisted_3$a, [
477538
477610
  _cache[2] || (_cache[2] = vue.createElementVNode("span", { class: "toolbar-title" }, "分组管理:", -1)),
477539
477611
  vue.createVNode(_component_el_button, {
477540
477612
  type: "primary",
@@ -477557,9 +477629,9 @@ ${this.attributes_.map(
477557
477629
  _: 1
477558
477630
  })
477559
477631
  ]),
477560
- vue.createElementVNode("div", _hoisted_4$9, "共" + vue.toDisplayString(groups.value.length) + "条数据", 1)
477632
+ vue.createElementVNode("div", _hoisted_4$a, "共" + vue.toDisplayString(groups.value.length) + "条数据", 1)
477561
477633
  ]),
477562
- vue.createElementVNode("div", _hoisted_5$9, [
477634
+ vue.createElementVNode("div", _hoisted_5$a, [
477563
477635
  groups.value.length ? (vue.openBlock(), vue.createBlock(_component_el_tree, {
477564
477636
  key: 0,
477565
477637
  data: groups.value,
@@ -477582,16 +477654,16 @@ ${this.attributes_.map(
477582
477654
  };
477583
477655
  }
477584
477656
  };
477585
- const ListTab = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-1cc008ea"]]);
477657
+ const ListTab = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-1cc008ea"]]);
477586
477658
  const index_vue_vue_type_style_index_0_scoped_16fc7a81_lang = "";
477587
- const _hoisted_1$9 = { class: "dialog-content" };
477588
- const _hoisted_2$8 = { class: "toolbar" };
477589
- const _hoisted_3$8 = { class: "toolbar-left" };
477590
- const _hoisted_4$8 = ["onClick"];
477591
- const _hoisted_5$8 = { class: "toolbar-right" };
477659
+ const _hoisted_1$a = { class: "dialog-content" };
477660
+ const _hoisted_2$9 = { class: "toolbar" };
477661
+ const _hoisted_3$9 = { class: "toolbar-left" };
477662
+ const _hoisted_4$9 = ["onClick"];
477663
+ const _hoisted_5$9 = { class: "toolbar-right" };
477592
477664
  const _hoisted_6$7 = ["onClick"];
477593
477665
  const _hoisted_7$6 = { class: "content-area" };
477594
- const _sfc_main$a = {
477666
+ const _sfc_main$b = {
477595
477667
  __name: "index",
477596
477668
  setup(__props) {
477597
477669
  const visible = vue.ref(true);
@@ -477653,9 +477725,9 @@ ${this.attributes_.map(
477653
477725
  onClose: handleClose
477654
477726
  }, {
477655
477727
  default: vue.withCtx(() => [
477656
- vue.createElementVNode("div", _hoisted_1$9, [
477657
- vue.createElementVNode("div", _hoisted_2$8, [
477658
- vue.createElementVNode("div", _hoisted_3$8, [
477728
+ vue.createElementVNode("div", _hoisted_1$a, [
477729
+ vue.createElementVNode("div", _hoisted_2$9, [
477730
+ vue.createElementVNode("div", _hoisted_3$9, [
477659
477731
  (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(leftTools, (tool, idx) => {
477660
477732
  return vue.createVNode(_component_el_tooltip, {
477661
477733
  key: idx,
@@ -477667,13 +477739,13 @@ ${this.attributes_.map(
477667
477739
  vue.createElementVNode("i", {
477668
477740
  class: vue.normalizeClass([tool.icon, "tool-icon"]),
477669
477741
  onClick: ($event) => handleToolClick(tool, "left", idx)
477670
- }, null, 10, _hoisted_4$8)
477742
+ }, null, 10, _hoisted_4$9)
477671
477743
  ]),
477672
477744
  _: 2
477673
477745
  }, 1032, ["content"]);
477674
477746
  }), 64))
477675
477747
  ]),
477676
- vue.createElementVNode("div", _hoisted_5$8, [
477748
+ vue.createElementVNode("div", _hoisted_5$9, [
477677
477749
  (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(rightTools, (tool, idx) => {
477678
477750
  return vue.createVNode(_component_el_tooltip, {
477679
477751
  key: idx,
@@ -477729,9 +477801,9 @@ ${this.attributes_.map(
477729
477801
  };
477730
477802
  }
477731
477803
  };
477732
- const MapDrawingDialog = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-16fc7a81"]]);
477733
- const _hoisted_1$8 = { class: "flex" };
477734
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
477804
+ const MapDrawingDialog = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-16fc7a81"]]);
477805
+ const _hoisted_1$9 = { class: "flex" };
477806
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
477735
477807
  __name: "MapToolbar",
477736
477808
  props: {
477737
477809
  config: { default: void 0 },
@@ -477922,7 +477994,7 @@ ${this.attributes_.map(
477922
477994
  class: "main-menu-item"
477923
477995
  }, {
477924
477996
  title: vue.withCtx(() => [
477925
- vue.createElementVNode("div", _hoisted_1$8, [
477997
+ vue.createElementVNode("div", _hoisted_1$9, [
477926
477998
  vue.createElementVNode("div", null, [
477927
477999
  vue.createVNode(_component_el_icon, null, {
477928
478000
  default: vue.withCtx(() => [
@@ -478099,7 +478171,7 @@ ${this.attributes_.map(
478099
478171
  ]),
478100
478172
  _: 1
478101
478173
  }, 8, ["default-active"]),
478102
- vue.createVNode(_sfc_main$j, {
478174
+ vue.createVNode(_sfc_main$k, {
478103
478175
  modelValue: showBasemapPanel.value,
478104
478176
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => showBasemapPanel.value = $event),
478105
478177
  config: props.config,
@@ -478110,28 +478182,28 @@ ${this.attributes_.map(
478110
478182
  modelValue: showMeasurement.value,
478111
478183
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showMeasurement.value = $event)
478112
478184
  }, null, 8, ["modelValue"]),
478113
- vue.createVNode(_sfc_main$h, {
478185
+ vue.createVNode(_sfc_main$i, {
478114
478186
  ref_key: "coordinateLocationDialogRef",
478115
478187
  ref: coordinateLocationDialogRef,
478116
478188
  modelValue: showCoordinateLocation.value,
478117
478189
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => showCoordinateLocation.value = $event)
478118
478190
  }, null, 8, ["modelValue"]),
478119
- vue.createVNode(_sfc_main$g, {
478191
+ vue.createVNode(_sfc_main$h, {
478120
478192
  modelValue: showRegionNavigation.value,
478121
478193
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => showRegionNavigation.value = $event),
478122
478194
  onNavigationAction: handleNavigationAction
478123
478195
  }, null, 8, ["modelValue"]),
478124
- vue.createVNode(_sfc_main$f, {
478196
+ vue.createVNode(_sfc_main$g, {
478125
478197
  modelValue: showMyMarkers.value,
478126
478198
  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => showMyMarkers.value = $event),
478127
478199
  onMarkerAction: handleMarkerAction
478128
478200
  }, null, 8, ["modelValue"]),
478129
- vue.createVNode(_sfc_main$e, {
478201
+ vue.createVNode(_sfc_main$f, {
478130
478202
  modelValue: showViewBookmarks.value,
478131
478203
  "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => showViewBookmarks.value = $event),
478132
478204
  onBookmarkAction: handleBookmarkAction
478133
478205
  }, null, 8, ["modelValue"]),
478134
- vue.createVNode(_sfc_main$d, {
478206
+ vue.createVNode(_sfc_main$e, {
478135
478207
  modelValue: showMapPrint.value,
478136
478208
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => showMapPrint.value = $event),
478137
478209
  onPrintAction: handlePrintAction
@@ -478146,7 +478218,7 @@ ${this.attributes_.map(
478146
478218
  }
478147
478219
  });
478148
478220
  const MapToolbar_vue_vue_type_style_index_0_scoped_f8ee8458_lang = "";
478149
- const MapToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-f8ee8458"]]);
478221
+ const MapToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-f8ee8458"]]);
478150
478222
  const TIANDITU_CONFIG = {
478151
478223
  baseUrl: "https://api.tianditu.gov.cn/v2/search",
478152
478224
  key: "9a7244dd5d1a1299a52946a3d0f8ff68"
@@ -478806,14 +478878,14 @@ ${this.attributes_.map(
478806
478878
  MapSearchService,
478807
478879
  defaultSearchConfig
478808
478880
  }, Symbol.toStringTag, { value: "Module" }));
478809
- const _hoisted_1$7 = { class: "search-input-wrapper" };
478810
- const _hoisted_2$7 = { class: "search-results" };
478811
- const _hoisted_3$7 = {
478881
+ const _hoisted_1$8 = { class: "search-input-wrapper" };
478882
+ const _hoisted_2$8 = { class: "search-results" };
478883
+ const _hoisted_3$8 = {
478812
478884
  key: 0,
478813
478885
  class: "search-section"
478814
478886
  };
478815
- const _hoisted_4$7 = { class: "section-title" };
478816
- const _hoisted_5$7 = ["onClick"];
478887
+ const _hoisted_4$8 = { class: "section-title" };
478888
+ const _hoisted_5$8 = ["onClick"];
478817
478889
  const _hoisted_6$6 = { class: "item-content" };
478818
478890
  const _hoisted_7$5 = { class: "item-name" };
478819
478891
  const _hoisted_8$5 = { class: "item-address" };
@@ -478842,7 +478914,7 @@ ${this.attributes_.map(
478842
478914
  key: 0,
478843
478915
  class: "no-results"
478844
478916
  };
478845
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
478917
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
478846
478918
  __name: "MapSearch",
478847
478919
  props: {
478848
478920
  config: { default: () => ({
@@ -479087,7 +479159,7 @@ ${this.attributes_.map(
479087
479159
  class: vue.normalizeClass(["map-search-container", [`position-${position2.value}`, { "search-active": isSearchActive.value }]])
479088
479160
  }, [
479089
479161
  vue.renderSlot(_ctx.$slots, "prepend"),
479090
- vue.createElementVNode("div", _hoisted_1$7, [
479162
+ vue.createElementVNode("div", _hoisted_1$8, [
479091
479163
  vue.renderSlot(_ctx.$slots, "search-input", {
479092
479164
  searchQuery: searchQuery.value,
479093
479165
  placeholder: placeholder.value,
@@ -479143,7 +479215,7 @@ ${this.attributes_.map(
479143
479215
  }, 8, ["modelValue", "placeholder"])
479144
479216
  ])
479145
479217
  ]),
479146
- vue.withDirectives(vue.createElementVNode("div", _hoisted_2$7, [
479218
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_2$8, [
479147
479219
  vue.renderSlot(_ctx.$slots, "search-results", {
479148
479220
  searchResults: searchResults.value,
479149
479221
  searchHistory: searchHistory.value,
@@ -479155,9 +479227,9 @@ ${this.attributes_.map(
479155
479227
  clearHistory,
479156
479228
  highlightText
479157
479229
  }, () => [
479158
- showHistory.value && searchHistory.value.length > 0 && !searchQuery.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$7, [
479230
+ showHistory.value && searchHistory.value.length > 0 && !searchQuery.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$8, [
479159
479231
  vue.renderSlot(_ctx.$slots, "history-title", { clearHistory }, () => [
479160
- vue.createElementVNode("div", _hoisted_4$7, [
479232
+ vue.createElementVNode("div", _hoisted_4$8, [
479161
479233
  _cache[2] || (_cache[2] = vue.createElementVNode("span", null, "搜索历史", -1)),
479162
479234
  vue.createVNode(vue.unref(ElButton), {
479163
479235
  type: "text",
@@ -479193,7 +479265,7 @@ ${this.attributes_.map(
479193
479265
  vue.createElementVNode("div", _hoisted_7$5, vue.toDisplayString(item.name), 1),
479194
479266
  vue.createElementVNode("div", _hoisted_8$5, vue.toDisplayString(item.address), 1)
479195
479267
  ])
479196
- ], 10, _hoisted_5$7)
479268
+ ], 10, _hoisted_5$8)
479197
479269
  ]);
479198
479270
  }), 128))
479199
479271
  ])) : vue.createCommentVNode("", true),
@@ -479268,7 +479340,7 @@ ${this.attributes_.map(
479268
479340
  }
479269
479341
  });
479270
479342
  const MapSearch_vue_vue_type_style_index_0_lang = "";
479271
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
479343
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
479272
479344
  __name: "index",
479273
479345
  props: {
479274
479346
  config: {},
@@ -479815,12 +479887,12 @@ ${this.attributes_.map(
479815
479887
  }
479816
479888
  });
479817
479889
  const index_vue_vue_type_style_index_0_scoped_45410a30_lang = "";
479818
- const MapControls = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-45410a30"]]);
479819
- 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" };
479820
- const _hoisted_2$6 = { class: "panel-actions" };
479821
- const _hoisted_3$6 = { class: "panel-content max-h-125 overflow-y-auto" };
479822
- const _hoisted_4$6 = { class: "p-2" };
479823
- const _hoisted_5$6 = { class: "legend-content p-2" };
479890
+ const MapControls = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-45410a30"]]);
479891
+ 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" };
479892
+ const _hoisted_2$7 = { class: "panel-actions" };
479893
+ const _hoisted_3$7 = { class: "panel-content max-h-125 overflow-y-auto" };
479894
+ const _hoisted_4$7 = { class: "p-2" };
479895
+ const _hoisted_5$7 = { class: "legend-content p-2" };
479824
479896
  const _hoisted_6$5 = { key: 0 };
479825
479897
  const _hoisted_7$4 = { class: "text-xs text-gray-600" };
479826
479898
  const _hoisted_8$4 = { key: 1 };
@@ -479851,7 +479923,7 @@ ${this.attributes_.map(
479851
479923
  key: 1,
479852
479924
  class: "py-10 px-5 text-center"
479853
479925
  };
479854
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
479926
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
479855
479927
  __name: "LegendPanel",
479856
479928
  props: {
479857
479929
  position: { default: "right" },
@@ -480061,9 +480133,9 @@ ${this.attributes_.map(
480061
480133
  class: vue.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 }]),
480062
480134
  style: vue.normalizeStyle(panelStyle.value)
480063
480135
  }, [
480064
- vue.createElementVNode("div", _hoisted_1$6, [
480136
+ vue.createElementVNode("div", _hoisted_1$7, [
480065
480137
  _cache[1] || (_cache[1] = vue.createElementVNode("h3", { class: "m-0 text-sm font-semibold text-gray-800" }, "图例", -1)),
480066
- vue.createElementVNode("div", _hoisted_2$6, [
480138
+ vue.createElementVNode("div", _hoisted_2$7, [
480067
480139
  vue.createVNode(_component_el_button, {
480068
480140
  link: "",
480069
480141
  size: "small",
@@ -480072,8 +480144,8 @@ ${this.attributes_.map(
480072
480144
  }, null, 8, ["icon"])
480073
480145
  ])
480074
480146
  ]),
480075
- vue.createElementVNode("div", _hoisted_3$6, [
480076
- vue.createElementVNode("div", _hoisted_4$6, [
480147
+ vue.createElementVNode("div", _hoisted_3$7, [
480148
+ vue.createElementVNode("div", _hoisted_4$7, [
480077
480149
  visibleLegends.value.length > 0 ? (vue.openBlock(), vue.createBlock(_component_el_collapse, {
480078
480150
  key: 0,
480079
480151
  modelValue: activeNames.value,
@@ -480089,7 +480161,7 @@ ${this.attributes_.map(
480089
480161
  class: "legend-item"
480090
480162
  }, {
480091
480163
  default: vue.withCtx(() => [
480092
- vue.createElementVNode("div", _hoisted_5$6, [
480164
+ vue.createElementVNode("div", _hoisted_5$7, [
480093
480165
  legend.type === "symbol" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$5, [
480094
480166
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(legend.items, (item) => {
480095
480167
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -481297,11 +481369,11 @@ ${this.attributes_.map(
481297
481369
  console.log("批量更新结果:", results);
481298
481370
  }
481299
481371
  }
481300
- const _hoisted_1$5 = { class: "filter-panel" };
481301
- const _hoisted_2$5 = { class: "config-section" };
481302
- const _hoisted_3$5 = { class: "config-item" };
481303
- const _hoisted_4$5 = { class: "value-text" };
481304
- const _hoisted_5$5 = { class: "config-item" };
481372
+ const _hoisted_1$6 = { class: "filter-panel" };
481373
+ const _hoisted_2$6 = { class: "config-section" };
481374
+ const _hoisted_3$6 = { class: "config-item" };
481375
+ const _hoisted_4$6 = { class: "value-text" };
481376
+ const _hoisted_5$6 = { class: "config-item" };
481305
481377
  const _hoisted_6$4 = { class: "value-text" };
481306
481378
  const _hoisted_7$3 = { class: "config-item" };
481307
481379
  const _hoisted_8$3 = { class: "value-text" };
@@ -481318,7 +481390,7 @@ ${this.attributes_.map(
481318
481390
  const _hoisted_19 = { class: "value-text" };
481319
481391
  const _hoisted_20 = { class: "config-section" };
481320
481392
  const _hoisted_21 = { class: "preset-buttons" };
481321
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
481393
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
481322
481394
  __name: "FilterPanel",
481323
481395
  props: {
481324
481396
  filters: {}
@@ -481338,10 +481410,10 @@ ${this.attributes_.map(
481338
481410
  return (_ctx, _cache) => {
481339
481411
  const _component_el_slider = vue.resolveComponent("el-slider");
481340
481412
  const _component_el_button = vue.resolveComponent("el-button");
481341
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
481342
- vue.createElementVNode("div", _hoisted_2$5, [
481413
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
481414
+ vue.createElementVNode("div", _hoisted_2$6, [
481343
481415
  _cache[15] || (_cache[15] = vue.createElementVNode("h5", null, "色彩调整", -1)),
481344
- vue.createElementVNode("div", _hoisted_3$5, [
481416
+ vue.createElementVNode("div", _hoisted_3$6, [
481345
481417
  _cache[11] || (_cache[11] = vue.createElementVNode("label", null, "色相:", -1)),
481346
481418
  vue.createVNode(_component_el_slider, {
481347
481419
  modelValue: _ctx.filters.hue,
@@ -481351,9 +481423,9 @@ ${this.attributes_.map(
481351
481423
  step: 1,
481352
481424
  onInput: handleFilterChange
481353
481425
  }, null, 8, ["modelValue"]),
481354
- vue.createElementVNode("span", _hoisted_4$5, vue.toDisplayString(_ctx.filters.hue) + "°", 1)
481426
+ vue.createElementVNode("span", _hoisted_4$6, vue.toDisplayString(_ctx.filters.hue) + "°", 1)
481355
481427
  ]),
481356
- vue.createElementVNode("div", _hoisted_5$5, [
481428
+ vue.createElementVNode("div", _hoisted_5$6, [
481357
481429
  _cache[12] || (_cache[12] = vue.createElementVNode("label", null, "饱和度:", -1)),
481358
481430
  vue.createVNode(_component_el_slider, {
481359
481431
  modelValue: _ctx.filters.saturate,
@@ -481489,14 +481561,14 @@ ${this.attributes_.map(
481489
481561
  }
481490
481562
  });
481491
481563
  const FilterPanel_vue_vue_type_style_index_0_lang = "";
481492
- const _hoisted_1$4 = { class: "style-config-panel" };
481493
- const _hoisted_2$4 = { class: "panel-title" };
481494
- const _hoisted_3$4 = {
481564
+ const _hoisted_1$5 = { class: "style-config-panel" };
481565
+ const _hoisted_2$5 = { class: "panel-title" };
481566
+ const _hoisted_3$5 = {
481495
481567
  key: 0,
481496
481568
  class: "config-section"
481497
481569
  };
481498
- const _hoisted_4$4 = { class: "config-item" };
481499
- const _hoisted_5$4 = { class: "value-text" };
481570
+ const _hoisted_4$5 = { class: "config-item" };
481571
+ const _hoisted_5$5 = { class: "value-text" };
481500
481572
  const _hoisted_6$3 = { class: "config-item" };
481501
481573
  const _hoisted_7$2 = { class: "value-text" };
481502
481574
  const _hoisted_8$2 = {
@@ -481508,7 +481580,7 @@ ${this.attributes_.map(
481508
481580
  const _hoisted_11$1 = { class: "config-item" };
481509
481581
  const _hoisted_12$1 = { class: "config-item" };
481510
481582
  const _hoisted_13$1 = { class: "panel-actions" };
481511
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
481583
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
481512
481584
  __name: "LayerStyleConfig",
481513
481585
  props: {
481514
481586
  layerData: {}
@@ -481539,11 +481611,11 @@ ${this.attributes_.map(
481539
481611
  const _component_el_select = vue.resolveComponent("el-select");
481540
481612
  const _component_el_switch = vue.resolveComponent("el-switch");
481541
481613
  const _component_el_button = vue.resolveComponent("el-button");
481542
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
481543
- vue.createElementVNode("h4", _hoisted_2$4, vue.toDisplayString(_ctx.layerData.label) + " - 样式配置", 1),
481544
- isClusterLayer.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$4, [
481614
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
481615
+ vue.createElementVNode("h4", _hoisted_2$5, vue.toDisplayString(_ctx.layerData.label) + " - 样式配置", 1),
481616
+ isClusterLayer.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$5, [
481545
481617
  _cache[8] || (_cache[8] = vue.createElementVNode("h5", null, "聚合配置", -1)),
481546
- vue.createElementVNode("div", _hoisted_4$4, [
481618
+ vue.createElementVNode("div", _hoisted_4$5, [
481547
481619
  _cache[6] || (_cache[6] = vue.createElementVNode("label", null, "聚合距离:", -1)),
481548
481620
  vue.createVNode(_component_el_slider, {
481549
481621
  modelValue: _ctx.layerData.clusterDistance,
@@ -481553,7 +481625,7 @@ ${this.attributes_.map(
481553
481625
  size: "small",
481554
481626
  onInput: handleClusterDistanceChange
481555
481627
  }, null, 8, ["modelValue"]),
481556
- vue.createElementVNode("span", _hoisted_5$4, vue.toDisplayString(_ctx.layerData.clusterDistance) + "px", 1)
481628
+ vue.createElementVNode("span", _hoisted_5$5, vue.toDisplayString(_ctx.layerData.clusterDistance) + "px", 1)
481557
481629
  ]),
481558
481630
  vue.createElementVNode("div", _hoisted_6$3, [
481559
481631
  _cache[7] || (_cache[7] = vue.createElementVNode("label", null, "最小距离:", -1)),
@@ -481639,12 +481711,12 @@ ${this.attributes_.map(
481639
481711
  }
481640
481712
  });
481641
481713
  const LayerStyleConfig_vue_vue_type_style_index_0_lang = "";
481642
- const _hoisted_1$3 = { class: "font-medium" };
481643
- const _hoisted_2$3 = { class: "layer-info" };
481644
- const _hoisted_3$3 = { class: "layer-name" };
481645
- const _hoisted_4$3 = { class: "opacity-control" };
481646
- const _hoisted_5$3 = { class: "opacity-value" };
481647
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
481714
+ const _hoisted_1$4 = { class: "font-medium" };
481715
+ const _hoisted_2$4 = { class: "layer-info" };
481716
+ const _hoisted_3$4 = { class: "layer-name" };
481717
+ const _hoisted_4$4 = { class: "opacity-control" };
481718
+ const _hoisted_5$4 = { class: "opacity-value" };
481719
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
481648
481720
  __name: "LayerTreeNode",
481649
481721
  props: {
481650
481722
  data: {},
@@ -481696,7 +481768,7 @@ ${this.attributes_.map(
481696
481768
  ]),
481697
481769
  _: 1
481698
481770
  }),
481699
- vue.createElementVNode("span", _hoisted_1$3, vue.toDisplayString(_ctx.data.label), 1)
481771
+ vue.createElementVNode("span", _hoisted_1$4, vue.toDisplayString(_ctx.data.label), 1)
481700
481772
  ], 32)) : (vue.openBlock(), vue.createElementBlock("div", {
481701
481773
  key: 1,
481702
481774
  class: "layer-item",
@@ -481704,7 +481776,7 @@ ${this.attributes_.map(
481704
481776
  onClick: _cache[5] || (_cache[5] = vue.withModifiers(() => {
481705
481777
  }, ["stop"]))
481706
481778
  }, [
481707
- vue.createElementVNode("div", _hoisted_2$3, [
481779
+ vue.createElementVNode("div", _hoisted_2$4, [
481708
481780
  vue.createVNode(_component_el_icon, {
481709
481781
  class: vue.normalizeClass(["layer-icon", layerIconClass.value])
481710
481782
  }, {
@@ -481713,7 +481785,7 @@ ${this.attributes_.map(
481713
481785
  ]),
481714
481786
  _: 1
481715
481787
  }, 8, ["class"]),
481716
- vue.createElementVNode("span", _hoisted_3$3, vue.toDisplayString(_ctx.data.label), 1)
481788
+ vue.createElementVNode("span", _hoisted_3$4, vue.toDisplayString(_ctx.data.label), 1)
481717
481789
  ]),
481718
481790
  vue.createElementVNode("div", {
481719
481791
  class: "layer-controls",
@@ -481724,7 +481796,7 @@ ${this.attributes_.map(
481724
481796
  onDblclick: _cache[4] || (_cache[4] = vue.withModifiers(() => {
481725
481797
  }, ["stop"]))
481726
481798
  }, [
481727
- vue.createElementVNode("div", _hoisted_4$3, [
481799
+ vue.createElementVNode("div", _hoisted_4$4, [
481728
481800
  vue.createVNode(_component_el_slider, {
481729
481801
  modelValue: _ctx.data.layerData.opacity,
481730
481802
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.data.layerData.opacity = $event),
@@ -481734,7 +481806,7 @@ ${this.attributes_.map(
481734
481806
  class: "opacity-slider",
481735
481807
  onInput: handleOpacityChange
481736
481808
  }, null, 8, ["modelValue"]),
481737
- vue.createElementVNode("span", _hoisted_5$3, vue.toDisplayString(_ctx.data.layerData.opacity) + "%", 1)
481809
+ vue.createElementVNode("span", _hoisted_5$4, vue.toDisplayString(_ctx.data.layerData.opacity) + "%", 1)
481738
481810
  ]),
481739
481811
  vue.createVNode(_component_el_popover, {
481740
481812
  placement: "left",
@@ -481763,7 +481835,7 @@ ${this.attributes_.map(
481763
481835
  })
481764
481836
  ]),
481765
481837
  default: vue.withCtx(() => [
481766
- vue.createVNode(_sfc_main$4, {
481838
+ vue.createVNode(_sfc_main$5, {
481767
481839
  "layer-data": _ctx.data.layerData,
481768
481840
  onClusterDistanceChange: handleClusterDistanceChange,
481769
481841
  onSuperMapConfigChange: handleSuperMapConfigChange,
@@ -481779,15 +481851,15 @@ ${this.attributes_.map(
481779
481851
  }
481780
481852
  });
481781
481853
  const LayerTreeNode_vue_vue_type_style_index_0_lang = "";
481782
- const _hoisted_1$2 = { class: "flex-1 overflow-y-auto p-4" };
481783
- const _hoisted_2$2 = { class: "pb-2 flex items-center justify-between" };
481784
- const _hoisted_3$2 = { class: "text-xs font-semibold text-gray-700 px-1 py-1 border-b border-gray-200 mb-2" };
481785
- const _hoisted_4$2 = { class: "global-style-panel" };
481786
- const _hoisted_5$2 = { class: "config-section" };
481854
+ const _hoisted_1$3 = { class: "flex-1 overflow-y-auto p-4" };
481855
+ const _hoisted_2$3 = { class: "pb-2 flex items-center justify-between" };
481856
+ const _hoisted_3$3 = { class: "text-xs font-semibold text-gray-700 px-1 py-1 border-b border-gray-200 mb-2" };
481857
+ const _hoisted_4$3 = { class: "global-style-panel" };
481858
+ const _hoisted_5$3 = { class: "config-section" };
481787
481859
  const _hoisted_6$2 = { class: "config-item" };
481788
481860
  const _hoisted_7$1 = { class: "current-style-display" };
481789
481861
  const _hoisted_8$1 = { class: "style-preview" };
481790
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
481862
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
481791
481863
  __name: "LayerPanel",
481792
481864
  props: {
481793
481865
  modelValue: { type: Boolean }
@@ -482625,7 +482697,7 @@ ${this.attributes_.map(
482625
482697
  const _component_el_tree = vue.resolveComponent("el-tree");
482626
482698
  const _component_el_tab_pane = vue.resolveComponent("el-tab-pane");
482627
482699
  const _component_el_tabs = vue.resolveComponent("el-tabs");
482628
- return vue.openBlock(), vue.createBlock(_sfc_main$k, vue.mergeProps({
482700
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, vue.mergeProps({
482629
482701
  modelValue: visible.value,
482630
482702
  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => visible.value = $event)
482631
482703
  }, dialogProps.value, { onClose: handleClose }), vue.createSlots({
@@ -482663,8 +482735,8 @@ ${this.attributes_.map(
482663
482735
  name: "layers"
482664
482736
  }, {
482665
482737
  default: vue.withCtx(() => [
482666
- vue.createElementVNode("div", _hoisted_1$2, [
482667
- vue.createElementVNode("div", _hoisted_2$2, [
482738
+ vue.createElementVNode("div", _hoisted_1$3, [
482739
+ vue.createElementVNode("div", _hoisted_2$3, [
482668
482740
  _cache[7] || (_cache[7] = vue.createElementVNode("div", { class: "text-sm text-gray-600" }, "树形视图", -1)),
482669
482741
  vue.createVNode(_component_el_radio_group, {
482670
482742
  modelValue: activeTreeType.value,
@@ -482710,7 +482782,7 @@ ${this.attributes_.map(
482710
482782
  class: "layer-tree"
482711
482783
  }, {
482712
482784
  default: vue.withCtx(({ node: node2, data: data2 }) => [
482713
- vue.createVNode(_sfc_main$3, {
482785
+ vue.createVNode(_sfc_main$4, {
482714
482786
  data: data2,
482715
482787
  "layer-tree-manager": vue.unref(layerTreeManager),
482716
482788
  onDoubleClick: handleLayerDoubleClick,
@@ -482726,7 +482798,7 @@ ${this.attributes_.map(
482726
482798
  key: group2.id,
482727
482799
  class: "mb-3"
482728
482800
  }, [
482729
- vue.createElementVNode("div", _hoisted_3$2, vue.toDisplayString(group2.name), 1),
482801
+ vue.createElementVNode("div", _hoisted_3$3, vue.toDisplayString(group2.name), 1),
482730
482802
  vue.createVNode(_component_el_tree, {
482731
482803
  ref_for: true,
482732
482804
  ref: (el) => classificationTreeRefs.value[group2.id] = el,
@@ -482748,7 +482820,7 @@ ${this.attributes_.map(
482748
482820
  class: "layer-tree"
482749
482821
  }, {
482750
482822
  default: vue.withCtx(({ node: node2, data: data2 }) => [
482751
- vue.createVNode(_sfc_main$3, {
482823
+ vue.createVNode(_sfc_main$4, {
482752
482824
  data: data2,
482753
482825
  "layer-tree-manager": vue.unref(layerTreeManager),
482754
482826
  onDoubleClick: handleLayerDoubleClick,
@@ -482771,7 +482843,7 @@ ${this.attributes_.map(
482771
482843
  name: "style"
482772
482844
  }, {
482773
482845
  default: vue.withCtx(() => [
482774
- vue.createElementVNode("div", _hoisted_4$2, [
482846
+ vue.createElementVNode("div", _hoisted_4$3, [
482775
482847
  vue.createVNode(_component_el_tabs, {
482776
482848
  modelValue: activeStyleTab.value,
482777
482849
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => activeStyleTab.value = $event),
@@ -482783,7 +482855,7 @@ ${this.attributes_.map(
482783
482855
  name: "filters"
482784
482856
  }, {
482785
482857
  default: vue.withCtx(() => [
482786
- vue.createVNode(_sfc_main$5, {
482858
+ vue.createVNode(_sfc_main$6, {
482787
482859
  filters: vue.unref(globalFilters),
482788
482860
  onFilterChange: applyFilterEffect,
482789
482861
  onReset: resetFilters,
@@ -482797,7 +482869,7 @@ ${this.attributes_.map(
482797
482869
  name: "custom"
482798
482870
  }, {
482799
482871
  default: vue.withCtx(() => [
482800
- vue.createElementVNode("div", _hoisted_5$2, [
482872
+ vue.createElementVNode("div", _hoisted_5$3, [
482801
482873
  vue.createElementVNode("div", _hoisted_6$2, [
482802
482874
  vue.createVNode(vue.unref(ElInput), {
482803
482875
  modelValue: vue.unref(globalCustomCss),
@@ -482869,6 +482941,151 @@ ${this.attributes_.map(
482869
482941
  }
482870
482942
  });
482871
482943
  const LayerPanel_vue_vue_type_style_index_0_lang = "";
482944
+ const _hoisted_1$2 = { class: "layer-panel" };
482945
+ const _hoisted_2$2 = ["onClick"];
482946
+ const _hoisted_3$2 = ["title"];
482947
+ const _hoisted_4$2 = {
482948
+ key: 0,
482949
+ class: "active-border"
482950
+ };
482951
+ const _hoisted_5$2 = { class: "layer-name" };
482952
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
482953
+ __name: "OlBaseLayerSwitcher",
482954
+ props: {
482955
+ map: {},
482956
+ baseLayers: {}
482957
+ },
482958
+ setup(__props) {
482959
+ const props = __props;
482960
+ const expand = vue.ref(false);
482961
+ const validBaseLayers = vue.computed(() => {
482962
+ return props.baseLayers.filter((layer2) => layer2.baseImgUrl && layer2.baseImgUrl.trim() !== "");
482963
+ });
482964
+ const containerStyle = vue.computed(() => {
482965
+ if (!expand.value) {
482966
+ return { width: "96px" };
482967
+ }
482968
+ const count2 = validBaseLayers.value.length;
482969
+ if (count2 === 0)
482970
+ return { width: "96px" };
482971
+ const width = count2 * 86 + (count2 - 1) * 10 + 10;
482972
+ return { width: `${width}px` };
482973
+ });
482974
+ const currentLayer = vue.ref(null);
482975
+ vue.watch(() => props.baseLayers, (layers) => {
482976
+ if (!currentLayer.value) {
482977
+ const visibleLayer = layers.find((l2) => l2.visible && l2.baseImgUrl);
482978
+ if (visibleLayer) {
482979
+ currentLayer.value = visibleLayer;
482980
+ } else if (validBaseLayers.value.length > 0) {
482981
+ currentLayer.value = validBaseLayers.value[0];
482982
+ }
482983
+ }
482984
+ }, { deep: true, immediate: true });
482985
+ const switchLayer = (targetLayer) => {
482986
+ if (!props.map)
482987
+ return;
482988
+ currentLayer.value = targetLayer;
482989
+ layerEventBus.emit("basemap-switch-request", {
482990
+ basemapId: targetLayer.id,
482991
+ basemapName: targetLayer.name,
482992
+ basemapType: targetLayer.type,
482993
+ basemapConfig: targetLayer
482994
+ });
482995
+ props.baseLayers.forEach((layerConfig) => {
482996
+ const isVisible2 = layerConfig.id === targetLayer.id;
482997
+ setLayerVisibility(layerConfig, isVisible2);
482998
+ });
482999
+ expand.value = false;
483000
+ };
483001
+ const setLayerVisibility = (config, visible) => {
483002
+ config.visible = visible;
483003
+ if (config.type === "group") {
483004
+ if (config.layers) {
483005
+ config.layers.forEach((child) => setLayerVisibility(child, visible));
483006
+ }
483007
+ if (config.children) {
483008
+ config.children.forEach((child) => setLayerVisibility(child, visible));
483009
+ }
483010
+ }
483011
+ if (config.id) {
483012
+ const layer2 = findLayerById(props.map, config.id);
483013
+ if (layer2) {
483014
+ layer2.setVisible(visible);
483015
+ }
483016
+ }
483017
+ };
483018
+ const findLayerById = (map2, id2) => {
483019
+ const layers = map2.getLayers().getArray();
483020
+ return findLayerRecursive(layers, id2);
483021
+ };
483022
+ const findLayerRecursive = (layers, id2) => {
483023
+ for (const layer2 of layers) {
483024
+ if (layer2.get("id") === id2) {
483025
+ return layer2;
483026
+ }
483027
+ if (layer2.getLayers && typeof layer2.getLayers === "function") {
483028
+ const found = findLayerRecursive(layer2.getLayers().getArray(), id2);
483029
+ if (found)
483030
+ return found;
483031
+ }
483032
+ }
483033
+ return null;
483034
+ };
483035
+ return (_ctx, _cache) => {
483036
+ var _a3, _b3;
483037
+ return vue.openBlock(), vue.createElementBlock("div", {
483038
+ class: vue.normalizeClass(["ol-base-layer-switcher", { "is-expanded": expand.value }]),
483039
+ style: vue.normalizeStyle(containerStyle.value),
483040
+ onMouseenter: _cache[0] || (_cache[0] = ($event) => expand.value = true),
483041
+ onMouseleave: _cache[1] || (_cache[1] = ($event) => expand.value = false)
483042
+ }, [
483043
+ vue.createElementVNode("div", _hoisted_1$2, [
483044
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(validBaseLayers.value, (layer2) => {
483045
+ var _a4, _b4;
483046
+ return vue.openBlock(), vue.createElementBlock("div", {
483047
+ key: layer2.id,
483048
+ class: vue.normalizeClass(["layer-item", { active: ((_a4 = currentLayer.value) == null ? void 0 : _a4.id) === layer2.id }]),
483049
+ onClick: ($event) => switchLayer(layer2),
483050
+ style: vue.normalizeStyle({ backgroundImage: `url(${layer2.baseImgUrl})` })
483051
+ }, [
483052
+ vue.createElementVNode("div", {
483053
+ class: "layer-name",
483054
+ title: layer2.name
483055
+ }, vue.toDisplayString(layer2.name), 9, _hoisted_3$2),
483056
+ ((_b4 = currentLayer.value) == null ? void 0 : _b4.id) === layer2.id ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [..._cache[2] || (_cache[2] = [
483057
+ vue.createElementVNode("div", { class: "check-icon" }, [
483058
+ vue.createElementVNode("svg", {
483059
+ viewBox: "0 0 1024 1024",
483060
+ width: "16",
483061
+ height: "16"
483062
+ }, [
483063
+ vue.createElementVNode("path", {
483064
+ d: "M384 725.333333l-192-192 64-64 128 128 320-320 64 64z",
483065
+ fill: "#fff"
483066
+ })
483067
+ ])
483068
+ ], -1)
483069
+ ])])) : vue.createCommentVNode("", true)
483070
+ ], 14, _hoisted_2$2);
483071
+ }), 128))
483072
+ ]),
483073
+ vue.createElementVNode("div", {
483074
+ class: vue.normalizeClass(["layer-trigger", { "is-hidden": expand.value }])
483075
+ }, [
483076
+ vue.createElementVNode("div", {
483077
+ class: "current-layer-box",
483078
+ style: vue.normalizeStyle({ backgroundImage: `url(${(_a3 = currentLayer.value) == null ? void 0 : _a3.baseImgUrl})` })
483079
+ }, [
483080
+ vue.createElementVNode("div", _hoisted_5$2, vue.toDisplayString((_b3 = currentLayer.value) == null ? void 0 : _b3.name), 1)
483081
+ ], 4)
483082
+ ], 2)
483083
+ ], 38);
483084
+ };
483085
+ }
483086
+ });
483087
+ const OlBaseLayerSwitcher_vue_vue_type_style_index_0_scoped_396e5ed1_lang = "";
483088
+ const OlBaseLayerSwitcher = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-396e5ed1"]]);
482872
483089
  const _hoisted_1$1 = {
482873
483090
  key: 2,
482874
483091
  class: "tooltip-content"
@@ -484114,12 +484331,13 @@ ${this.attributes_.map(
484114
484331
  isInFullscreen: () => isFullscreen.value
484115
484332
  });
484116
484333
  return (_ctx, _cache) => {
484334
+ var _a3;
484117
484335
  const _component_el_icon = vue.resolveComponent("el-icon");
484118
484336
  const _component_el_button = vue.resolveComponent("el-button");
484119
484337
  return vue.openBlock(), vue.createElementBlock("div", {
484120
484338
  class: vue.normalizeClass(["relative w-full h-full overflow-hidden", { "fixed top-0 left-0 w-screen h-screen z-9999": isFullscreen.value }])
484121
484339
  }, [
484122
- vue.createVNode(_sfc_main$m, {
484340
+ vue.createVNode(_sfc_main$n, {
484123
484341
  ref_key: "mapContainerRef",
484124
484342
  ref: mapContainerRef,
484125
484343
  config: finalMapConfig.value,
@@ -484223,7 +484441,7 @@ ${this.attributes_.map(
484223
484441
  }, null, 8, ["config", "left-offset", "right-offset", "top-offset", "bottom-offset"]), [
484224
484442
  [vue.vShow, finalShowToolbar.value]
484225
484443
  ]),
484226
- vue.withDirectives(vue.createVNode(_sfc_main$8, {
484444
+ vue.withDirectives(vue.createVNode(_sfc_main$9, {
484227
484445
  ref_key: "mapSearchRef",
484228
484446
  ref: mapSearchRef,
484229
484447
  config: finalSearchConfig.value,
@@ -484258,7 +484476,7 @@ ${this.attributes_.map(
484258
484476
  hasToolbarSlot.value ? vue.renderSlot(_ctx.$slots, "toolbar", { key: 2 }) : vue.createCommentVNode("", true),
484259
484477
  hasMapInfoSlot.value ? vue.renderSlot(_ctx.$slots, "mapInfo", { key: 3 }) : vue.createCommentVNode("", true),
484260
484478
  hasMapInfoSlot.value ? vue.renderSlot(_ctx.$slots, "map-info", { key: 4 }) : vue.createCommentVNode("", true),
484261
- finalEnableLayerPanel.value ? (vue.openBlock(), vue.createBlock(_sfc_main$2, {
484479
+ finalEnableLayerPanel.value ? (vue.openBlock(), vue.createBlock(_sfc_main$3, {
484262
484480
  key: 5,
484263
484481
  modelValue: showLayerPanel.value,
484264
484482
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => showLayerPanel.value = $event)
@@ -484289,7 +484507,7 @@ ${this.attributes_.map(
484289
484507
  key: "2"
484290
484508
  } : void 0
484291
484509
  ]), 1032, ["modelValue"])) : vue.createCommentVNode("", true),
484292
- showLegend.value ? (vue.openBlock(), vue.createBlock(_sfc_main$6, {
484510
+ showLegend.value ? (vue.openBlock(), vue.createBlock(_sfc_main$7, {
484293
484511
  key: 6,
484294
484512
  position: finalLegendPosition.value,
484295
484513
  width: finalLegendWidth.value,
@@ -484337,7 +484555,12 @@ ${this.attributes_.map(
484337
484555
  }), 128))
484338
484556
  ])
484339
484557
  ])) : vue.createCommentVNode("", true),
484340
- vue.createVNode(_sfc_main$d, {
484558
+ map2.value && ((_a3 = finalMapConfig.value.baseLayers) == null ? void 0 : _a3.length) ? (vue.openBlock(), vue.createBlock(OlBaseLayerSwitcher, {
484559
+ key: 9,
484560
+ map: map2.value,
484561
+ "base-layers": finalMapConfig.value.baseLayers
484562
+ }, null, 8, ["map", "base-layers"])) : vue.createCommentVNode("", true),
484563
+ vue.createVNode(_sfc_main$e, {
484341
484564
  modelValue: showPrintDialog.value,
484342
484565
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showPrintDialog.value = $event),
484343
484566
  "map-instance": map2.value,
@@ -501431,14 +501654,14 @@ ${this.attributes_.map(
501431
501654
  };
501432
501655
  const install = (app) => {
501433
501656
  app.component("CustomOpenlayer", _sfc_main);
501434
- app.component("CustomDialog", _sfc_main$k);
501435
- app.component("SvgIcon", _sfc_main$l);
501657
+ app.component("CustomDialog", _sfc_main$l);
501658
+ app.component("SvgIcon", _sfc_main$m);
501436
501659
  };
501437
501660
  const index$1 = {
501438
501661
  install,
501439
501662
  CustomOpenlayer: _sfc_main,
501440
- CustomDialog: _sfc_main$k,
501441
- SvgIcon: _sfc_main$l
501663
+ CustomDialog: _sfc_main$l,
501664
+ SvgIcon: _sfc_main$m
501442
501665
  };
501443
501666
  const version$1 = "1.0.0";
501444
501667
  function commonjsRequire(path2) {
@@ -511630,7 +511853,7 @@ ${this.attributes_.map(
511630
511853
  }, Symbol.toStringTag, { value: "Module" }));
511631
511854
  exports2.BaseDrawing = BaseDrawing;
511632
511855
  exports2.BasemapManager = BasemapManager;
511633
- exports2.CustomDialog = _sfc_main$k;
511856
+ exports2.CustomDialog = _sfc_main$l;
511634
511857
  exports2.CustomOpenlayer = _sfc_main;
511635
511858
  exports2.DrawingFactoryRegistry = DrawingFactoryRegistry;
511636
511859
  exports2.DrawingManager = DrawingManager;
@@ -511664,7 +511887,7 @@ ${this.attributes_.map(
511664
511887
  exports2.PolygonDrawing = PolygonDrawing;
511665
511888
  exports2.PolygonDrawingFactory = PolygonDrawingFactory;
511666
511889
  exports2.SpatialFilterType = SpatialFilterType;
511667
- exports2.SvgIcon = _sfc_main$l;
511890
+ exports2.SvgIcon = _sfc_main$m;
511668
511891
  exports2.TextDrawing = TextDrawing;
511669
511892
  exports2.TextDrawingFactory = TextDrawingFactory;
511670
511893
  exports2.VectorTileLayerHandler = VectorTileLayerHandler;