qm-map-maplibre-gl 0.1.6 → 0.1.7
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.
- package/dist/index.d.ts +2 -1
- package/dist/qm-map.es.js +72 -61
- package/dist/qm-map.umd.js +4 -4
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,8 @@ export { default as ZoomOut } from './widget/ZoomOut';
|
|
|
12
12
|
export { default as MeasureLine } from './widget/MeasureLine';
|
|
13
13
|
export { default as MeasurePolygon } from './widget/MeasurePolygon';
|
|
14
14
|
export type { TMapProps } from './widget/MapWidget';
|
|
15
|
-
export type { TDrawResult, TDrawModeType, TWidgetProps, TWidgetMeasureProps, TWidgetDrawProps, TDrawMode, TWidgetButtonOptions,
|
|
15
|
+
export type { TDrawResult, TDrawModeType, TWidgetProps, TWidgetMeasureProps, TWidgetDrawProps, TDrawMode, TWidgetButtonOptions, } from './widget/constant';
|
|
16
|
+
export { WIDGETICONS } from './widget/constant';
|
|
16
17
|
export { default as BaseLayer } from './maplibregl/layer/BaseLayer';
|
|
17
18
|
export { default as LayerGroupWrapper } from './maplibregl/layer/LayerGroupWrapper';
|
|
18
19
|
export { default as LayerWrapper } from './maplibregl/layer/LayerWrapper';
|
package/dist/qm-map.es.js
CHANGED
|
@@ -515,7 +515,7 @@ var w = t(C), T = t((e) => {
|
|
|
515
515
|
200: 200,
|
|
516
516
|
300: 300,
|
|
517
517
|
400: 400
|
|
518
|
-
},
|
|
518
|
+
}, ie = class {
|
|
519
519
|
map;
|
|
520
520
|
svgCanvas;
|
|
521
521
|
constructor(e) {
|
|
@@ -533,7 +533,7 @@ var w = t(C), T = t((e) => {
|
|
|
533
533
|
destroy() {
|
|
534
534
|
this.svgCanvas?.remove(), this.svgCanvas = null, this.map = null;
|
|
535
535
|
}
|
|
536
|
-
},
|
|
536
|
+
}, ae = class {
|
|
537
537
|
map;
|
|
538
538
|
svgCanvas;
|
|
539
539
|
path;
|
|
@@ -558,7 +558,7 @@ var w = t(C), T = t((e) => {
|
|
|
558
558
|
toPixels(e, t) {
|
|
559
559
|
return t === M.mm ? 96 / 25.4 * e : 96 * e;
|
|
560
560
|
}
|
|
561
|
-
},
|
|
561
|
+
}, oe = class {
|
|
562
562
|
toPNG(e, t) {
|
|
563
563
|
e.toBlob((e) => {
|
|
564
564
|
if (e) {
|
|
@@ -575,19 +575,19 @@ var w = t(C), T = t((e) => {
|
|
|
575
575
|
let a = r.toDataURL("image/jpeg", Math.max(0, Math.min(1, n))), o = document.createElement("a");
|
|
576
576
|
o.href = a, o.download = t, o.click();
|
|
577
577
|
}
|
|
578
|
-
},
|
|
579
|
-
image:
|
|
578
|
+
}, I = "<svg width=\"800px\" height=\"800px\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\" class=\"iconify iconify--gis\" preserveAspectRatio=\"xMidYMid meet\"><path d=\"M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z\" fill=\"none\" stroke=\"white\" stroke-width=\"1.5\"/><path d=\"M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z\" fill=\"#000000\" fill-rule=\"evenodd\"></path></svg>", se = {
|
|
579
|
+
image: I,
|
|
580
580
|
imageName: "gl-export-north-icon",
|
|
581
581
|
imageSizeFraction: .05,
|
|
582
582
|
visibility: "visible",
|
|
583
583
|
position: "top-right"
|
|
584
|
-
},
|
|
584
|
+
}, ce = class {
|
|
585
585
|
options;
|
|
586
586
|
constructor(e) {
|
|
587
587
|
this.options = {
|
|
588
|
-
...
|
|
588
|
+
...se,
|
|
589
589
|
...e,
|
|
590
|
-
image: e?.image ??
|
|
590
|
+
image: e?.image ?? I
|
|
591
591
|
};
|
|
592
592
|
}
|
|
593
593
|
async addToMap(e, t, n) {
|
|
@@ -662,19 +662,19 @@ var w = t(C), T = t((e) => {
|
|
|
662
662
|
image: e.image ?? this.options.image
|
|
663
663
|
};
|
|
664
664
|
}
|
|
665
|
-
},
|
|
665
|
+
}, le = {
|
|
666
666
|
"circle-radius": 8,
|
|
667
667
|
"circle-color": "red",
|
|
668
668
|
"circle-stroke-width": 1,
|
|
669
669
|
"circle-stroke-color": "black"
|
|
670
|
-
},
|
|
670
|
+
}, ue = "maplibregl-marker", de = class {
|
|
671
671
|
sourceMap;
|
|
672
672
|
renderMap;
|
|
673
673
|
markerClassName;
|
|
674
674
|
markerCirclePaint;
|
|
675
675
|
constructor(e, t, n) {
|
|
676
|
-
this.sourceMap = e, this.renderMap = t, this.markerClassName = n?.markerClassName ??
|
|
677
|
-
...
|
|
676
|
+
this.sourceMap = e, this.renderMap = t, this.markerClassName = n?.markerClassName ?? ue, this.markerCirclePaint = {
|
|
677
|
+
...le,
|
|
678
678
|
...n?.markerCirclePaint
|
|
679
679
|
};
|
|
680
680
|
}
|
|
@@ -707,7 +707,7 @@ var w = t(C), T = t((e) => {
|
|
|
707
707
|
}
|
|
708
708
|
return !0;
|
|
709
709
|
}
|
|
710
|
-
},
|
|
710
|
+
}, fe = class {
|
|
711
711
|
width;
|
|
712
712
|
height;
|
|
713
713
|
unit;
|
|
@@ -753,7 +753,7 @@ var w = t(C), T = t((e) => {
|
|
|
753
753
|
for (let e of S) w.set(e, T), T += e.length;
|
|
754
754
|
return w.buffer;
|
|
755
755
|
}
|
|
756
|
-
},
|
|
756
|
+
}, pe = class {
|
|
757
757
|
toSVG(e, t, n, r, i, a) {
|
|
758
758
|
let o = e.toDataURL("image/png"), s = i === "mm" ? a / 25.4 : a, c = s * n, l = s * r, u = `
|
|
759
759
|
<svg xmlns="http://www.w3.org/2000/svg"
|
|
@@ -767,7 +767,7 @@ var w = t(C), T = t((e) => {
|
|
|
767
767
|
</svg>`, d = `data:application/xml,${encodeURIComponent(u)}`, f = document.createElement("a");
|
|
768
768
|
f.href = d, f.download = t, f.click();
|
|
769
769
|
}
|
|
770
|
-
},
|
|
770
|
+
}, me = class {
|
|
771
771
|
map;
|
|
772
772
|
width;
|
|
773
773
|
height;
|
|
@@ -815,18 +815,18 @@ var w = t(C), T = t((e) => {
|
|
|
815
815
|
setTimeout(e, 200);
|
|
816
816
|
});
|
|
817
817
|
o.once("idle", async () => {
|
|
818
|
-
await l(), this.northIcon && (await new
|
|
818
|
+
await l(), this.northIcon && (await new ce(this.northIconOptions).addToMap(o, this.width, this.height), await new Promise((e) => {
|
|
819
819
|
o.once("idle", () => {
|
|
820
820
|
setTimeout(e, 200);
|
|
821
821
|
});
|
|
822
|
-
})), new
|
|
822
|
+
})), new de(this.map, o, this.markerOptions).renderMarkers() && await new Promise((e) => {
|
|
823
823
|
o.once("idle", () => {
|
|
824
824
|
setTimeout(e, 200);
|
|
825
825
|
});
|
|
826
826
|
});
|
|
827
827
|
let r = o.getCanvas(), i = r.getContext("webgl") || r.getContext("webgl2");
|
|
828
828
|
i && i.readPixels(0, 0, 1, 1, i.RGBA, i.UNSIGNED_BYTE, new Uint8Array(4));
|
|
829
|
-
let a = `map.${this.format}`, s = new
|
|
829
|
+
let a = `map.${this.format}`, s = new oe();
|
|
830
830
|
switch (this.format) {
|
|
831
831
|
case j.PNG:
|
|
832
832
|
s.toPNG(r, a);
|
|
@@ -835,10 +835,10 @@ var w = t(C), T = t((e) => {
|
|
|
835
835
|
s.toJPEG(r, a, this.jpegQuality);
|
|
836
836
|
break;
|
|
837
837
|
case j.PDF:
|
|
838
|
-
new
|
|
838
|
+
new fe(this.width, this.height, this.unit).generate(r, a);
|
|
839
839
|
break;
|
|
840
840
|
case j.SVG:
|
|
841
|
-
new
|
|
841
|
+
new pe().toSVG(r, a, this.width, this.height, this.unit, this.dpi);
|
|
842
842
|
break;
|
|
843
843
|
}
|
|
844
844
|
o.remove(), n.remove(), Object.defineProperty(window, "devicePixelRatio", { get: () => t }), this.hideLoading(), e?.();
|
|
@@ -854,7 +854,7 @@ var w = t(C), T = t((e) => {
|
|
|
854
854
|
hideLoading() {
|
|
855
855
|
document.querySelector(".qm-print-loading-overlay")?.remove();
|
|
856
856
|
}
|
|
857
|
-
},
|
|
857
|
+
}, L = t((e) => {
|
|
858
858
|
let { style: t, close: r, classname: s, onCallback: c } = e, { map: d } = S(), [f, p] = o(!1), [m, h] = o({
|
|
859
859
|
PageSize: N.A4,
|
|
860
860
|
PageOrientation: P.横向,
|
|
@@ -864,7 +864,7 @@ var w = t(C), T = t((e) => {
|
|
|
864
864
|
PrintableArea: !0
|
|
865
865
|
}), g = a(null), _ = a(null);
|
|
866
866
|
i(() => {
|
|
867
|
-
if (d) return f ? (m.Crosshair && (g.current = new
|
|
867
|
+
if (d) return f ? (m.Crosshair && (g.current = new ie(d), g.current.create()), m.PrintableArea && (_.current = new ae(d), _.current.create()), v()) : (g.current?.destroy(), g.current = null, _.current?.destroy(), _.current = null), () => {
|
|
868
868
|
g.current?.destroy(), _.current?.destroy();
|
|
869
869
|
};
|
|
870
870
|
}, [
|
|
@@ -882,7 +882,7 @@ var w = t(C), T = t((e) => {
|
|
|
882
882
|
}, [m.PageSize, m.PageOrientation]), y = n(() => {
|
|
883
883
|
if (!d) return;
|
|
884
884
|
let e = [...m.PageSize];
|
|
885
|
-
m.PageOrientation === P.纵向 && (e = [e[1], e[0]]), new
|
|
885
|
+
m.PageOrientation === P.纵向 && (e = [e[1], e[0]]), new me(d, e, m.DPI, m.Format, M.mm, {
|
|
886
886
|
jpegQuality: m.JPEGQuality,
|
|
887
887
|
northIcon: !0
|
|
888
888
|
}).generate(() => {
|
|
@@ -962,7 +962,7 @@ var w = t(C), T = t((e) => {
|
|
|
962
962
|
});
|
|
963
963
|
//#endregion
|
|
964
964
|
//#region lib/widget/Swipe/MapCompare/sync-maps.ts
|
|
965
|
-
function
|
|
965
|
+
function R(e, t) {
|
|
966
966
|
let n = e.getCenter(), r = e.getZoom(), i = e.getBearing(), a = e.getPitch();
|
|
967
967
|
t.forEach((e) => {
|
|
968
968
|
e.jumpTo({
|
|
@@ -973,7 +973,7 @@ function B(e, t) {
|
|
|
973
973
|
});
|
|
974
974
|
});
|
|
975
975
|
}
|
|
976
|
-
function
|
|
976
|
+
function z(...e) {
|
|
977
977
|
let t;
|
|
978
978
|
t = e.length === 1 && Array.isArray(e[0]) ? e[0] : e;
|
|
979
979
|
let n = [];
|
|
@@ -992,7 +992,7 @@ function pe(...e) {
|
|
|
992
992
|
});
|
|
993
993
|
}
|
|
994
994
|
function a(e, t) {
|
|
995
|
-
i(),
|
|
995
|
+
i(), R(e, t), r();
|
|
996
996
|
}
|
|
997
997
|
return r(), () => {
|
|
998
998
|
i();
|
|
@@ -1000,7 +1000,7 @@ function pe(...e) {
|
|
|
1000
1000
|
}
|
|
1001
1001
|
//#endregion
|
|
1002
1002
|
//#region lib/widget/Swipe/MapCompare/index.ts
|
|
1003
|
-
var
|
|
1003
|
+
var B = class {
|
|
1004
1004
|
options;
|
|
1005
1005
|
_mapA;
|
|
1006
1006
|
_mapB;
|
|
@@ -1019,7 +1019,7 @@ var V = class {
|
|
|
1019
1019
|
...r
|
|
1020
1020
|
}, this._mapA = e, this._mapB = t, this._horizontal = this.options.orientation === "horizontal", this._eventTarget = new EventTarget(), this._swiper = document.createElement("div"), this._swiper.className = this._horizontal ? "compare-swiper-horizontal" : "compare-swiper-vertical", this._controlContainer = document.createElement("div"), this._controlContainer.className = this._horizontal ? "maplibregl-compare maplibregl-compare-horizontal" : "maplibregl-compare", this._controlContainer.appendChild(this._swiper), this._mountContainer(n), this._bounds = this._mapB.getContainer().getBoundingClientRect();
|
|
1021
1021
|
let i = this._horizontal ? this._bounds.height / 2 : this._bounds.width / 2;
|
|
1022
|
-
this._setPosition(i), this._clearSync =
|
|
1022
|
+
this._setPosition(i), this._clearSync = z(this._mapA, this._mapB), this._onResize = () => {
|
|
1023
1023
|
this._bounds = this._mapB.getContainer().getBoundingClientRect(), this.currentPosition && this._setPosition(this.currentPosition);
|
|
1024
1024
|
}, this._mapB.on("resize", this._onResize), this.options.mousemove && (this._mapA.getContainer().addEventListener("mousemove", this._onMove), this._mapB.getContainer().addEventListener("mousemove", this._onMove)), this._swiper.addEventListener("mousedown", this._onDown), this._swiper.addEventListener("touchstart", this._onDown);
|
|
1025
1025
|
}
|
|
@@ -1082,8 +1082,8 @@ var V = class {
|
|
|
1082
1082
|
}), this._swiper.removeEventListener("mousedown", this._onDown), this._swiper.removeEventListener("touchstart", this._onDown), this._controlContainer.remove();
|
|
1083
1083
|
}
|
|
1084
1084
|
};
|
|
1085
|
-
window.maplibregl && (window.maplibregl.Compare =
|
|
1086
|
-
var
|
|
1085
|
+
window.maplibregl && (window.maplibregl.Compare = B);
|
|
1086
|
+
var he = t((e) => {
|
|
1087
1087
|
let { title: t, open: r = !1, maskClosable: a = !0, mask: s, width: c = 520, footer: f, onCancel: p, destroyOnHidden: m = !1, className: h, style: g, children: _, centered: v = !1 } = e, y = s?.closable === void 0 ? a : s.closable, [b, x] = o(r);
|
|
1088
1088
|
i(() => {
|
|
1089
1089
|
if (r) x(!0), document.body.style.overflow = "hidden";
|
|
@@ -1142,17 +1142,17 @@ var me = t((e) => {
|
|
|
1142
1142
|
})
|
|
1143
1143
|
})]
|
|
1144
1144
|
}), document.body) : null;
|
|
1145
|
-
}),
|
|
1145
|
+
}), ge = t((e) => {
|
|
1146
1146
|
let { style: t, close: n, onCallback: r, classname: a } = e, { map: s } = S(), [c, d] = o(null), [f, p] = o(null);
|
|
1147
1147
|
return i(() => {
|
|
1148
1148
|
if (c && f) {
|
|
1149
1149
|
let e = document.getElementById("swipeContainer");
|
|
1150
|
-
e && (new
|
|
1150
|
+
e && (new B(c, f, e, {
|
|
1151
1151
|
mousemove: !1,
|
|
1152
1152
|
orientation: "vertical"
|
|
1153
1153
|
}), c.setCenter(s.getCenter()), c.setZoom(s.getZoom()), c.setBearing(s.getBearing()), f.setPitch(s.getPitch()));
|
|
1154
1154
|
}
|
|
1155
|
-
}, [c, f]), /* @__PURE__ */ l(
|
|
1155
|
+
}, [c, f]), /* @__PURE__ */ l(he, {
|
|
1156
1156
|
title: "卷帘对比",
|
|
1157
1157
|
mask: { closable: !1 },
|
|
1158
1158
|
open: !n,
|
|
@@ -1192,39 +1192,50 @@ var me = t((e) => {
|
|
|
1192
1192
|
})]
|
|
1193
1193
|
})
|
|
1194
1194
|
});
|
|
1195
|
-
}),
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1195
|
+
}), _e = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAARxJREFUWEft1LEuREEYxfHf9jRLIRIqnUSpoOEFREUh3kFBo6LYKEj0StEp8ARUEvUmOg2NSHT07pW73XK/mZBtZto5c87/npn7dYx4dUacrwCUBkoDpYHcBiYwjTG84g2fOUMtB+AYu0PC9nGUCpEK8IyZX0IOq72DFIgUgFusBMw3cBnQfUuiAOu4ippivLqmj4g+ClDfby9i2Gjm8BTRRwFusBYxbDTLuI/oowCn2IkYNpoF9CP6KMA2ziOGjWYS7xF9FKDbfFE9fNrWSTWU9tpEg/0oQK3fwkWL8Qtmo+Epv+HAc6kawWfVfz4/JOQOqynhOQD1mXr+b2IRU3jAI65Tw3MBcnJ+PJPyBv40OOcRFoDSQGngXxr4App1HCGF2UdQAAAAAElFTkSuQmCC", ve = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAp1JREFUWEe9l0uIjlEYx3+zsZGFsqCUe0hEiXFJ7iklxUxZMcVIE7IZFm4TJWYzLolQLKYmTKLIJYaYRolyySULpMRmFkwoC85/Oq/ejvO93zlHvWf7vc95fu/z/J//8341lHuWArOBJ8AVpa4pMf9eYE8u311gQVkAdcB5z8vWlwXgvn3G0lIWwFjgracC48oCUG63CmeBhmoAs4CJwC/gKtD7H6JtBg4C14FNwPtqU6CRueEkHGqCvyRC3JHqge3AoeyOogo8BGY6yY6aKmxJABicq94M4FEIwFdgkJPsmglengCwErgEPAem5OOLKnAfmOska7FiimU4AWwEjgBbQwHmA12eTCkQEtwIQJW4HApQC/QALwE52aScm8VAzAEeWA0MMXb8OxRgH7ATOAOst0F5Sw2FyMavE1jtVrRIA9pY04ANwOlcYCzETWAJ0AicCgVQv9S3PjuKakP+hELIxLLYYcDnUACVXLS3ABmS74RAZPdIS/oO+OdUaoFmVoqVDnYXzFw1CPn9WmAXsD8UYKBV7ABgYYVRDGmHbFvqHwNMBZ6GAqyws/oGmBDoOL5KrAIumo33ARhZ6R5fCw5bvz9nhLguEECPuRDaI8uAY8DmGAB9OOgDYo2pQEcEgAuRhX4zK1im5k5S/+9uBaTUbrMyfxhyudb3SACN2idPjOslfx9xAaR4OdxtI6DFkcn1uDadT2xNwPEQEd4D5tmNpc2Vcj4a5xzuBKqy8oJCHxgPvLZPjDbz+y4lux27VmAR8Mr6iOzYe7IWSO3606BxeQFMTkweHSaAHcABJ7LerN8L0bclBAjgmeeNHwPTE+6LDhGAeu06lTbhqOjbEgIEcNLu6nx4G7At4b7okEyEEqBW50+g3dyifzGlnD8S4H8a/N0aLAAAAABJRU5ErkJggg==", ye = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAASxJREFUWEft16FKBWEQBeDvvodBRCw+gFWbgtVkEkWLil6wGbSLgiZBxKDFajB6owgGwSQ3GMTmMyhz3YVluRdW+BcM/4FlYXf2zPnPzMJMxy92cYx7POGgeJ76dooFfOEGZx1sIV5UsYKrxNmH5emGgEfMJE7WmC4EvGK69sUbPhuzNAscR1xV9EJA1D56oIo59JrxNo5axnUt+jAEBMr6vGO/aJDGzH8InMU5pjDos1JAcHwXp47Tt4kHhJBB7iwgO5AdyA5kB7ID2YHsQHbg3ziwXgyLMaYdYa+loXAztqGCe7vcjG6xVEvYxUliEYu4q3EOVrOYhuv4QD+xgDFM1jj7owQkzj2S7jkEDCvBKi4Tq4gyR64qNsq/YA2xOgUuWtyMQsQ8JrCDlx+OVWdvFenv8gAAAABJRU5ErkJggg==", be = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAxVJREFUWEe1133InnMUB/DPKCQS87ZQtrJ5yT8LUShaJKHWzMSaWqkt07LyEjEvQykrL2WRFautoZBt3hoRhkRqjLyUKMuyGLHWan3X73q6unff7t+953Lq6um5nt855/s7z/ec870mqLfDcBeuwd94E7fUu/c/OWGEAIuxvOf8Ejw6Qox9jo4C4HtM6ZPsM/Q+/TAdWfx/xtbmwCgANuP0ytt+hE3IzzznYW3L9znMy++jAHgIt/cAeAw7cApOKwAPrAR5L5bWAjgKH+DUEjzVGETCizEV03AGzsTxfUC9jstqATyM2/Aqrqq8YXPsEPzTxyfkXVID4AK8iwNKmbeMCCDHV+DGlt83mImvagC8XG79CG7dj+SNy7VYiYNxOdbXkHA+nsFfCA92jQNAXH/EyTgRvwwDkJJ/WYi0AE+NM3ncPywteQ4+HQbgAdyJzzG9g+QJ8VL534fIIfTAOXASvsNBuLS0XBcYHsdNGKvoIBKuKUvnRVzdReYS4w48iPtwz6AK5MYZErFUIrO7K7uhdMLTTVv2q0DIcRaWlfXbVfLEuQRv4DVc0a7AE6U38y5t8jsmdpm5xMpYTmeNETsVWIgne5KFLDf/DwCOxm/4FZOaCvTb8+mALJ7dHYPIpoyayjQ8BttSgZDshJ5E28vk6zj/3nA/YHIZcHt3QXb6op5MUTghYteWcf4KzseFeD8ADkWmXhia/d1Y9sCzHSK4srRgQMS2YX67DQ8vxIj4zKT6s4D6uCMQ7yGrvW0bBk3C5vAnpVQ79xPE2ZhRej66cB8bBCD67h0chzEBWQkiJU5rR5pdNMRn/X8JknyAZCfE8gHS+03Qjn0EZpUnibPEGguhox834n6cW/7wBxYPU0R3I+o1lnlxLL4uUzM6Lze8vnAlur+xb/EW1mFD633Uc6RYtEbefzEMQHxX4bqeUiZ4BlWWVWOZbm+XNssWrbIaAOHA3AHRUoUsl5Q4eu/fqqytQzUAVmNOn8DhRRTOT6MmbZ+vAZDbpwptewGzx5O48a0BkLNLizTPAomYeL7M9HFj2AMTmY45mDBG5AAAAABJRU5ErkJggg==", xe = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAuRJREFUWEfVl1moTWEUx3+31M1U5JYxxQuJa7xvEg+UMpOkDFcevChEGUMi8/gkD24kSaIkRJEhM1cyJA83JMKD5AUPvv9tfVpOe5999j3XkVX7tPfZa/h/3/p/a61dxT+Wqn8cn/8SwAhgHDAW6Ap0A9oDH+y6C5wHrgNfsnY4zw6MBhYD07Kc2vu3wD5gP/A9zaYUAG3NycIUJ2+A98AA24lCtYfAVuBkkn0WgB7AYdvyaH8BOAe8ABqBT85xf2CgXesLAq4EthWCKAagD3AGqDWjp8B24EiJKRBPpD/Y6eu/S96+GIBjwGwXfCbwrMTgXm15SM0O98cw4FF8TgMgsok8ktfA+BYGj3GWArvt4SowphDAhsDwz8ABoNqC9TWlRcDBFqy80OQKoJMk2Rh+FLO5EOkmEmY60AY4YYriwNRWCC4XQwGdiCjiWJMAiBgX3QuRbK49a6s6hDQsAI6nHaUcAP1i64GGyAEdtfnmSKnoEgj4ErjtwLwDeuYIlqQ6yxaidw1AfQQwCLgGdHJWX4GO7vl33soAoRrxxOzvh3pS50/BWmBTgnOxVpXMp6kMDHwL9aEdoAra2wPQ6i8Dw837j1DDVwcO7CwnWoLtPUANTf2hurAOzLPcnALWAc9bObjcaeW97NjXJBWiOcDRvxBYLrsDIrNEXKjNakatjWNCSPFZX2MqDWCFNShhUHneW0kAKvF3XHdUZWysJIBloa7ssu0XyWfovlIAaoCPjlCjbGbMBKDuVQe8Clt3ugxGqurF+rIFWBN9Ze2A5sBDpqwxbDNwKweQPcASp38zFLuR3j4LgAZNjWJRfhoIHaUHRYBMsRY/xOk0AWrBf0gWAClr0NQ0o6nIixgtIBpKdamLTgrj1uQwN8ZhJuo3d74kwKUAiHarAOUvj2jV6qICkCh5AMhBv7D1E+0Sk9PkBqAvJI14ApEqeQF4R/okU447u+uxDTH+W6HojpUDIE8qUnV/AUEbfiHgdnTrAAAAAElFTkSuQmCC", Se = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA71JREFUWEfNl2nIVlUQx3+vgoRrai6lpaaiJbgU5QeXygVREVdUxF0RTa0oF3BBW6AFxRUXXHLrg5qgIgruS35QM1ooI3LFXdyKKAiq83+ZI+Pj83jPKynOpzlzZ87935n/mTm3iHTZB7ye6L4feCPFtyjFyXz+LYGvXJP2TnLKAfB+BpAZ9jxp7ySnPABmFgAh+wMBGAoMyfiyWH/V936S6rcaWKUMPA1cLGF9/w/3G0DVWILPAWXhUcoqYFhJOPBQwD2WACoAv9nn1gSuuE+vayxfAhzJSUkvoDKwIsdeA7hstmeAS/55vgxMAz40p4+A6S4gHrMzwPMBjG9OUR8mdrsY7aU9JW2BQ1kAxgV2LjCnecA7LmAqIFCSMsDfpj8B/Gn6FOBjFzMXeNvWLYBvswAMCl+3xpxWAiNcwGTgE1uXdS9V6nWsJO8Cc1yMSjLc1g2Ak1kAugFbzWkD0M8FvAfMsnVF4HfTfS8ZA4gjUdYDfW2Ry6m8A6MNcNACdgBd3GZKpVIqqRJSe9P0esAp03M5sD0QtrM9Kw/8kZWBpsB35vQVIEBRxgILbSF2XzX9ReBH0/sD+uooIl1r4J9A7tL+5dLznYLnQoc6a44C0twFjQqte6mta7kW/hJw3Ow9gC0uRqRrBtwO2XsyBUClwPxb5qi01ndBIlM853UCuc7Zs1aAsiXpBOx0MSKdjuz5EPtsCgD5KF3KzjWgugsaDGiKSQQs1r19SPNus7/mOCSTylQN+DmU5oVUACKX0vUXUM4AKXYA8IVt0iisfzG9K7DN9FeBY6aXMtKpT8imZ3dJoVlwOnQztV2JgKh+Eh2nSLAmYf2T2fsAG00XiX8w3ZdTd8p2qQAiceRfG7hgger3m0wXsb43fWAoyVrTGwK/mi6iqvYS9ZbuqQB061EtJaqb6ifxTepl4BuzjwSWmS6ixZc2Do3shNlVOgG9SwqVYLND62uqhqLGImkZmtRR08eHxjTf9KeA66a/4nx0fEenAhDTxXiJGL7X9I7uiKm5HDb7ROAz0323U833mH02MCEVgKbgW+bsG4t+NiIYXT4PmI9G9gemq9vpGEtUc2VTouv8PbfpQiXQZvEeoOm4ziH/OkxEHSs1nEhOnRhlQ8fS/xF5cipLcZDd2a4QAI1UpUzyJrA4N3WJa03GReabOyWLzYUA6A6w3AJ1B4j1TXzvHbdJwKe2ys3kfQH0Br60wKwfkSxQ8Uelp+NDZgk6ALuydi7hc52gOC8yAei2o5Ga+juehaX4JySf03+JLrAhSDUYWAAAAABJRU5ErkJggg==", Ce = {
|
|
1196
|
+
Swipe: "data:image/png;base64,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",
|
|
1197
|
+
Legend: "data:image/png;base64,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",
|
|
1198
|
+
LayerList: "data:image/png;base64,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",
|
|
1199
|
+
Print: "data:image/png;base64,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",
|
|
1200
|
+
Clear: "data:image/png;base64,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",
|
|
1201
|
+
MeasureLine: "data:image/png;base64,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",
|
|
1202
|
+
MeasurePolygon: "data:image/png;base64,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",
|
|
1203
|
+
ZoomIn: "data:image/png;base64,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",
|
|
1204
|
+
ZoomOut: "data:image/png;base64,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",
|
|
1205
|
+
FullScreen: "data:image/png;base64,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"
|
|
1206
|
+
}, V = {
|
|
1207
|
+
Point: _e,
|
|
1208
|
+
Line: ve,
|
|
1209
|
+
Rectangle: ye,
|
|
1210
|
+
Polygon: be,
|
|
1211
|
+
Trash: Se,
|
|
1212
|
+
Reset: xe
|
|
1213
|
+
}, H = [
|
|
1203
1214
|
{
|
|
1204
1215
|
id: "point",
|
|
1205
1216
|
title: "绘制点:点击地图绘制点要素",
|
|
1206
1217
|
mode: "draw_point",
|
|
1207
|
-
icon:
|
|
1218
|
+
icon: V.Point
|
|
1208
1219
|
},
|
|
1209
1220
|
{
|
|
1210
1221
|
id: "line",
|
|
1211
1222
|
title: "绘制线:点击地图开始,双击结束绘制线要素",
|
|
1212
1223
|
mode: "draw_line_string",
|
|
1213
|
-
icon:
|
|
1224
|
+
icon: V.Line
|
|
1214
1225
|
},
|
|
1215
1226
|
{
|
|
1216
1227
|
id: "polygon",
|
|
1217
1228
|
title: "绘制面:点击地图开始,双击结束绘制面要素",
|
|
1218
1229
|
mode: "draw_polygon",
|
|
1219
|
-
icon:
|
|
1230
|
+
icon: V.Polygon
|
|
1220
1231
|
},
|
|
1221
1232
|
{
|
|
1222
1233
|
id: "reset",
|
|
1223
1234
|
title: "清除:删除所有绘制的要素",
|
|
1224
1235
|
mode: "simple_select",
|
|
1225
|
-
icon:
|
|
1236
|
+
icon: V.Reset
|
|
1226
1237
|
}
|
|
1227
|
-
],
|
|
1238
|
+
], we = [
|
|
1228
1239
|
{
|
|
1229
1240
|
id: "gl-draw-line",
|
|
1230
1241
|
type: "line",
|
|
@@ -1442,8 +1453,8 @@ var me = t((e) => {
|
|
|
1442
1453
|
"circle-color": "#D20C0C"
|
|
1443
1454
|
}
|
|
1444
1455
|
}
|
|
1445
|
-
],
|
|
1446
|
-
let { style: t, classname: n, onDraw: r, initFeature: o, modes: s } = e, c = s ?
|
|
1456
|
+
], Te = t((e) => {
|
|
1457
|
+
let { style: t, classname: n, onDraw: r, initFeature: o, modes: s } = e, c = s ? H.filter((e) => s.includes(e.mode) || e.id === "reset") : H, { map: u } = S(), d = a(null), p = (e) => {
|
|
1447
1458
|
if (u && e.features && d.current) {
|
|
1448
1459
|
let t = d.current.add(e);
|
|
1449
1460
|
d.current.changeMode("simple_select", { featureIds: t });
|
|
@@ -1462,7 +1473,7 @@ var me = t((e) => {
|
|
|
1462
1473
|
o && p(o);
|
|
1463
1474
|
}, [o]), i(() => (u && !d.current && (u.doubleClickZoom.disable(), d.current = new f({
|
|
1464
1475
|
displayControlsDefault: !1,
|
|
1465
|
-
styles:
|
|
1476
|
+
styles: we,
|
|
1466
1477
|
defaultMode: "simple_select"
|
|
1467
1478
|
}), u.addControl(d.current, "bottom-left"), u.on("draw.create", h), u.on("draw.delete", h), u.on("draw.update", h), u.on("draw.modechange", (e) => {
|
|
1468
1479
|
let t = u.getCanvas();
|
|
@@ -1483,7 +1494,7 @@ var me = t((e) => {
|
|
|
1483
1494
|
}, e.id)) })
|
|
1484
1495
|
})
|
|
1485
1496
|
});
|
|
1486
|
-
}),
|
|
1497
|
+
}), Ee = t((e) => {
|
|
1487
1498
|
let { style: t, classname: n, icon: r, onCallback: i } = e, { map: a } = S();
|
|
1488
1499
|
return /* @__PURE__ */ l(T, {
|
|
1489
1500
|
title: "点击清除地图上所有选中对象",
|
|
@@ -1494,7 +1505,7 @@ var me = t((e) => {
|
|
|
1494
1505
|
a && (a.clearSelect(), i?.());
|
|
1495
1506
|
}
|
|
1496
1507
|
});
|
|
1497
|
-
}),
|
|
1508
|
+
}), De = t((e) => {
|
|
1498
1509
|
let { style: t, classname: r, icon: i, onCallback: a } = e;
|
|
1499
1510
|
return /* @__PURE__ */ l(T, {
|
|
1500
1511
|
title: "点击进入或退出全屏",
|
|
@@ -1505,7 +1516,7 @@ var me = t((e) => {
|
|
|
1505
1516
|
document.fullscreenElement ? document.exitFullscreen?.().catch((e) => console.error(`无法退出全屏模式: ${e}`)) : document.documentElement.requestFullscreen().catch((e) => console.error(`无法进入全屏模式: ${e}`)), a?.();
|
|
1506
1517
|
}, [a])
|
|
1507
1518
|
});
|
|
1508
|
-
}),
|
|
1519
|
+
}), Oe = t((e) => {
|
|
1509
1520
|
let { style: t, classname: r, icon: i, onCallback: a } = e, { map: o } = S();
|
|
1510
1521
|
return /* @__PURE__ */ l(T, {
|
|
1511
1522
|
title: "点击放大地图",
|
|
@@ -1516,7 +1527,7 @@ var me = t((e) => {
|
|
|
1516
1527
|
o && (o.zoomTo(o.getZoom() + 1), a?.());
|
|
1517
1528
|
}, [o])
|
|
1518
1529
|
});
|
|
1519
|
-
}),
|
|
1530
|
+
}), ke = t((e) => {
|
|
1520
1531
|
let { style: t, classname: r, icon: i, onCallback: a } = e, { map: o } = S();
|
|
1521
1532
|
return /* @__PURE__ */ l(T, {
|
|
1522
1533
|
title: "点击缩小地图",
|
|
@@ -1527,7 +1538,7 @@ var me = t((e) => {
|
|
|
1527
1538
|
o && (o.zoomTo(o.getZoom() - 1), a?.());
|
|
1528
1539
|
}, [o])
|
|
1529
1540
|
});
|
|
1530
|
-
}),
|
|
1541
|
+
}), U = class {
|
|
1531
1542
|
map;
|
|
1532
1543
|
uuid;
|
|
1533
1544
|
isMeasure = !1;
|
|
@@ -1581,9 +1592,9 @@ var me = t((e) => {
|
|
|
1581
1592
|
let t = this.map.unproject([e.point.x / this.scale, e.point.y / this.scale]);
|
|
1582
1593
|
return [t.lng, t.lat];
|
|
1583
1594
|
}
|
|
1584
|
-
},
|
|
1595
|
+
}, W = 6371008.8, G = 6378137, K = Math.PI / 180, q = (e, t) => {
|
|
1585
1596
|
let n = (t[1] - e[1]) * K, r = (t[0] - e[0]) * K, i = e[1] * K, a = t[1] * K, o = Math.sin(n / 2) ** 2 + Math.cos(i) * Math.cos(a) * Math.sin(r / 2) ** 2;
|
|
1586
|
-
return 2 *
|
|
1597
|
+
return 2 * W * Math.atan2(Math.sqrt(o), Math.sqrt(1 - o)) / 1e3;
|
|
1587
1598
|
}, J = (e) => {
|
|
1588
1599
|
let t = 0;
|
|
1589
1600
|
for (let n = 1; n < e.length; n++) t += q(e[n - 1], e[n]);
|
|
@@ -1599,7 +1610,7 @@ var me = t((e) => {
|
|
|
1599
1610
|
n += (l[0] - s[0]) * K * Math.sin(c[1] * K);
|
|
1600
1611
|
}
|
|
1601
1612
|
return Math.abs(n * G * G / 2);
|
|
1602
|
-
}, X = (e) => e < 1 ? Math.round(e * 1e3) + "m" : e.toFixed(2) + "km", Z = (e, t = "mu") => t === "mu" ? (e * .0015).toFixed(4) + "亩" : e < 1e3 ? Math.round(e) + "m²" : (e / 1e6).toFixed(4) + "km²", Q = class extends
|
|
1613
|
+
}, X = (e) => e < 1 ? Math.round(e * 1e3) + "m" : e.toFixed(2) + "km", Z = (e, t = "mu") => t === "mu" ? (e * .0015).toFixed(4) + "亩" : e < 1e3 ? Math.round(e) + "m²" : (e / 1e6).toFixed(4) + "km²", Q = class extends U {
|
|
1603
1614
|
jsonPoint = {
|
|
1604
1615
|
type: "FeatureCollection",
|
|
1605
1616
|
features: []
|
|
@@ -1726,7 +1737,7 @@ var me = t((e) => {
|
|
|
1726
1737
|
this.addPoint(t), this.points.push(t), this.finishMeasure(t);
|
|
1727
1738
|
}
|
|
1728
1739
|
};
|
|
1729
|
-
},
|
|
1740
|
+
}, Ae = t((e) => {
|
|
1730
1741
|
let { style: t, classname: r, icon: o, onMeasure: s } = e, { map: c } = S(), u = a(null), d = n(() => {
|
|
1731
1742
|
c && (u.current?.clearMeasure(), u.current = new Q(c, s), u.current.start());
|
|
1732
1743
|
}, [c, s]);
|
|
@@ -1739,7 +1750,7 @@ var me = t((e) => {
|
|
|
1739
1750
|
classname: r,
|
|
1740
1751
|
onToggle: d
|
|
1741
1752
|
});
|
|
1742
|
-
}), $ = class extends
|
|
1753
|
+
}), $ = class extends U {
|
|
1743
1754
|
unit;
|
|
1744
1755
|
jsonPoint = {
|
|
1745
1756
|
type: "FeatureCollection",
|
|
@@ -1863,7 +1874,7 @@ var me = t((e) => {
|
|
|
1863
1874
|
this.map.getSource("polygonLines" + this.uuid).setData(n), this.finishMeasure(t);
|
|
1864
1875
|
}
|
|
1865
1876
|
};
|
|
1866
|
-
},
|
|
1877
|
+
}, je = t((e) => {
|
|
1867
1878
|
let { style: t, classname: r, icon: o, unit: s = "mu", onMeasure: c } = e, { map: u } = S(), d = a(null), f = n(() => {
|
|
1868
1879
|
u && (d.current?.clearMeasure(), d.current = new $(u, s, c), d.current.start());
|
|
1869
1880
|
}, [
|
|
@@ -1882,4 +1893,4 @@ var me = t((e) => {
|
|
|
1882
1893
|
});
|
|
1883
1894
|
});
|
|
1884
1895
|
//#endregion
|
|
1885
|
-
export { g as BaseLayer,
|
|
1896
|
+
export { g as BaseLayer, U as BaseMeasure, Ee as Clear, Te as Draw, De as FullScreen, v as LayerGroupWrapper, A as LayerList, _ as LayerWrapper, re as Legend, x as MapContext, w as MapWidget, b as MapWrapper, Ae as MeasureLine, je as MeasurePolygon, $ as PolygonMeasure, Q as PolylineMeasure, L as Print, ge as Swipe, Ce as WIDGETICONS, T as WidgetButton, Oe as ZoomIn, ke as ZoomOut, Z as formatArea, X as formatDistance, q as haversineDistance, Y as polygonAreaM2, J as polylineLengthKm, S as useMap };
|
package/dist/qm-map.umd.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("maplibre-gl"),require("react/jsx-runtime"),require("react-dom"),require("@mapbox/mapbox-gl-draw")):typeof define==`function`&&define.amd?define([`exports`,`react`,`maplibre-gl`,`react/jsx-runtime`,`react-dom`,`@mapbox/mapbox-gl-draw`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.QmMap={},e.react,e.maplibre_gl,e.react_jsx_runtime,e[`react-dom`],e._mapbox_mapbox_gl_draw))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e},p=(e,t,n)=>(n=e==null?{}:o(u(e)),f(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e));t=p(t,1),a=p(a,1);function m(e,t=new WeakMap){if(typeof e!=`object`||!e)return e;if(t.has(e))return t.get(e);let n;return e instanceof Date?n=new Date(e.getTime()):e instanceof RegExp?(n=new RegExp(e.source,e.flags),n.lastIndex=e.lastIndex):e instanceof Map?(n=new Map,t.set(e,n),e.forEach((e,r)=>{n.set(m(r,t),m(e,t))})):e instanceof Set?(n=new Set,t.set(e,n),e.forEach(e=>{n.add(m(e,t))})):Array.isArray(e)?(n=[],t.set(e,n),e.forEach((e,r)=>{n[r]=m(e,t)})):(n=Object.create(Object.getPrototypeOf(e)),t.set(e,n),Reflect.ownKeys(e).forEach(r=>{let i=e[r];n[r]=m(i,t)})),n}var h=(e,t)=>{let n=null;return r=>{n&&clearTimeout(n),n=setTimeout(()=>{e(r)},t)}},g=(e,t)=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{e.push(t),t.layers instanceof Array&&g(e,t.layers)})},_=class{_options;get options(){return this._options}constructor(e){this._options=e}onAdd(e,t){if(this._options.isAdd===!1){this._options.isAdd=!1;return}t=e.findValidBeforeId(this._options.id),this.add(e,t),this._options.isAdd=!0}onRemove(e,t){if(this._options.isAdd)return;e.getLayer(this._options.id)&&e.removeLayer(this._options.id);let n=this._options.id+`-ds`;t&&e.removeSource(n),this._options.isAdd=!1}},v=class extends _{constructor(e){super(e),this._options=e}add(e,t){let{id:n,source:r}=this._options,i=this._options.id+`-ds`;typeof r==`string`&&(i=r),!e.getSource(i)&&r&&typeof r!=`string`&&e.addSource(i,r);let a=e.getLayer(n),o=e.getSource(i);if(!a&&o){let n={...this._options,source:i};e.addLayer(n,t)}}},y=class e{_options;get options(){return this._options}_layers=[];get layers(){return this._layers}constructor(t){this._options=t,t.layers.forEach(t=>{let n;n=`layers`in t?new e(t):new v(t),this._layers.push(n)})}onAdd(e,t){this._layers.forEach(n=>{e.addLayerWrapper(n,t)}),this.updateOptions()}onRemove(e){this._layers.forEach(t=>{e.removeLayerWrapper(t,!1)}),this.updateOptions()}updateOptions(){let e=this._layers.findIndex(e=>e.options.isAdd)>-1;this._options.isAdd=e}},b={MAPINITED:`MAPINITED`,MAPCLICKED:`MAPCLICKED`,MAPLAYERCHANGED:`MAPLAYERCHANGED`,MAPDESTRORY:`MAPDESTRORY`},x=class extends n.Map{_id;get id(){return this._id}_options;get options(){return this._options}_mapLayerSetting;get mapLayerSetting(){return this._mapLayerSetting}_images=[];get images(){return this._images}_layers=[];get layers(){return this._layers}constructor(e){super(e),this._options=e,this._id=e.id,this._mapLayerSetting=[],this.fire(b.MAPINITED,{map:this})}getLayerWrapper(e,t){for(let n of e)if(n.options.id===t)return n;else if(`layers`in n){let e=this.getLayerWrapper(n.layers,t);if(e)return e}}addLayerWrapper(e,t){e.onAdd(this,t),this.fire(b.MAPLAYERCHANGED,{map:this,layer:e})}removeLayerWrapper(e,t){e.onRemove(this,t),this.fire(b.MAPLAYERCHANGED,{map:this,layer:e})}load(e){this._mapLayerSetting=e,e.forEach(e=>{let t;t=`layers`in e?new y(e):new v(e),this.addLayerWrapper(t),this._layers.push(t)})}selectFeature(e){this.clearSelect();let t=`selected-ds`;this.addSource(t,{type:`geojson`,data:e}),this.addLayer({id:`selected-lyr`,type:`line`,paint:{"line-color":`#00ffff`,"line-width":2},source:t})}clearSelect(){let e=`selected-lyr`;this.getLayer(e)&&(this.removeLayer(e),this.removeSource(`selected-ds`))}findValidBeforeId(e){let t=this.getLayerList(),n=t.findIndex(t=>t.options.id===e);if(n>-1)for(let e=n;e<t.length;e++){let n=this.getLayer(t[e].options.id);if(n)return n.id}}getLayerList(){let e=[];return g(e,this.layers),e}destory(){this.fire(b.MAPDESTRORY,{map:this}),this.remove()}},S=(0,t.createContext)({map:null}),C=()=>{let e=(0,t.useContext)(S);if(!e)throw Error(`只能在函数组件中使用`);return e};function w(e){let{mapOptions:n,mapLayerSettting:i,children:a,onMapLoad:o,className:s}=e,c=(0,t.useRef)(null),[l,u]=(0,t.useState)(!1),{current:d}=(0,t.useRef)({map:null});return(0,t.useEffect)(()=>{let e=new x({pitch:0,bearing:0,doubleClickZoom:!1,attributionControl:!1,renderWorldCopies:!1,trackResize:!0,...n,container:c.current,style:{version:8,glyphs:`/font/{fontstack}/{range}.pbf`,sources:{},layers:[]}}),t=()=>{e.load(m(i)),u(!0),o?.(e),d&&(d.map=e)};e.on(`load`,t),e.on(`click`,()=>{console.log(`center:`,e.getCenter(),`zoom:`,e.getZoom())});let r=h(()=>{e.resize()},10);return new ResizeObserver(r).observe(c?.current),()=>{e.off(`load`,t)}},[]),(0,r.jsx)(`div`,{ref:c,className:s??`map-wrapper`,id:`map-wrapper`,children:l&&d&&(0,r.jsx)(S.Provider,{value:d,children:a})})}var T=(0,t.memo)(w),E=(0,t.memo)(e=>{let{style:t,onToggle:n,title:i,icon:a,classname:o}=e;return(0,r.jsx)(`div`,{className:`maplibregl-widget-button ${o||``}`,onClick:()=>n?.(!0),title:i||``,style:{...a?{backgroundImage:`url(${a})`}:{},...t}})}),D=(e,t)=>{for(let n of e){if(n.key===t)return n;if(n.children){let e=D(n.children,t);if(e)return e}}return null},O=e=>{let t=[];return e.children&&e.children.length>0&&e.children.forEach(e=>{t.push(e.key),t.push(...O(e))}),t},k=e=>!e.children||e.children.length===0,ee=(e,t)=>t.includes(e.key),te=(e,t)=>{if(k(e))return!1;let n=O(e);if(n.length===0)return!1;let r=n.filter(e=>t.includes(e));return r.length>0&&r.length<n.length},A=(0,t.memo)(e=>{let{node:n,level:i,checkedKeys:a,checkable:o,onCheck:s}=e,[c,l]=(0,t.useState)(!0),u=!k(n),d=ee(n,a),f=te(n,a);return(0,r.jsxs)(`div`,{className:`qm-tree-node`,children:[(0,r.jsxs)(`div`,{className:`qm-tree-node-content`,style:{paddingLeft:i*18},children:[(0,r.jsx)(`span`,{className:`qm-tree-switcher ${u?``:`qm-tree-switcher-noop`} ${c?`qm-tree-switcher-expanded`:``}`,onClick:()=>{u&&l(!c)},children:u&&(0,r.jsx)(`svg`,{viewBox:`0 0 1024 1024`,width:`12`,height:`12`,fill:`currentColor`,children:(0,r.jsx)(`path`,{d:`M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z`})})}),o&&(0,r.jsx)(`span`,{className:`qm-tree-checkbox ${d?`qm-tree-checkbox-checked`:``} ${f?`qm-tree-checkbox-indeterminate`:``}`,onClick:()=>{s(n.key)},children:(0,r.jsxs)(`span`,{className:`qm-tree-checkbox-inner`,children:[d&&(0,r.jsx)(`svg`,{viewBox:`0 0 1024 1024`,width:`10`,height:`10`,fill:`white`,children:(0,r.jsx)(`path`,{d:`M912 224l-448 448-192-192-64 64 256 256 512-512z`})}),f&&(0,r.jsx)(`span`,{className:`qm-tree-checkbox-indeterminate-icon`})]})}),(0,r.jsx)(`span`,{className:`qm-tree-node-title`,title:typeof n.title==`string`?n.title:``,children:n.title})]}),u&&c&&(0,r.jsx)(`div`,{className:`qm-tree-children`,children:n.children.map(e=>(0,r.jsx)(A,{node:e,level:i+1,checkedKeys:a,checkable:o,onCheck:s},e.key))})]})}),j=(0,t.memo)(e=>{let{treeData:n,checkable:i=!1,checkedKeys:a,onCheck:o,style:s}=e,[c,l]=(0,t.useState)([]),u=a!==void 0,d=u?a:c,f=(e,t)=>{let r=D(n,t);if(!r)return e;let i=e.includes(t),a;if(i){let n=O(r),i=new Set([t,...n]);a=e.filter(e=>!i.has(e))}else{let n=O(r);a=Array.from(new Set([...e,t,...n]))}return a},p=(0,t.useCallback)(e=>{if(u){let t=f(d,e);o?.(t)}else l(t=>{let n=f(t,e);return o?.(n),n})},[d,n,u,o]);return(0,r.jsx)(`div`,{className:`qm-tree`,style:s,children:n.map(e=>(0,r.jsx)(A,{node:e,level:0,checkedKeys:d,checkable:i,onCheck:p},e.key))})}),M=(0,t.memo)(e=>{let{style:n,close:i,classname:a,onCallback:o}=e,[s,c]=(0,t.useState)([]),{map:l}=C(),[u,d]=(0,t.useState)([]),f=(0,t.useCallback)((e,t)=>{let n,r=[];return e.forEach(e=>{n=void 0,n=`layers`in e&&e.options.type===`logicGroup`?{title:e.options.name,key:e.options.id,selectable:!1,children:f(e.layers,t)}:{title:e.options.name,key:e.options.id,selectable:!1},n&&r.push(n),e.options.isAdd&&e.options.type!==`logicGroup`&&t.push(e.options.id)}),r},[]),p=e=>{c(e),o?.(e);let t=new Set([...s,...e]),n=new Set([...t].filter(e=>!s.includes(e))),r=new Set([...t].filter(t=>!e.includes(t)));n.forEach(e=>{let t=l?.getLayerWrapper(l.layers,e);t&&`layers`in t?(t.layers.forEach(e=>{e.options.isAdd=!0}),l?.addLayerWrapper(t)):t&&(t.options.isAdd=!0,l?.addLayerWrapper(t))}),r.forEach(e=>{let t=l?.getLayerWrapper(l.layers,e);t&&`layers`in t?(t.layers.forEach(e=>{e.options.isAdd=!1}),l?.removeLayerWrapper(t)):t&&(t.options.isAdd=!1,l?.removeLayerWrapper(t))}),l.layers.forEach(e=>{m(e)})},m=e=>{`layers`in e&&e.layers.findIndex(e=>e.options.type===`logicGroup`)>-1?e.layers.forEach(e=>{m(e)}):`layers`in e&&e.options.type===`logicGroup`&&(e.layers.findIndex(e=>e.options.isAdd)===-1?e.options.isAdd=!1:e.options.isAdd=!0)};return(0,t.useEffect)(()=>{let e=()=>{let e=[];d(l?f(l.layers,e):[]),c(e)},t=h(()=>{e()},300);return l?.on(b.MAPLAYERCHANGED,t),e(),()=>{l?.off(b.MAPLAYERCHANGED,t)}},[]),(0,r.jsx)(`div`,{className:`qm-maplibregl-layerlist ${a||``}`,style:{display:i?`none`:`block`,...n},children:(0,r.jsx)(j,{checkable:!0,checkedKeys:s,onCheck:e=>p(e),treeData:u})})}),ne=(0,t.memo)(e=>{let{style:n,close:i,classname:a}=e,{map:o}=C(),[s,c]=(0,t.useState)(),l=(0,t.useCallback)((e,t)=>{let n;e.forEach(e=>{if(n=void 0,`layers`in e&&!e.options.legend)l(e.layers,t);else if(e.options.legend&&(e.options.isAdd||`layers`in e&&e.layers.filter(e=>e.options.isAdd).length)){let{title:t,items:i}=e.options.legend;if(i)n=(0,r.jsxs)(`div`,{className:`qm-maplibregl-legend-group`,children:[(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-tilte`,children:t||e.options.name}),i?.map(e=>{let t=o?.images.find(t=>t.id===e.imageId);return(0,r.jsxs)(`div`,{className:`qm-maplibregl-legend-item`,children:[t?(0,r.jsx)(`img`,{src:t.data,alt:``,className:`qm-maplibregl-legend-item-img`}):(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-item-geo`,style:e.style}),(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-item-text`,children:e.text})]},e.text)})]},e.options.id);else{let{style:i,imageId:a,text:s}=e.options.legend,c=o?.images.find(e=>e.id===a);n=(0,r.jsxs)(`div`,{className:`qm-maplibregl-legend-item`,children:[c?(0,r.jsx)(`img`,{src:c.data,alt:``,className:`qm-maplibregl-legend-item-img`}):(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-item-geo`,style:i}),(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-item-text`,children:s||e.options.name})]},s||t||e.options.id)}}else n=void 0;n&&t.push(n)})},[]);return(0,t.useEffect)(()=>{let e=()=>{let e=[];l(o.layers,e),c(e)},t=h(()=>{e()},200);return o?.on(b.MAPLAYERCHANGED,t),e(),()=>{o?.off(b.MAPLAYERCHANGED,t)}},[]),(0,r.jsxs)(`div`,{className:`qm-maplibregl-legend ${a||``}`,style:{display:i?`none`:`block`,...n},children:[(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-title`,children:`图例`}),s]})}),N={JPEG:`jpg`,PNG:`png`,PDF:`pdf`,SVG:`svg`},P={mm:`mm`},F={A2:[594,420],A3:[420,297],A4:[297,210],A5:[210,148],A6:[148,105],B2:[707,500],B3:[500,353],B4:[353,250],B5:[250,176],B6:[176,125],Letter:[279,216]},I={横向:`landscape`,纵向:`portrait`},L={72:72,96:96,200:200,300:300,400:400},re=class{map;svgCanvas;constructor(e){this.map=e,this.svgCanvas=null}create(){if(!this.map)return;let e=this.map.getCanvasContainer(),t=this.map.getCanvas().clientWidth,n=this.map.getCanvas().clientHeight,r=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);r.setAttribute(`class`,`qm-print-crosshair`),r.style.cssText=`position:absolute;top:0;left:0;width:${t}px;height:${n}px;pointer-events:none;`;let i=t/2,a=n/2,o=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);o.setAttribute(`x1`,`${i}`),o.setAttribute(`y1`,`0`),o.setAttribute(`x2`,`${i}`),o.setAttribute(`y2`,`${n}`),o.setAttribute(`stroke`,`#dddddd`),o.setAttribute(`stroke-width`,`2`),o.setAttribute(`stroke-dasharray`,`5,5`);let s=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);s.setAttribute(`x1`,`0`),s.setAttribute(`y1`,`${a}`),s.setAttribute(`x2`,`${t}`),s.setAttribute(`y2`,`${a}`),s.setAttribute(`stroke`,`#dddddd`),s.setAttribute(`stroke-width`,`2`),s.setAttribute(`stroke-dasharray`,`5,5`),r.appendChild(o),r.appendChild(s),e.appendChild(r),this.svgCanvas=r}destroy(){this.svgCanvas?.remove(),this.svgCanvas=null,this.map=null}},ie=class{map;svgCanvas;path;constructor(e){this.map=e,this.svgCanvas=null,this.path=null}updateArea(e,t,n=P.mm){if(!this.map||!this.svgCanvas)return;let r=this.map.getCanvas().clientWidth,i=this.map.getCanvas().clientHeight,a=this.toPixels(e,n),o=this.toPixels(t,n),s=r/a,c=i/o,l=Math.min(s,c,1),u=a*l,d=o*l,f=(r-u)/2,p=(i-d)/2,m=f+u,h=p+d,g=`M 0 0 L ${r} 0 L ${r} ${i} L 0 ${i} Z M ${f} ${p} L ${m} ${p} L ${m} ${h} L ${f} ${h} Z`;this.path?.setAttribute(`d`,g)}create(){if(!this.map)return;let e=this.map.getCanvasContainer(),t=this.map.getCanvas().clientWidth,n=this.map.getCanvas().clientHeight,r=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);r.style.cssText=`position:absolute;top:0;left:0;width:${t}px;height:${n}px;pointer-events:none;`;let i=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);i.setAttribute(`fill`,`#888888`),i.setAttribute(`fill-opacity`,`0.5`),i.setAttribute(`stroke-width`,`0`),i.setAttribute(`fill-rule`,`evenodd`),r.appendChild(i),e.appendChild(r),this.svgCanvas=r,this.path=i}destroy(){this.svgCanvas?.remove(),this.svgCanvas=null,this.path=null,this.map=null}toPixels(e,t){return t===P.mm?96/25.4*e:96*e}},ae=class{toPNG(e,t){e.toBlob(e=>{if(e){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}})}toJPEG(e,t,n=.85){let r=document.createElement(`canvas`);r.width=e.width,r.height=e.height;let i=r.getContext(`2d`);i&&(i.fillStyle=`#FFFFFF`,i.fillRect(0,0,r.width,r.height),i.drawImage(e,0,0));let a=r.toDataURL(`image/jpeg`,Math.max(0,Math.min(1,n))),o=document.createElement(`a`);o.href=a,o.download=t,o.click()}},R=`<svg width="800px" height="800px" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--gis" preserveAspectRatio="xMidYMid meet"><path d="M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z" fill="none" stroke="white" stroke-width="1.5"/><path d="M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z" fill="#000000" fill-rule="evenodd"></path></svg>`,oe={image:R,imageName:`gl-export-north-icon`,imageSizeFraction:.05,visibility:`visible`,position:`top-right`},se=class{options;constructor(e){this.options={...oe,...e,image:e?.image??R}}async addToMap(e,t,n){let r=this.options.visibility??`visible`;e.getZoom()<2&&t>n&&(r=`none`),await this.addNorthIconImage(e);let i=this.getIconWidth(e,this.options.imageSizeFraction??.08)*.8,a=this.getElementPosition(e,this.options.position??`top-right`,i),o=e.unproject(a),s=this.options.imageName??`gl-export-north-icon`;e.addSource(s,{type:`geojson`,data:{type:`Feature`,geometry:{type:`Point`,coordinates:[o.lng,o.lat]},properties:{}}}),e.addLayer({id:s,source:s,type:`symbol`,layout:{"icon-image":s,"icon-size":1,"icon-rotate":e.getBearing()*-1,"icon-allow-overlap":!0,"icon-ignore-placement":!0,visibility:r},paint:{}})}async addNorthIconImage(e){let t=this.getIconWidth(e,this.options.imageSizeFraction??.08);return new Promise(n=>{let r=new Image(t,t);r.onload=()=>{this.options.imageName&&e.addImage(this.options.imageName,r),n()};function i(e){return`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(e)}this.options.image&&(r.src=i(this.options.image))})}getIconWidth(e,t){let n=e.getContainer(),r=parseInt(n.style.width.replace(`px`,``));return parseInt(`${r*t}`)}getElementPosition(e,t,n=0){let r=e.getContainer(),i=0,a=0;switch(t){case`top-left`:i=0+n,a=0+n;break;case`top-right`:i=parseInt(r.style.width.replace(`px`,``))-n,a=0+n;break;case`bottom-left`:i=0+n,a=parseInt(r.style.height.replace(`px`,``))-n;break;case`bottom-right`:i=parseInt(r.style.width.replace(`px`,``))-n,a=parseInt(r.style.height.replace(`px`,``))-n;break;default:break}return[i,a]}updateOptions(e){this.options={...this.options,...e,image:e.image??this.options.image}}},ce={"circle-radius":8,"circle-color":`red`,"circle-stroke-width":1,"circle-stroke-color":`black`},le=`maplibregl-marker`,ue=class{sourceMap;renderMap;markerClassName;markerCirclePaint;constructor(e,t,n){this.sourceMap=e,this.renderMap=t,this.markerClassName=n?.markerClassName??le,this.markerCirclePaint={...ce,...n?.markerCirclePaint}}getMarkers(){return this.sourceMap.getCanvasContainer().getElementsByClassName(this.markerClassName)}renderMarkers(){let e=this.getMarkers(),t=e.length;if(t===0)return!1;for(let n=0;n<t;n++){let t=e.item(n);if(!t)continue;let r=t.getAttribute(`style`);if(!r)continue;let i=r.match(/translate\(([^,]+)px,\s*([^,]+)px\)/);if(!i)continue;let a=parseInt(i[1]),o=parseInt(i[2]),s=this.sourceMap.unproject([a,o]),c=`print-marker-${n}`;this.renderMap.addSource(c,{type:`geojson`,data:{type:`Point`,coordinates:[s.lng,s.lat]}}),this.renderMap.addLayer({id:c,source:c,type:`circle`,paint:this.markerCirclePaint})}return!0}},de=class{width;height;unit;constructor(e,t,n){this.width=e,this.height=t,this.unit=n}generate(e,t){let n=this.buildPDF(e),r=new Blob([n],{type:`application/pdf`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i)}buildPDF(e){let t=this.unit===P.mm?this.width*2.83465:this.width*72,n=this.unit===P.mm?this.height*2.83465:this.height*72,r=document.createElement(`canvas`);r.width=e.width,r.height=e.height;let i=r.getContext(`2d`);i&&(i.fillStyle=`#FFFFFF`,i.fillRect(0,0,r.width,r.height),i.drawImage(e,0,0));let a=r.toDataURL(`image/jpeg`,.92).split(`,`)[1],o=atob(a),s=new Uint8Array(o.length);for(let e=0;e<o.length;e++)s[e]=o.charCodeAt(e);return this.createPDFStructure(t,n,e.width,e.height,s)}createPDFStructure(e,t,n,r,i){let a=Math.round(e),o=Math.round(t),s=i.length,c=0,l=c;c+=49;let u=c;c+=57;let d=`3 0 obj\n<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${a} ${o}] /Contents 4 0 R /Resources << /XObject << /Im0 5 0 R >> >> >>\nendobj\n`,f=c;c+=d.length;let p=`q\n${a} 0 0 ${o} 0 0 cm\n/Im0 Do\nQ\n`,m=`4 0 obj\n<< /Length ${p.length} >>\nstream\n${p}endstream\nendobj\n`,h=c;c+=m.length;let g=`5 0 obj\n<< /Type /XObject /Subtype /Image /Width ${n} /Height ${r} /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length ${s} >>\nstream\n`,_=c;c+=g.length+s+18;let v=c,y=`xref\n0 6\n0000000000 65535 f \n${String(l).padStart(10,`0`)} 00000 n \n${String(u).padStart(10,`0`)} 00000 n \n${String(f).padStart(10,`0`)} 00000 n \n${String(h).padStart(10,`0`)} 00000 n \n${String(_).padStart(10,`0`)} 00000 n \n`,b=`trailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n${v}\n%%EOF`,x=new TextEncoder,S=[x.encode(`%PDF-1.4
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("maplibre-gl"),require("react/jsx-runtime"),require("react-dom"),require("@mapbox/mapbox-gl-draw")):typeof define==`function`&&define.amd?define([`exports`,`react`,`maplibre-gl`,`react/jsx-runtime`,`react-dom`,`@mapbox/mapbox-gl-draw`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.QmMap={},e.react,e.maplibre_gl,e.react_jsx_runtime,e[`react-dom`],e._mapbox_mapbox_gl_draw))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e},p=(e,t,n)=>(n=e==null?{}:o(u(e)),f(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e));t=p(t,1),a=p(a,1);function m(e,t=new WeakMap){if(typeof e!=`object`||!e)return e;if(t.has(e))return t.get(e);let n;return e instanceof Date?n=new Date(e.getTime()):e instanceof RegExp?(n=new RegExp(e.source,e.flags),n.lastIndex=e.lastIndex):e instanceof Map?(n=new Map,t.set(e,n),e.forEach((e,r)=>{n.set(m(r,t),m(e,t))})):e instanceof Set?(n=new Set,t.set(e,n),e.forEach(e=>{n.add(m(e,t))})):Array.isArray(e)?(n=[],t.set(e,n),e.forEach((e,r)=>{n[r]=m(e,t)})):(n=Object.create(Object.getPrototypeOf(e)),t.set(e,n),Reflect.ownKeys(e).forEach(r=>{let i=e[r];n[r]=m(i,t)})),n}var h=(e,t)=>{let n=null;return r=>{n&&clearTimeout(n),n=setTimeout(()=>{e(r)},t)}},g=(e,t)=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{e.push(t),t.layers instanceof Array&&g(e,t.layers)})},_=class{_options;get options(){return this._options}constructor(e){this._options=e}onAdd(e,t){if(this._options.isAdd===!1){this._options.isAdd=!1;return}t=e.findValidBeforeId(this._options.id),this.add(e,t),this._options.isAdd=!0}onRemove(e,t){if(this._options.isAdd)return;e.getLayer(this._options.id)&&e.removeLayer(this._options.id);let n=this._options.id+`-ds`;t&&e.removeSource(n),this._options.isAdd=!1}},v=class extends _{constructor(e){super(e),this._options=e}add(e,t){let{id:n,source:r}=this._options,i=this._options.id+`-ds`;typeof r==`string`&&(i=r),!e.getSource(i)&&r&&typeof r!=`string`&&e.addSource(i,r);let a=e.getLayer(n),o=e.getSource(i);if(!a&&o){let n={...this._options,source:i};e.addLayer(n,t)}}},y=class e{_options;get options(){return this._options}_layers=[];get layers(){return this._layers}constructor(t){this._options=t,t.layers.forEach(t=>{let n;n=`layers`in t?new e(t):new v(t),this._layers.push(n)})}onAdd(e,t){this._layers.forEach(n=>{e.addLayerWrapper(n,t)}),this.updateOptions()}onRemove(e){this._layers.forEach(t=>{e.removeLayerWrapper(t,!1)}),this.updateOptions()}updateOptions(){let e=this._layers.findIndex(e=>e.options.isAdd)>-1;this._options.isAdd=e}},b={MAPINITED:`MAPINITED`,MAPCLICKED:`MAPCLICKED`,MAPLAYERCHANGED:`MAPLAYERCHANGED`,MAPDESTRORY:`MAPDESTRORY`},x=class extends n.Map{_id;get id(){return this._id}_options;get options(){return this._options}_mapLayerSetting;get mapLayerSetting(){return this._mapLayerSetting}_images=[];get images(){return this._images}_layers=[];get layers(){return this._layers}constructor(e){super(e),this._options=e,this._id=e.id,this._mapLayerSetting=[],this.fire(b.MAPINITED,{map:this})}getLayerWrapper(e,t){for(let n of e)if(n.options.id===t)return n;else if(`layers`in n){let e=this.getLayerWrapper(n.layers,t);if(e)return e}}addLayerWrapper(e,t){e.onAdd(this,t),this.fire(b.MAPLAYERCHANGED,{map:this,layer:e})}removeLayerWrapper(e,t){e.onRemove(this,t),this.fire(b.MAPLAYERCHANGED,{map:this,layer:e})}load(e){this._mapLayerSetting=e,e.forEach(e=>{let t;t=`layers`in e?new y(e):new v(e),this.addLayerWrapper(t),this._layers.push(t)})}selectFeature(e){this.clearSelect();let t=`selected-ds`;this.addSource(t,{type:`geojson`,data:e}),this.addLayer({id:`selected-lyr`,type:`line`,paint:{"line-color":`#00ffff`,"line-width":2},source:t})}clearSelect(){let e=`selected-lyr`;this.getLayer(e)&&(this.removeLayer(e),this.removeSource(`selected-ds`))}findValidBeforeId(e){let t=this.getLayerList(),n=t.findIndex(t=>t.options.id===e);if(n>-1)for(let e=n;e<t.length;e++){let n=this.getLayer(t[e].options.id);if(n)return n.id}}getLayerList(){let e=[];return g(e,this.layers),e}destory(){this.fire(b.MAPDESTRORY,{map:this}),this.remove()}},S=(0,t.createContext)({map:null}),C=()=>{let e=(0,t.useContext)(S);if(!e)throw Error(`只能在函数组件中使用`);return e};function w(e){let{mapOptions:n,mapLayerSettting:i,children:a,onMapLoad:o,className:s}=e,c=(0,t.useRef)(null),[l,u]=(0,t.useState)(!1),{current:d}=(0,t.useRef)({map:null});return(0,t.useEffect)(()=>{let e=new x({pitch:0,bearing:0,doubleClickZoom:!1,attributionControl:!1,renderWorldCopies:!1,trackResize:!0,...n,container:c.current,style:{version:8,glyphs:`/font/{fontstack}/{range}.pbf`,sources:{},layers:[]}}),t=()=>{e.load(m(i)),u(!0),o?.(e),d&&(d.map=e)};e.on(`load`,t),e.on(`click`,()=>{console.log(`center:`,e.getCenter(),`zoom:`,e.getZoom())});let r=h(()=>{e.resize()},10);return new ResizeObserver(r).observe(c?.current),()=>{e.off(`load`,t)}},[]),(0,r.jsx)(`div`,{ref:c,className:s??`map-wrapper`,id:`map-wrapper`,children:l&&d&&(0,r.jsx)(S.Provider,{value:d,children:a})})}var T=(0,t.memo)(w),E=(0,t.memo)(e=>{let{style:t,onToggle:n,title:i,icon:a,classname:o}=e;return(0,r.jsx)(`div`,{className:`maplibregl-widget-button ${o||``}`,onClick:()=>n?.(!0),title:i||``,style:{...a?{backgroundImage:`url(${a})`}:{},...t}})}),D=(e,t)=>{for(let n of e){if(n.key===t)return n;if(n.children){let e=D(n.children,t);if(e)return e}}return null},O=e=>{let t=[];return e.children&&e.children.length>0&&e.children.forEach(e=>{t.push(e.key),t.push(...O(e))}),t},k=e=>!e.children||e.children.length===0,ee=(e,t)=>t.includes(e.key),te=(e,t)=>{if(k(e))return!1;let n=O(e);if(n.length===0)return!1;let r=n.filter(e=>t.includes(e));return r.length>0&&r.length<n.length},A=(0,t.memo)(e=>{let{node:n,level:i,checkedKeys:a,checkable:o,onCheck:s}=e,[c,l]=(0,t.useState)(!0),u=!k(n),d=ee(n,a),f=te(n,a);return(0,r.jsxs)(`div`,{className:`qm-tree-node`,children:[(0,r.jsxs)(`div`,{className:`qm-tree-node-content`,style:{paddingLeft:i*18},children:[(0,r.jsx)(`span`,{className:`qm-tree-switcher ${u?``:`qm-tree-switcher-noop`} ${c?`qm-tree-switcher-expanded`:``}`,onClick:()=>{u&&l(!c)},children:u&&(0,r.jsx)(`svg`,{viewBox:`0 0 1024 1024`,width:`12`,height:`12`,fill:`currentColor`,children:(0,r.jsx)(`path`,{d:`M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z`})})}),o&&(0,r.jsx)(`span`,{className:`qm-tree-checkbox ${d?`qm-tree-checkbox-checked`:``} ${f?`qm-tree-checkbox-indeterminate`:``}`,onClick:()=>{s(n.key)},children:(0,r.jsxs)(`span`,{className:`qm-tree-checkbox-inner`,children:[d&&(0,r.jsx)(`svg`,{viewBox:`0 0 1024 1024`,width:`10`,height:`10`,fill:`white`,children:(0,r.jsx)(`path`,{d:`M912 224l-448 448-192-192-64 64 256 256 512-512z`})}),f&&(0,r.jsx)(`span`,{className:`qm-tree-checkbox-indeterminate-icon`})]})}),(0,r.jsx)(`span`,{className:`qm-tree-node-title`,title:typeof n.title==`string`?n.title:``,children:n.title})]}),u&&c&&(0,r.jsx)(`div`,{className:`qm-tree-children`,children:n.children.map(e=>(0,r.jsx)(A,{node:e,level:i+1,checkedKeys:a,checkable:o,onCheck:s},e.key))})]})}),ne=(0,t.memo)(e=>{let{treeData:n,checkable:i=!1,checkedKeys:a,onCheck:o,style:s}=e,[c,l]=(0,t.useState)([]),u=a!==void 0,d=u?a:c,f=(e,t)=>{let r=D(n,t);if(!r)return e;let i=e.includes(t),a;if(i){let n=O(r),i=new Set([t,...n]);a=e.filter(e=>!i.has(e))}else{let n=O(r);a=Array.from(new Set([...e,t,...n]))}return a},p=(0,t.useCallback)(e=>{if(u){let t=f(d,e);o?.(t)}else l(t=>{let n=f(t,e);return o?.(n),n})},[d,n,u,o]);return(0,r.jsx)(`div`,{className:`qm-tree`,style:s,children:n.map(e=>(0,r.jsx)(A,{node:e,level:0,checkedKeys:d,checkable:i,onCheck:p},e.key))})}),j=(0,t.memo)(e=>{let{style:n,close:i,classname:a,onCallback:o}=e,[s,c]=(0,t.useState)([]),{map:l}=C(),[u,d]=(0,t.useState)([]),f=(0,t.useCallback)((e,t)=>{let n,r=[];return e.forEach(e=>{n=void 0,n=`layers`in e&&e.options.type===`logicGroup`?{title:e.options.name,key:e.options.id,selectable:!1,children:f(e.layers,t)}:{title:e.options.name,key:e.options.id,selectable:!1},n&&r.push(n),e.options.isAdd&&e.options.type!==`logicGroup`&&t.push(e.options.id)}),r},[]),p=e=>{c(e),o?.(e);let t=new Set([...s,...e]),n=new Set([...t].filter(e=>!s.includes(e))),r=new Set([...t].filter(t=>!e.includes(t)));n.forEach(e=>{let t=l?.getLayerWrapper(l.layers,e);t&&`layers`in t?(t.layers.forEach(e=>{e.options.isAdd=!0}),l?.addLayerWrapper(t)):t&&(t.options.isAdd=!0,l?.addLayerWrapper(t))}),r.forEach(e=>{let t=l?.getLayerWrapper(l.layers,e);t&&`layers`in t?(t.layers.forEach(e=>{e.options.isAdd=!1}),l?.removeLayerWrapper(t)):t&&(t.options.isAdd=!1,l?.removeLayerWrapper(t))}),l.layers.forEach(e=>{m(e)})},m=e=>{`layers`in e&&e.layers.findIndex(e=>e.options.type===`logicGroup`)>-1?e.layers.forEach(e=>{m(e)}):`layers`in e&&e.options.type===`logicGroup`&&(e.layers.findIndex(e=>e.options.isAdd)===-1?e.options.isAdd=!1:e.options.isAdd=!0)};return(0,t.useEffect)(()=>{let e=()=>{let e=[];d(l?f(l.layers,e):[]),c(e)},t=h(()=>{e()},300);return l?.on(b.MAPLAYERCHANGED,t),e(),()=>{l?.off(b.MAPLAYERCHANGED,t)}},[]),(0,r.jsx)(`div`,{className:`qm-maplibregl-layerlist ${a||``}`,style:{display:i?`none`:`block`,...n},children:(0,r.jsx)(ne,{checkable:!0,checkedKeys:s,onCheck:e=>p(e),treeData:u})})}),re=(0,t.memo)(e=>{let{style:n,close:i,classname:a}=e,{map:o}=C(),[s,c]=(0,t.useState)(),l=(0,t.useCallback)((e,t)=>{let n;e.forEach(e=>{if(n=void 0,`layers`in e&&!e.options.legend)l(e.layers,t);else if(e.options.legend&&(e.options.isAdd||`layers`in e&&e.layers.filter(e=>e.options.isAdd).length)){let{title:t,items:i}=e.options.legend;if(i)n=(0,r.jsxs)(`div`,{className:`qm-maplibregl-legend-group`,children:[(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-tilte`,children:t||e.options.name}),i?.map(e=>{let t=o?.images.find(t=>t.id===e.imageId);return(0,r.jsxs)(`div`,{className:`qm-maplibregl-legend-item`,children:[t?(0,r.jsx)(`img`,{src:t.data,alt:``,className:`qm-maplibregl-legend-item-img`}):(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-item-geo`,style:e.style}),(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-item-text`,children:e.text})]},e.text)})]},e.options.id);else{let{style:i,imageId:a,text:s}=e.options.legend,c=o?.images.find(e=>e.id===a);n=(0,r.jsxs)(`div`,{className:`qm-maplibregl-legend-item`,children:[c?(0,r.jsx)(`img`,{src:c.data,alt:``,className:`qm-maplibregl-legend-item-img`}):(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-item-geo`,style:i}),(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-item-text`,children:s||e.options.name})]},s||t||e.options.id)}}else n=void 0;n&&t.push(n)})},[]);return(0,t.useEffect)(()=>{let e=()=>{let e=[];l(o.layers,e),c(e)},t=h(()=>{e()},200);return o?.on(b.MAPLAYERCHANGED,t),e(),()=>{o?.off(b.MAPLAYERCHANGED,t)}},[]),(0,r.jsxs)(`div`,{className:`qm-maplibregl-legend ${a||``}`,style:{display:i?`none`:`block`,...n},children:[(0,r.jsx)(`div`,{className:`qm-maplibregl-legend-title`,children:`图例`}),s]})}),M={JPEG:`jpg`,PNG:`png`,PDF:`pdf`,SVG:`svg`},N={mm:`mm`},P={A2:[594,420],A3:[420,297],A4:[297,210],A5:[210,148],A6:[148,105],B2:[707,500],B3:[500,353],B4:[353,250],B5:[250,176],B6:[176,125],Letter:[279,216]},F={横向:`landscape`,纵向:`portrait`},I={72:72,96:96,200:200,300:300,400:400},ie=class{map;svgCanvas;constructor(e){this.map=e,this.svgCanvas=null}create(){if(!this.map)return;let e=this.map.getCanvasContainer(),t=this.map.getCanvas().clientWidth,n=this.map.getCanvas().clientHeight,r=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);r.setAttribute(`class`,`qm-print-crosshair`),r.style.cssText=`position:absolute;top:0;left:0;width:${t}px;height:${n}px;pointer-events:none;`;let i=t/2,a=n/2,o=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);o.setAttribute(`x1`,`${i}`),o.setAttribute(`y1`,`0`),o.setAttribute(`x2`,`${i}`),o.setAttribute(`y2`,`${n}`),o.setAttribute(`stroke`,`#dddddd`),o.setAttribute(`stroke-width`,`2`),o.setAttribute(`stroke-dasharray`,`5,5`);let s=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);s.setAttribute(`x1`,`0`),s.setAttribute(`y1`,`${a}`),s.setAttribute(`x2`,`${t}`),s.setAttribute(`y2`,`${a}`),s.setAttribute(`stroke`,`#dddddd`),s.setAttribute(`stroke-width`,`2`),s.setAttribute(`stroke-dasharray`,`5,5`),r.appendChild(o),r.appendChild(s),e.appendChild(r),this.svgCanvas=r}destroy(){this.svgCanvas?.remove(),this.svgCanvas=null,this.map=null}},ae=class{map;svgCanvas;path;constructor(e){this.map=e,this.svgCanvas=null,this.path=null}updateArea(e,t,n=N.mm){if(!this.map||!this.svgCanvas)return;let r=this.map.getCanvas().clientWidth,i=this.map.getCanvas().clientHeight,a=this.toPixels(e,n),o=this.toPixels(t,n),s=r/a,c=i/o,l=Math.min(s,c,1),u=a*l,d=o*l,f=(r-u)/2,p=(i-d)/2,m=f+u,h=p+d,g=`M 0 0 L ${r} 0 L ${r} ${i} L 0 ${i} Z M ${f} ${p} L ${m} ${p} L ${m} ${h} L ${f} ${h} Z`;this.path?.setAttribute(`d`,g)}create(){if(!this.map)return;let e=this.map.getCanvasContainer(),t=this.map.getCanvas().clientWidth,n=this.map.getCanvas().clientHeight,r=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);r.style.cssText=`position:absolute;top:0;left:0;width:${t}px;height:${n}px;pointer-events:none;`;let i=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);i.setAttribute(`fill`,`#888888`),i.setAttribute(`fill-opacity`,`0.5`),i.setAttribute(`stroke-width`,`0`),i.setAttribute(`fill-rule`,`evenodd`),r.appendChild(i),e.appendChild(r),this.svgCanvas=r,this.path=i}destroy(){this.svgCanvas?.remove(),this.svgCanvas=null,this.path=null,this.map=null}toPixels(e,t){return t===N.mm?96/25.4*e:96*e}},oe=class{toPNG(e,t){e.toBlob(e=>{if(e){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}})}toJPEG(e,t,n=.85){let r=document.createElement(`canvas`);r.width=e.width,r.height=e.height;let i=r.getContext(`2d`);i&&(i.fillStyle=`#FFFFFF`,i.fillRect(0,0,r.width,r.height),i.drawImage(e,0,0));let a=r.toDataURL(`image/jpeg`,Math.max(0,Math.min(1,n))),o=document.createElement(`a`);o.href=a,o.download=t,o.click()}},L=`<svg width="800px" height="800px" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--gis" preserveAspectRatio="xMidYMid meet"><path d="M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z" fill="none" stroke="white" stroke-width="1.5"/><path d="M47.655 1.634l-35 95c-.828 2.24 1.659 4.255 3.68 2.98l33.667-21.228l33.666 21.228c2.02 1.271 4.503-.74 3.678-2.98l-35-95C51.907.514 51.163.006 50 .008c-1.163.001-1.99.65-2.345 1.626zm-.155 14.88v57.54L19.89 91.461z" fill="#000000" fill-rule="evenodd"></path></svg>`,se={image:L,imageName:`gl-export-north-icon`,imageSizeFraction:.05,visibility:`visible`,position:`top-right`},ce=class{options;constructor(e){this.options={...se,...e,image:e?.image??L}}async addToMap(e,t,n){let r=this.options.visibility??`visible`;e.getZoom()<2&&t>n&&(r=`none`),await this.addNorthIconImage(e);let i=this.getIconWidth(e,this.options.imageSizeFraction??.08)*.8,a=this.getElementPosition(e,this.options.position??`top-right`,i),o=e.unproject(a),s=this.options.imageName??`gl-export-north-icon`;e.addSource(s,{type:`geojson`,data:{type:`Feature`,geometry:{type:`Point`,coordinates:[o.lng,o.lat]},properties:{}}}),e.addLayer({id:s,source:s,type:`symbol`,layout:{"icon-image":s,"icon-size":1,"icon-rotate":e.getBearing()*-1,"icon-allow-overlap":!0,"icon-ignore-placement":!0,visibility:r},paint:{}})}async addNorthIconImage(e){let t=this.getIconWidth(e,this.options.imageSizeFraction??.08);return new Promise(n=>{let r=new Image(t,t);r.onload=()=>{this.options.imageName&&e.addImage(this.options.imageName,r),n()};function i(e){return`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(e)}this.options.image&&(r.src=i(this.options.image))})}getIconWidth(e,t){let n=e.getContainer(),r=parseInt(n.style.width.replace(`px`,``));return parseInt(`${r*t}`)}getElementPosition(e,t,n=0){let r=e.getContainer(),i=0,a=0;switch(t){case`top-left`:i=0+n,a=0+n;break;case`top-right`:i=parseInt(r.style.width.replace(`px`,``))-n,a=0+n;break;case`bottom-left`:i=0+n,a=parseInt(r.style.height.replace(`px`,``))-n;break;case`bottom-right`:i=parseInt(r.style.width.replace(`px`,``))-n,a=parseInt(r.style.height.replace(`px`,``))-n;break;default:break}return[i,a]}updateOptions(e){this.options={...this.options,...e,image:e.image??this.options.image}}},le={"circle-radius":8,"circle-color":`red`,"circle-stroke-width":1,"circle-stroke-color":`black`},ue=`maplibregl-marker`,de=class{sourceMap;renderMap;markerClassName;markerCirclePaint;constructor(e,t,n){this.sourceMap=e,this.renderMap=t,this.markerClassName=n?.markerClassName??ue,this.markerCirclePaint={...le,...n?.markerCirclePaint}}getMarkers(){return this.sourceMap.getCanvasContainer().getElementsByClassName(this.markerClassName)}renderMarkers(){let e=this.getMarkers(),t=e.length;if(t===0)return!1;for(let n=0;n<t;n++){let t=e.item(n);if(!t)continue;let r=t.getAttribute(`style`);if(!r)continue;let i=r.match(/translate\(([^,]+)px,\s*([^,]+)px\)/);if(!i)continue;let a=parseInt(i[1]),o=parseInt(i[2]),s=this.sourceMap.unproject([a,o]),c=`print-marker-${n}`;this.renderMap.addSource(c,{type:`geojson`,data:{type:`Point`,coordinates:[s.lng,s.lat]}}),this.renderMap.addLayer({id:c,source:c,type:`circle`,paint:this.markerCirclePaint})}return!0}},fe=class{width;height;unit;constructor(e,t,n){this.width=e,this.height=t,this.unit=n}generate(e,t){let n=this.buildPDF(e),r=new Blob([n],{type:`application/pdf`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i)}buildPDF(e){let t=this.unit===N.mm?this.width*2.83465:this.width*72,n=this.unit===N.mm?this.height*2.83465:this.height*72,r=document.createElement(`canvas`);r.width=e.width,r.height=e.height;let i=r.getContext(`2d`);i&&(i.fillStyle=`#FFFFFF`,i.fillRect(0,0,r.width,r.height),i.drawImage(e,0,0));let a=r.toDataURL(`image/jpeg`,.92).split(`,`)[1],o=atob(a),s=new Uint8Array(o.length);for(let e=0;e<o.length;e++)s[e]=o.charCodeAt(e);return this.createPDFStructure(t,n,e.width,e.height,s)}createPDFStructure(e,t,n,r,i){let a=Math.round(e),o=Math.round(t),s=i.length,c=0,l=c;c+=49;let u=c;c+=57;let d=`3 0 obj\n<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${a} ${o}] /Contents 4 0 R /Resources << /XObject << /Im0 5 0 R >> >> >>\nendobj\n`,f=c;c+=d.length;let p=`q\n${a} 0 0 ${o} 0 0 cm\n/Im0 Do\nQ\n`,m=`4 0 obj\n<< /Length ${p.length} >>\nstream\n${p}endstream\nendobj\n`,h=c;c+=m.length;let g=`5 0 obj\n<< /Type /XObject /Subtype /Image /Width ${n} /Height ${r} /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length ${s} >>\nstream\n`,_=c;c+=g.length+s+18;let v=c,y=`xref\n0 6\n0000000000 65535 f \n${String(l).padStart(10,`0`)} 00000 n \n${String(u).padStart(10,`0`)} 00000 n \n${String(f).padStart(10,`0`)} 00000 n \n${String(h).padStart(10,`0`)} 00000 n \n${String(_).padStart(10,`0`)} 00000 n \n`,b=`trailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n${v}\n%%EOF`,x=new TextEncoder,S=[x.encode(`%PDF-1.4
|
|
2
2
|
`),x.encode(`1 0 obj
|
|
3
3
|
<< /Type /Catalog /Pages 2 0 R >>
|
|
4
4
|
endobj
|
|
@@ -8,7 +8,7 @@ endobj
|
|
|
8
8
|
`),x.encode(d),x.encode(m),x.encode(g),i,x.encode(`
|
|
9
9
|
endstream
|
|
10
10
|
endobj
|
|
11
|
-
`),x.encode(y),x.encode(b)],C=S.reduce((e,t)=>e+t.length,0),w=new Uint8Array(C),T=0;for(let e of S)w.set(e,T),T+=e.length;return w.buffer}},
|
|
11
|
+
`),x.encode(y),x.encode(b)],C=S.reduce((e,t)=>e+t.length,0),w=new Uint8Array(C),T=0;for(let e of S)w.set(e,T),T+=e.length;return w.buffer}},pe=class{toSVG(e,t,n,r,i,a){let o=e.toDataURL(`image/png`),s=i===`mm`?a/25.4:a,c=s*n,l=s*r,u=`
|
|
12
12
|
<svg xmlns="http://www.w3.org/2000/svg"
|
|
13
13
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
14
14
|
version="1.1"
|
|
@@ -17,7 +17,7 @@ endobj
|
|
|
17
17
|
viewBox="0 0 ${c} ${l}"
|
|
18
18
|
xml:space="preserve">
|
|
19
19
|
<image xlink:href="${o}" width="${c}" height="${l}"></image>
|
|
20
|
-
</svg>`,d=`data:application/xml,${encodeURIComponent(u)}`,f=document.createElement(`a`);f.href=d,f.download=t,f.click()}},
|
|
20
|
+
</svg>`,d=`data:application/xml,${encodeURIComponent(u)}`,f=document.createElement(`a`);f.href=d,f.download=t,f.click()}},me=class{map;width;height;dpi;format;unit;jpegQuality;northIcon;northIconOptions;markerOptions;constructor(e,t,n,r,i=N.mm,a){this.map=e,this.width=t[0],this.height=t[1],this.dpi=n,this.format=r,this.unit=i,this.jpegQuality=a?.jpegQuality??.85,this.northIcon=a?.northIcon??!1,this.northIconOptions=a?.northIconOptions,this.markerOptions=a?.markerOptions??{}}generate(e){this.showLoading();let t=window.devicePixelRatio;Object.defineProperty(window,"devicePixelRatio",{get:()=>this.dpi/96});let r=document.createElement(`div`);r.className=`qm-print-hidden-container`,r.style.cssText=`
|
|
21
21
|
position: fixed;
|
|
22
22
|
top: 0;
|
|
23
23
|
left: 0;
|
|
@@ -25,4 +25,4 @@ endobj
|
|
|
25
25
|
height: 100%;
|
|
26
26
|
visibility: hidden;
|
|
27
27
|
pointer-events: none;
|
|
28
|
-
`;let i=document.createElement(`div`),a=this.toPixels(this.width),o=this.toPixels(this.height);i.style.cssText=`position:absolute;top:0;left:0;width:${a}px;height:${o}px;`,r.appendChild(i),document.body.appendChild(r);let s=new n.Map({container:i,style:this.map.getStyle(),center:this.map.getCenter(),zoom:this.map.getZoom(),bearing:this.map.getBearing(),pitch:this.map.getPitch(),interactive:!1,fadeDuration:0,attributionControl:!1,canvasContextAttributes:{preserveDrawingBuffer:!0},transformRequest:this.map._requestManager._transformRequestFn});this.map.getTerrain()&&(s.setMaxPitch(85),s.setPitch(this.map.getPitch()));let c=this.map.style?.imageManager?.images||[];Object.keys(c).forEach(e=>{s.hasImage(e)||s.addImage(e,c[e].data)});let l=()=>new Promise(e=>{if(!s.isStyleLoaded()||!s.areTilesLoaded()){setTimeout(l,100);return}setTimeout(e,200)});s.once(`idle`,async()=>{await l(),this.northIcon&&(await new se(this.northIconOptions).addToMap(s,this.width,this.height),await new Promise(e=>{s.once(`idle`,()=>{setTimeout(e,200)})})),new ue(this.map,s,this.markerOptions).renderMarkers()&&await new Promise(e=>{s.once(`idle`,()=>{setTimeout(e,200)})});let n=s.getCanvas(),i=n.getContext(`webgl`)||n.getContext(`webgl2`);i&&i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,new Uint8Array(4));let a=`map.${this.format}`,o=new ae;switch(this.format){case N.PNG:o.toPNG(n,a);break;case N.JPEG:o.toJPEG(n,a,this.jpegQuality);break;case N.PDF:new de(this.width,this.height,this.unit).generate(n,a);break;case N.SVG:new fe().toSVG(n,a,this.width,this.height,this.unit,this.dpi);break}s.remove(),r.remove(),Object.defineProperty(window,"devicePixelRatio",{get:()=>t}),this.hideLoading(),e?.()})}toPixels(e){return this.unit===P.mm?96/25.4*e:96*e}showLoading(){let e=document.createElement(`div`);e.className=`qm-print-loading-overlay`,e.innerHTML=`<div class="qm-print-loading-spinner"></div><div class="qm-print-loading-text">正在生成...</div>`,document.body.appendChild(e)}hideLoading(){document.querySelector(`.qm-print-loading-overlay`)?.remove()}},B=(0,t.memo)(e=>{let{style:n,close:i,classname:a,onCallback:o}=e,{map:s}=C(),[c,l]=(0,t.useState)(!1),[u,d]=(0,t.useState)({PageSize:F.A4,PageOrientation:I.横向,Format:N.PDF,DPI:L[300],Crosshair:!0,PrintableArea:!0}),f=(0,t.useRef)(null),p=(0,t.useRef)(null);(0,t.useEffect)(()=>{if(s)return c?(u.Crosshair&&(f.current=new re(s),f.current.create()),u.PrintableArea&&(p.current=new ie(s),p.current.create()),m()):(f.current?.destroy(),f.current=null,p.current?.destroy(),p.current=null),()=>{f.current?.destroy(),p.current?.destroy()}},[s,c,u.Crosshair,u.PrintableArea,u.PageSize,u.PageOrientation]);let m=(0,t.useCallback)(()=>{if(!p.current)return;let e=u.PageSize;u.PageOrientation===I.纵向?p.current.updateArea(e[1],e[0]):p.current.updateArea(e[0],e[1])},[u.PageSize,u.PageOrientation]),h=(0,t.useCallback)(()=>{if(!s)return;let e=[...u.PageSize];u.PageOrientation===I.纵向&&(e=[e[1],e[0]]),new z(s,e,u.DPI,u.Format,P.mm,{jpegQuality:u.JPEGQuality,northIcon:!0}).generate(()=>{l(!1)}),o?.()},[s,u]),g=Object.entries(F).map(([e,t])=>(0,r.jsx)(`option`,{value:JSON.stringify(t),children:e},e)),_=Object.entries(I).map(([e,t])=>(0,r.jsx)(`option`,{value:t,children:e},e)),v=Object.entries(N).map(([e,t])=>(0,r.jsx)(`option`,{value:t,children:e},e)),y=Object.entries(L).map(([e,t])=>(0,r.jsx)(`option`,{value:t,children:e},e));return(0,r.jsxs)(`div`,{className:`qm-print-panel ${a||``}`,style:{display:i?`none`:`block`,...n},children:[(0,r.jsx)(`table`,{className:`qm-print-panel-table`,children:(0,r.jsxs)(`tbody`,{children:[(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`td`,{children:(0,r.jsx)(`label`,{children:`页面尺寸`})}),(0,r.jsx)(`td`,{children:(0,r.jsx)(`select`,{id:`print-page-size`,value:JSON.stringify(u.PageSize),onChange:e=>{d(t=>({...t,PageSize:JSON.parse(e.target.value)})),m()},children:g})})]}),(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`td`,{children:(0,r.jsx)(`label`,{children:`布局方向`})}),(0,r.jsx)(`td`,{children:(0,r.jsx)(`select`,{id:`print-orientation`,value:u.PageOrientation,onChange:e=>{d(t=>({...t,PageOrientation:e.target.value})),m()},children:_})})]}),(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`td`,{children:(0,r.jsx)(`label`,{children:`导出格式`})}),(0,r.jsx)(`td`,{children:(0,r.jsx)(`select`,{id:`print-format`,value:u.Format,onChange:e=>d(t=>({...t,Format:e.target.value})),children:v})})]}),(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`td`,{children:(0,r.jsx)(`label`,{children:`DPI`})}),(0,r.jsx)(`td`,{children:(0,r.jsx)(`select`,{id:`print-dpi`,value:u.DPI,onChange:e=>d(t=>({...t,DPI:Number(e.target.value)})),children:y})})]})]})}),(0,r.jsx)(`button`,{type:`button`,className:`qm-print-export-button`,onClick:h,title:`根据设置导出地图`,children:`导 出`})]})});function pe(e,t){let n=e.getCenter(),r=e.getZoom(),i=e.getBearing(),a=e.getPitch();t.forEach(e=>{e.jumpTo({center:n,zoom:r,bearing:i,pitch:a})})}function me(...e){let t;t=e.length===1&&Array.isArray(e[0])?e[0]:e;let n=[];t.forEach((e,r)=>{let i=t.filter((e,t)=>t!==r);n[r]=()=>a(e,i)});function r(){t.forEach((e,t)=>{e.on(`move`,n[t])})}function i(){t.forEach((e,t)=>{e.off(`move`,n[t])})}function a(e,t){i(),pe(e,t),r()}return r(),()=>{i()}}var V=class{options;_mapA;_mapB;_horizontal;_bounds;currentPosition=0;_swiper;_controlContainer;_clearSync;_onResize;_eventTarget;constructor(e,t,n,r={}){this.options={orientation:`vertical`,mousemove:!1,...r},this._mapA=e,this._mapB=t,this._horizontal=this.options.orientation===`horizontal`,this._eventTarget=new EventTarget,this._swiper=document.createElement(`div`),this._swiper.className=this._horizontal?`compare-swiper-horizontal`:`compare-swiper-vertical`,this._controlContainer=document.createElement(`div`),this._controlContainer.className=this._horizontal?`maplibregl-compare maplibregl-compare-horizontal`:`maplibregl-compare`,this._controlContainer.appendChild(this._swiper),this._mountContainer(n),this._bounds=this._mapB.getContainer().getBoundingClientRect();let i=this._horizontal?this._bounds.height/2:this._bounds.width/2;this._setPosition(i),this._clearSync=me(this._mapA,this._mapB),this._onResize=()=>{this._bounds=this._mapB.getContainer().getBoundingClientRect(),this.currentPosition&&this._setPosition(this.currentPosition)},this._mapB.on(`resize`,this._onResize),this.options.mousemove&&(this._mapA.getContainer().addEventListener(`mousemove`,this._onMove),this._mapB.getContainer().addEventListener(`mousemove`,this._onMove)),this._swiper.addEventListener(`mousedown`,this._onDown),this._swiper.addEventListener(`touchstart`,this._onDown)}_mountContainer(e){if(typeof e==`string`){let t=document.querySelector(e);if(!t)throw Error(`找不到容器`);t.appendChild(this._controlContainer)}else if(e instanceof HTMLElement)e.appendChild(this._controlContainer);else throw Error(`容器必须是字符串选择器或 HTML 元素`)}_setPointerEvents(e){this._controlContainer.style.pointerEvents=e,this._swiper.style.pointerEvents=e}_onDown=e=>{`touches`in e?(document.addEventListener(`touchmove`,this._onMove),document.addEventListener(`touchend`,this._onTouchEnd)):(document.addEventListener(`mousemove`,this._onMove),document.addEventListener(`mouseup`,this._onMouseUp))};_setPosition(e){let t=this._horizontal?this._bounds.height:this._bounds.width,n=Math.max(0,Math.min(e,t)),r=this._horizontal?`translate(0, ${n}px)`:`translate(${n}px, 0)`;this._controlContainer.style.transform=r,this._controlContainer.style.webkitTransform=r;let i=this._bounds.height,a,o;this._horizontal?(a=`rect(0, 999em, ${n}px, 0)`,o=`rect(${n}px, 999em, ${i}px, 0)`):(a=`rect(0, ${n}px, ${i}px, 0)`,o=`rect(0, 999em, ${i}px, ${n}px)`),this._mapA.getContainer().style.clip=a,this._mapB.getContainer().style.clip=o,this.currentPosition=n}_onMove=e=>{this.options.mousemove&&this._setPointerEvents(`none`),this._horizontal?this._setPosition(this._getY(e)):this._setPosition(this._getX(e))};_onMouseUp=()=>{document.removeEventListener(`mousemove`,this._onMove),document.removeEventListener(`mouseup`,this._onMouseUp),this._emitSlideEnd()};_onTouchEnd=()=>{document.removeEventListener(`touchmove`,this._onMove),document.removeEventListener(`touchend`,this._onTouchEnd),this._emitSlideEnd()};_emitSlideEnd(){this._eventTarget.dispatchEvent(new CustomEvent(`slideend`,{detail:{currentPosition:this.currentPosition}}))}_getX(e){let t=(`touches`in e?e.touches[0]:e).clientX-this._bounds.left;return Math.max(0,Math.min(t,this._bounds.width))}_getY(e){let t=(`touches`in e?e.touches[0]:e).clientY-this._bounds.top;return Math.max(0,Math.min(t,this._bounds.height))}setSlider(e){this._setPosition(e)}on(e,t){this._eventTarget.addEventListener(e,e=>{let n=e.detail;t(n)})}off(e,t){this._eventTarget.removeEventListener(e,t)}remove(){this._clearSync(),this._mapB.off(`resize`,this._onResize),[this._mapA,this._mapB].forEach(e=>{let t=e.getContainer();t.style.clip=``,t.removeEventListener(`mousemove`,this._onMove)}),this._swiper.removeEventListener(`mousedown`,this._onDown),this._swiper.removeEventListener(`touchstart`,this._onDown),this._controlContainer.remove()}};window.maplibregl&&(window.maplibregl.Compare=V);var he=(0,t.memo)(e=>{let{title:n,open:a=!1,maskClosable:o=!0,mask:s,width:c=520,footer:l,onCancel:u,destroyOnHidden:d=!1,className:f,style:p,children:m,centered:h=!1}=e,g=s?.closable===void 0?o:s.closable,[_,v]=(0,t.useState)(a);(0,t.useEffect)(()=>{if(a)v(!0),document.body.style.overflow=`hidden`;else if(document.body.style.overflow=``,d){let e=setTimeout(()=>{v(!1)},200);return()=>clearTimeout(e)}},[a,d]),(0,t.useEffect)(()=>()=>{document.body.style.overflow=``},[]);let y=(0,t.useCallback)(e=>{e.target===e.currentTarget&&g&&u?.()},[g,u]),b=(0,t.useCallback)(e=>{e.stopPropagation(),u?.()},[u]);return _?(0,i.createPortal)((0,r.jsxs)(`div`,{className:`qm-modal-wrapper ${a?`qm-modal-open`:``} ${h?`qm-modal-centered`:``}`,children:[(0,r.jsx)(`div`,{className:`qm-modal-mask ${a?`qm-modal-mask-enter`:`qm-modal-mask-leave`}`}),(0,r.jsx)(`div`,{className:`qm-modal-container`,onClick:y,children:(0,r.jsxs)(`div`,{className:`qm-modal ${f||``} ${a?`qm-modal-enter`:`qm-modal-leave`}`,style:{width:typeof c==`number`?`${c}px`:c,...p},onClick:e=>e.stopPropagation(),children:[n&&(0,r.jsxs)(`div`,{className:`qm-modal-header`,children:[(0,r.jsx)(`div`,{className:`qm-modal-title`,children:n}),(0,r.jsx)(`button`,{type:`button`,className:`qm-modal-close`,onClick:b,"aria-label":`关闭`,children:(0,r.jsx)(`span`,{className:`qm-modal-close-x`,children:`×`})})]}),(0,r.jsx)(`div`,{className:`qm-modal-body`,children:m}),l!==null&&(0,r.jsx)(`div`,{className:`qm-modal-footer`,children:l})]})})]}),document.body):null}),ge=(0,t.memo)(e=>{let{style:n,close:i,onCallback:a,classname:o}=e,{map:s}=C(),[c,l]=(0,t.useState)(null),[u,d]=(0,t.useState)(null);return(0,t.useEffect)(()=>{if(c&&u){let e=document.getElementById(`swipeContainer`);e&&(new V(c,u,e,{mousemove:!1,orientation:`vertical`}),c.setCenter(s.getCenter()),c.setZoom(s.getZoom()),c.setBearing(s.getBearing()),u.setPitch(s.getPitch()))}},[c,u]),(0,r.jsx)(he,{title:`卷帘对比`,mask:{closable:!1},open:!i,width:1e3,footer:null,onCancel:()=>a?.(!1),destroyOnHidden:!0,className:o,style:n,children:(0,r.jsxs)(`div`,{id:`swipeContainer`,className:`maplibregl-swipe`,children:[(0,r.jsx)(T,{mapOptions:{...s.options,id:`swipeBeforeMap`},mapLayerSettting:s.mapLayerSetting,onMapLoad:e=>l(e),className:`swipe-map-container`,children:(0,r.jsx)(M,{style:{top:10,left:10}})}),(0,r.jsx)(T,{mapOptions:{...s.options,id:`swipeAfterMap`},mapLayerSettting:s.mapLayerSetting,onMapLoad:e=>d(e),className:`swipe-map-container`,children:(0,r.jsx)(M,{style:{top:10,right:10}})})]})})}),H={Point:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAARxJREFUWEft1LEuREEYxfHf9jRLIRIqnUSpoOEFREUh3kFBo6LYKEj0StEp8ARUEvUmOg2NSHT07pW73XK/mZBtZto5c87/npn7dYx4dUacrwCUBkoDpYHcBiYwjTG84g2fOUMtB+AYu0PC9nGUCpEK8IyZX0IOq72DFIgUgFusBMw3cBnQfUuiAOu4ippivLqmj4g+ClDfby9i2Gjm8BTRRwFusBYxbDTLuI/oowCn2IkYNpoF9CP6KMA2ziOGjWYS7xF9FKDbfFE9fNrWSTWU9tpEg/0oQK3fwkWL8Qtmo+Epv+HAc6kawWfVfz4/JOQOqynhOQD1mXr+b2IRU3jAI65Tw3MBcnJ+PJPyBv40OOcRFoDSQGngXxr4App1HCGF2UdQAAAAAElFTkSuQmCC`,Line:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAp1JREFUWEe9l0uIjlEYx3+zsZGFsqCUe0hEiXFJ7iklxUxZMcVIE7IZFm4TJWYzLolQLKYmTKLIJYaYRolyySULpMRmFkwoC85/Oq/ejvO93zlHvWf7vc95fu/z/J//8341lHuWArOBJ8AVpa4pMf9eYE8u311gQVkAdcB5z8vWlwXgvn3G0lIWwFjgracC48oCUG63CmeBhmoAs4CJwC/gKtD7H6JtBg4C14FNwPtqU6CRueEkHGqCvyRC3JHqge3AoeyOogo8BGY6yY6aKmxJABicq94M4FEIwFdgkJPsmglengCwErgEPAem5OOLKnAfmOska7FiimU4AWwEjgBbQwHmA12eTCkQEtwIQJW4HApQC/QALwE52aScm8VAzAEeWA0MMXb8OxRgH7ATOAOst0F5Sw2FyMavE1jtVrRIA9pY04ANwOlcYCzETWAJ0AicCgVQv9S3PjuKakP+hELIxLLYYcDnUACVXLS3ABmS74RAZPdIS/oO+OdUaoFmVoqVDnYXzFw1CPn9WmAXsD8UYKBV7ABgYYVRDGmHbFvqHwNMBZ6GAqyws/oGmBDoOL5KrAIumo33ARhZ6R5fCw5bvz9nhLguEECPuRDaI8uAY8DmGAB9OOgDYo2pQEcEgAuRhX4zK1im5k5S/+9uBaTUbrMyfxhyudb3SACN2idPjOslfx9xAaR4OdxtI6DFkcn1uDadT2xNwPEQEd4D5tmNpc2Vcj4a5xzuBKqy8oJCHxgPvLZPjDbz+y4lux27VmAR8Mr6iOzYe7IWSO3606BxeQFMTkweHSaAHcABJ7LerN8L0bclBAjgmeeNHwPTE+6LDhGAeu06lTbhqOjbEgIEcNLu6nx4G7At4b7okEyEEqBW50+g3dyifzGlnD8S4H8a/N0aLAAAAABJRU5ErkJggg==`,Rectangle:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAASxJREFUWEft16FKBWEQBeDvvodBRCw+gFWbgtVkEkWLil6wGbSLgiZBxKDFajB6owgGwSQ3GMTmMyhz3YVluRdW+BcM/4FlYXf2zPnPzMJMxy92cYx7POGgeJ76dooFfOEGZx1sIV5UsYKrxNmH5emGgEfMJE7WmC4EvGK69sUbPhuzNAscR1xV9EJA1D56oIo59JrxNo5axnUt+jAEBMr6vGO/aJDGzH8InMU5pjDos1JAcHwXp47Tt4kHhJBB7iwgO5AdyA5kB7ID2YHsQHbg3ziwXgyLMaYdYa+loXAztqGCe7vcjG6xVEvYxUliEYu4q3EOVrOYhuv4QD+xgDFM1jj7owQkzj2S7jkEDCvBKi4Tq4gyR64qNsq/YA2xOgUuWtyMQsQ8JrCDlx+OVWdvFenv8gAAAABJRU5ErkJggg==`,Polygon:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAxVJREFUWEe1133InnMUB/DPKCQS87ZQtrJ5yT8LUShaJKHWzMSaWqkt07LyEjEvQykrL2WRFautoZBt3hoRhkRqjLyUKMuyGLHWan3X73q6unff7t+953Lq6um5nt855/s7z/ec870mqLfDcBeuwd94E7fUu/c/OWGEAIuxvOf8Ejw6Qox9jo4C4HtM6ZPsM/Q+/TAdWfx/xtbmwCgANuP0ytt+hE3IzzznYW3L9znMy++jAHgIt/cAeAw7cApOKwAPrAR5L5bWAjgKH+DUEjzVGETCizEV03AGzsTxfUC9jstqATyM2/Aqrqq8YXPsEPzTxyfkXVID4AK8iwNKmbeMCCDHV+DGlt83mImvagC8XG79CG7dj+SNy7VYiYNxOdbXkHA+nsFfCA92jQNAXH/EyTgRvwwDkJJ/WYi0AE+NM3ncPywteQ4+HQbgAdyJzzG9g+QJ8VL534fIIfTAOXASvsNBuLS0XBcYHsdNGKvoIBKuKUvnRVzdReYS4w48iPtwz6AK5MYZErFUIrO7K7uhdMLTTVv2q0DIcRaWlfXbVfLEuQRv4DVc0a7AE6U38y5t8jsmdpm5xMpYTmeNETsVWIgne5KFLDf/DwCOxm/4FZOaCvTb8+mALJ7dHYPIpoyayjQ8BttSgZDshJ5E28vk6zj/3nA/YHIZcHt3QXb6op5MUTghYteWcf4KzseFeD8ADkWmXhia/d1Y9sCzHSK4srRgQMS2YX67DQ8vxIj4zKT6s4D6uCMQ7yGrvW0bBk3C5vAnpVQ79xPE2ZhRej66cB8bBCD67h0chzEBWQkiJU5rR5pdNMRn/X8JknyAZCfE8gHS+03Qjn0EZpUnibPEGguhox834n6cW/7wBxYPU0R3I+o1lnlxLL4uUzM6Lze8vnAlur+xb/EW1mFD633Uc6RYtEbefzEMQHxX4bqeUiZ4BlWWVWOZbm+XNssWrbIaAOHA3AHRUoUsl5Q4eu/fqqytQzUAVmNOn8DhRRTOT6MmbZ+vAZDbpwptewGzx5O48a0BkLNLizTPAomYeL7M9HFj2AMTmY45mDBG5AAAAABJRU5ErkJggg==`,Trash:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA71JREFUWEfNl2nIVlUQx3+vgoRrai6lpaaiJbgU5QeXygVREVdUxF0RTa0oF3BBW6AFxRUXXHLrg5qgIgruS35QM1ooI3LFXdyKKAiq83+ZI+Pj83jPKynOpzlzZ87935n/mTm3iHTZB7ye6L4feCPFtyjFyXz+LYGvXJP2TnLKAfB+BpAZ9jxp7ySnPABmFgAh+wMBGAoMyfiyWH/V936S6rcaWKUMPA1cLGF9/w/3G0DVWILPAWXhUcoqYFhJOPBQwD2WACoAv9nn1gSuuE+vayxfAhzJSUkvoDKwIsdeA7hstmeAS/55vgxMAz40p4+A6S4gHrMzwPMBjG9OUR8mdrsY7aU9JW2BQ1kAxgV2LjCnecA7LmAqIFCSMsDfpj8B/Gn6FOBjFzMXeNvWLYBvswAMCl+3xpxWAiNcwGTgE1uXdS9V6nWsJO8Cc1yMSjLc1g2Ak1kAugFbzWkD0M8FvAfMsnVF4HfTfS8ZA4gjUdYDfW2Ry6m8A6MNcNACdgBd3GZKpVIqqRJSe9P0esAp03M5sD0QtrM9Kw/8kZWBpsB35vQVIEBRxgILbSF2XzX9ReBH0/sD+uooIl1r4J9A7tL+5dLznYLnQoc6a44C0twFjQqte6mta7kW/hJw3Ow9gC0uRqRrBtwO2XsyBUClwPxb5qi01ndBIlM853UCuc7Zs1aAsiXpBOx0MSKdjuz5EPtsCgD5KF3KzjWgugsaDGiKSQQs1r19SPNus7/mOCSTylQN+DmU5oVUACKX0vUXUM4AKXYA8IVt0iisfzG9K7DN9FeBY6aXMtKpT8imZ3dJoVlwOnQztV2JgKh+Eh2nSLAmYf2T2fsAG00XiX8w3ZdTd8p2qQAiceRfG7hgger3m0wXsb43fWAoyVrTGwK/mi6iqvYS9ZbuqQB061EtJaqb6ifxTepl4BuzjwSWmS6ixZc2Do3shNlVOgG9SwqVYLND62uqhqLGImkZmtRR08eHxjTf9KeA66a/4nx0fEenAhDTxXiJGL7X9I7uiKm5HDb7ROAz0323U833mH02MCEVgKbgW+bsG4t+NiIYXT4PmI9G9gemq9vpGEtUc2VTouv8PbfpQiXQZvEeoOm4ziH/OkxEHSs1nEhOnRhlQ8fS/xF5cipLcZDd2a4QAI1UpUzyJrA4N3WJa03GReabOyWLzYUA6A6w3AJ1B4j1TXzvHbdJwKe2ys3kfQH0Br60wKwfkSxQ8Uelp+NDZgk6ALuydi7hc52gOC8yAei2o5Ga+juehaX4JySf03+JLrAhSDUYWAAAAABJRU5ErkJggg==`,Reset:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAuRJREFUWEfVl1moTWEUx3+31M1U5JYxxQuJa7xvEg+UMpOkDFcevChEGUMi8/gkD24kSaIkRJEhM1cyJA83JMKD5AUPvv9tfVpOe5999j3XkVX7tPfZa/h/3/p/a61dxT+Wqn8cn/8SwAhgHDAW6Ap0A9oDH+y6C5wHrgNfsnY4zw6MBhYD07Kc2vu3wD5gP/A9zaYUAG3NycIUJ2+A98AA24lCtYfAVuBkkn0WgB7AYdvyaH8BOAe8ABqBT85xf2CgXesLAq4EthWCKAagD3AGqDWjp8B24EiJKRBPpD/Y6eu/S96+GIBjwGwXfCbwrMTgXm15SM0O98cw4FF8TgMgsok8ktfA+BYGj3GWArvt4SowphDAhsDwz8ABoNqC9TWlRcDBFqy80OQKoJMk2Rh+FLO5EOkmEmY60AY4YYriwNRWCC4XQwGdiCjiWJMAiBgX3QuRbK49a6s6hDQsAI6nHaUcAP1i64GGyAEdtfnmSKnoEgj4ErjtwLwDeuYIlqQ6yxaidw1AfQQwCLgGdHJWX4GO7vl33soAoRrxxOzvh3pS50/BWmBTgnOxVpXMp6kMDHwL9aEdoAra2wPQ6i8Dw837j1DDVwcO7CwnWoLtPUANTf2hurAOzLPcnALWAc9bObjcaeW97NjXJBWiOcDRvxBYLrsDIrNEXKjNakatjWNCSPFZX2MqDWCFNShhUHneW0kAKvF3XHdUZWysJIBloa7ssu0XyWfovlIAaoCPjlCjbGbMBKDuVQe8Clt3ugxGqurF+rIFWBN9Ze2A5sBDpqwxbDNwKweQPcASp38zFLuR3j4LgAZNjWJRfhoIHaUHRYBMsRY/xOk0AWrBf0gWAClr0NQ0o6nIixgtIBpKdamLTgrj1uQwN8ZhJuo3d74kwKUAiHarAOUvj2jV6qICkCh5AMhBv7D1E+0Sk9PkBqAvJI14ApEqeQF4R/okU447u+uxDTH+W6HojpUDIE8qUnV/AUEbfiHgdnTrAAAAAElFTkSuQmCC`},U=[{id:`point`,title:`绘制点:点击地图绘制点要素`,mode:`draw_point`,icon:H.Point},{id:`line`,title:`绘制线:点击地图开始,双击结束绘制线要素`,mode:`draw_line_string`,icon:H.Line},{id:`polygon`,title:`绘制面:点击地图开始,双击结束绘制面要素`,mode:`draw_polygon`,icon:H.Polygon},{id:`reset`,title:`清除:删除所有绘制的要素`,mode:`simple_select`,icon:H.Reset}],_e=[{id:`gl-draw-line`,type:`line`,filter:[`all`,[`==`,`$type`,`LineString`]],layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":`#D20C0C`,"line-dasharray":[.2,2],"line-width":2}},{id:`gl-draw-polygon-fill`,type:`fill`,filter:[`all`,[`==`,`$type`,`Polygon`]],paint:{"fill-color":`#D20C0C`,"fill-outline-color":`#D20C0C`,"fill-opacity":.3}},{id:`gl-draw-polygon-midpoint`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`midpoint`]],paint:{"circle-radius":5,"circle-color":`#fbb03b`}},{id:`gl-draw-polygon-stroke-active`,type:`line`,filter:[`all`,[`==`,`$type`,`Polygon`]],layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":`#D20C0C`,"line-dasharray":[.3,3],"line-width":3}},{id:`gl-draw-polygon-and-line-vertex-halo-active`,type:`circle`,filter:[`all`,[`==`,`meta`,`vertex`],[`==`,`$type`,`Point`]],paint:{"circle-radius":5,"circle-color":`#FFF`}},{id:`gl-draw-polygon-and-line-vertex-active`,type:`circle`,filter:[`all`,[`==`,`meta`,`vertex`],[`==`,`$type`,`Point`]],paint:{"circle-radius":3,"circle-color":`#D20C0C`}},{id:`gl-draw-point-point-stroke-active`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`true`]],paint:{"circle-radius":8,"circle-color":`#FFF`}},{id:`gl-draw-point-active`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`true`]],paint:{"circle-radius":6,"circle-color":`#D20C0C`}},{id:`gl-draw-point-point-stroke-inactive`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`false`]],paint:{"circle-radius":8,"circle-color":`#FFF`}},{id:`gl-draw-point-inactive`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`false`]],paint:{"circle-radius":6,"circle-color":`#D20C0C`}}],ve=(0,t.memo)(e=>{let{style:n,classname:i,onDraw:o,initFeature:s,modes:c}=e,l=c?U.filter(e=>c.includes(e.mode)||e.id===`reset`):U,{map:u}=C(),d=(0,t.useRef)(null),f=e=>{if(u&&e.features&&d.current){let t=d.current.add(e);d.current.changeMode(`simple_select`,{featureIds:t})}},p=(e,t)=>{if(!d.current||!u)return;t===`reset`&&d.current.deleteAll(),d.current.changeMode(e);let n=u.getCanvas();e===`simple_select`?n.style.cursor=``:n.style.cursor=`crosshair`},m=()=>{if(!d.current)return;let e=d.current.getAll();e.features&&e.features.length>0&&o?.({data:e})};return(0,t.useEffect)(()=>{s&&f(s)},[s]),(0,t.useEffect)(()=>(u&&!d.current&&(u.doubleClickZoom.disable(),d.current=new a.default({displayControlsDefault:!1,styles:_e,defaultMode:`simple_select`}),u.addControl(d.current,`bottom-left`),u.on(`draw.create`,m),u.on(`draw.delete`,m),u.on(`draw.update`,m),u.on(`draw.modechange`,e=>{let t=u.getCanvas();e.mode===`simple_select`?t.style.cursor=``:t.style.cursor=`crosshair`}),s&&f(s)),()=>{}),[]),(0,r.jsx)(`div`,{className:`qm-maplibregl-draw ${i||``}`,style:n,children:(0,r.jsx)(`div`,{className:`qm-maplibregl-draw-bar`,children:(0,r.jsx)(`div`,{children:l.map(e=>(0,r.jsx)(`div`,{title:e.title,className:`qm-maplibregl-draw-bar-button`,style:{backgroundImage:`url(${e.icon})`,...n},onClick:()=>p(e.mode,e.id)},e.id))})})})}),ye=(0,t.memo)(e=>{let{style:t,classname:n,icon:i,onCallback:a}=e,{map:o}=C();return(0,r.jsx)(E,{title:`点击清除地图上所有选中对象`,style:t,icon:i,classname:n,onToggle:()=>{o&&(o.clearSelect(),a?.())}})}),be=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,onCallback:o}=e;return(0,r.jsx)(E,{title:`点击进入或退出全屏`,style:n,icon:a,classname:i,onToggle:(0,t.useCallback)(()=>{document.fullscreenElement?document.exitFullscreen?.().catch(e=>console.error(`无法退出全屏模式: ${e}`)):document.documentElement.requestFullscreen().catch(e=>console.error(`无法进入全屏模式: ${e}`)),o?.()},[o])})}),xe=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,onCallback:o}=e,{map:s}=C();return(0,r.jsx)(E,{title:`点击放大地图`,style:n,icon:a,classname:i,onToggle:(0,t.useCallback)(()=>{s&&(s.zoomTo(s.getZoom()+1),o?.())},[s])})}),Se=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,onCallback:o}=e,{map:s}=C();return(0,r.jsx)(E,{title:`点击缩小地图`,style:n,icon:a,classname:i,onToggle:(0,t.useCallback)(()=>{s&&(s.zoomTo(s.getZoom()-1),o?.())},[s])})}),W=class{map;uuid;isMeasure=!1;points=[];markers=[];ele;tooltip;onMeasure;scale;prevDoubleClickZoom;constructor(e,t){this.map=e,this.uuid=this.generateId(),this.onMeasure=t,this.scale=window.scale??1,this.prevDoubleClickZoom=e.doubleClickZoom.isEnabled(),this.ele=document.createElement(`div`),this.ele.className=`measureResult`,this.tooltip=new n.Marker({element:this.ele,anchor:`left`,offset:[8,0]}).setLngLat([0,0]).addTo(e),this.markers.push(this.tooltip)}generateId(){return(Math.random()*1e7).toString(16).substr(0,4)+`-`+new Date().getTime()+`-`+Math.random().toString().substr(2,5)}start(){this.map.doubleClickZoom.disable(),this.map.getCanvas().style.cursor=`crosshair`,this.isMeasure=!0,this.map.on(`click`,this.mapClickHandle),this.map.on(`mousemove`,this.mapMouseMoveHandle),this.map.on(`dblclick`,this.mapDbclickHandle)}clearDrawEventListener(){this.map.off(`click`,this.mapClickHandle),this.map.off(`mousemove`,this.mapMouseMoveHandle),this.map.off(`dblclick`,this.mapDbclickHandle)}clearMeasure(){this.prevDoubleClickZoom?this.map.doubleClickZoom.enable():this.map.doubleClickZoom.disable(),this.map.getCanvas().style.cursor=`pointer`,this.removeLayers(),this.markers.forEach(e=>{e.remove()}),this.markers=[],this.points=[],this.isMeasure=!1,this.clearDrawEventListener()}finishMeasure(e){this.isMeasure=!1,this.map.getCanvas().style.cursor=``,this.tooltip.remove();let t=document.createElement(`div`);t.className=`measureResultClose`,t.innerHTML=`×`;let r=new n.Marker({element:t,anchor:`bottom-left`,offset:[-5,-10]}).setLngLat(e).addTo(this.map);t.onclick=e=>{e.stopPropagation(),this.clearMeasure()},this.markers.push(r),this.onMeasure?.({type:this.getMeasureType(),points:[...this.points],value:this.getResultValue(),formatted:this.getResultText()})}getCoords(e){let t=this.map.unproject([e.point.x/this.scale,e.point.y/this.scale]);return[t.lng,t.lat]}},Ce=6371008.8,G=6378137,K=Math.PI/180,q=(e,t)=>{let n=(t[1]-e[1])*K,r=(t[0]-e[0])*K,i=e[1]*K,a=t[1]*K,o=Math.sin(n/2)**2+Math.cos(i)*Math.cos(a)*Math.sin(r/2)**2;return 2*Ce*Math.atan2(Math.sqrt(o),Math.sqrt(1-o))/1e3},J=e=>{let t=0;for(let n=1;n<e.length;n++)t+=q(e[n-1],e[n]);return t},Y=e=>{let t=e.length;if(t<3)return 0;let n=0;for(let r=0;r<t;r++){let i,a,o;r===t-2?(i=t-2,a=t-1,o=0):r===t-1?(i=t-1,a=0,o=1):(i=r,a=r+1,o=r+2);let s=e[i],c=e[a],l=e[o];n+=(l[0]-s[0])*K*Math.sin(c[1]*K)}return Math.abs(n*G*G/2)},X=e=>e<1?Math.round(e*1e3)+`m`:e.toFixed(2)+`km`,Z=(e,t=`mu`)=>t===`mu`?(e*.0015).toFixed(4)+`亩`:e<1e3?Math.round(e)+`m²`:(e/1e6).toFixed(4)+`km²`,Q=class extends W{jsonPoint={type:`FeatureCollection`,features:[]};jsonLine={type:`FeatureCollection`,features:[]};constructor(e,t){super(e,t),this.createLayers()}createLayers(){let e=`polylinePointsSource`+this.uuid,t=`polylineLines`+this.uuid,n=`polylineMovelinesSource`+this.uuid;this.map.addSource(e,{type:`geojson`,data:this.jsonPoint}),this.map.addSource(t,{type:`geojson`,data:this.jsonLine}),this.map.addSource(n,{type:`geojson`,data:this.jsonLine}),this.map.addLayer({id:`polylineMovelinesLayer`+this.uuid,type:`line`,source:n,paint:{"line-color":`#ff0000`,"line-width":2,"line-opacity":.65}}),this.map.addLayer({id:`polylineLinesLayer`+this.uuid,type:`line`,source:t,paint:{"line-color":`#ff0000`,"line-width":2,"line-opacity":.65}}),this.map.addLayer({id:`polylinePointsLayer`+this.uuid,type:`circle`,source:e,paint:{"circle-color":`#ffffff`,"circle-radius":3,"circle-stroke-width":2,"circle-stroke-color":`#ff0000`}})}removeLayers(){let e=`polylinePointsSource`+this.uuid;this.map.getSource(e)&&(this.map.removeLayer(`polylinePointsLayer`+this.uuid),this.map.removeLayer(`polylineLinesLayer`+this.uuid),this.map.removeLayer(`polylineMovelinesLayer`+this.uuid),this.map.removeSource(e),this.map.removeSource(`polylineLines`+this.uuid),this.map.removeSource(`polylineMovelinesSource`+this.uuid))}addPoint(e){let t=`polylineLines`+this.uuid;if(this.jsonPoint.features.length>0){let n=this.jsonPoint.features[this.jsonPoint.features.length-1];this.jsonLine.features.push({type:`Feature`,geometry:{type:`LineString`,coordinates:[n.geometry.coordinates,e]}}),this.map.getSource(t).setData(this.jsonLine)}this.jsonPoint.features.push({type:`Feature`,geometry:{type:`Point`,coordinates:e}}),this.map.getSource(`polylinePointsSource`+this.uuid).setData(this.jsonPoint)}addMeasureRes(e){let t=document.createElement(`div`);t.className=`measureResult`,t.innerHTML=this.points.length===0?`起点`:this.getFormatText(e);let r=new n.Marker({element:t,anchor:`left`,offset:[8,0]}).setLngLat(e).addTo(this.map);this.markers.push(r)}getFormatText(e){return X(J([...this.points,e]))}getResultValue(){return J(this.points)}getResultText(){return X(this.getResultValue())}getMeasureType(){return`line`}mapClickHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);this.addMeasureRes(t),this.addPoint(t),this.points.push(t)}};mapMouseMoveHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);if(this.jsonPoint.features.length>0){let e={type:`Feature`,geometry:{type:`LineString`,coordinates:[this.jsonPoint.features[this.jsonPoint.features.length-1].geometry.coordinates,t]}};this.map.getSource(`polylineMovelinesSource`+this.uuid).setData(e),this.ele.innerHTML=this.getFormatText(t)}else this.ele.innerHTML=`点击地图开始测量`;this.tooltip.setLngLat(t)}};mapDbclickHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);this.addPoint(t),this.points.push(t),this.finishMeasure(t)}}},we=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,onMeasure:o}=e,{map:s}=C(),c=(0,t.useRef)(null),l=(0,t.useCallback)(()=>{s&&(c.current?.clearMeasure(),c.current=new Q(s,o),c.current.start())},[s,o]);return(0,t.useEffect)(()=>()=>{c.current?.clearMeasure(),c.current=null},[]),(0,r.jsx)(E,{title:`点击开始测量距离,双击结束`,style:n,icon:a,classname:i,onToggle:l})}),$=class extends W{unit;jsonPoint={type:`FeatureCollection`,features:[]};jsonLine={type:`FeatureCollection`,features:[]};constructor(e,t=`mu`,n){super(e,n),this.unit=t,this.createLayers()}createLayers(){let e=`polygonPointsSource`+this.uuid,t=`polygonLines`+this.uuid;this.map.addSource(e,{type:`geojson`,data:this.jsonPoint}),this.map.addSource(t,{type:`geojson`,data:this.jsonLine}),this.map.addLayer({id:`polygonLinesLayer`+this.uuid,type:`fill`,source:t,paint:{"fill-color":`#ff0000`,"fill-opacity":.1}}),this.map.addLayer({id:`polygonLinesstrokeLayer`+this.uuid,type:`line`,source:t,paint:{"line-color":`#ff0000`,"line-width":2,"line-opacity":.65}}),this.map.addLayer({id:`polygonPointsLayer`+this.uuid,type:`circle`,source:e,paint:{"circle-color":`#ffffff`,"circle-radius":3,"circle-stroke-width":2,"circle-stroke-color":`#ff0000`}})}removeLayers(){let e=`polygonPointsSource`+this.uuid;this.map.getSource(e)&&(this.map.removeLayer(`polygonPointsLayer`+this.uuid),this.map.removeLayer(`polygonLinesLayer`+this.uuid),this.map.removeLayer(`polygonLinesstrokeLayer`+this.uuid),this.map.removeSource(e),this.map.removeSource(`polygonLines`+this.uuid))}addPoint(e){this.jsonPoint.features.push({type:`Feature`,geometry:{type:`Point`,coordinates:e}}),this.map.getSource(`polygonPointsSource`+this.uuid).setData(this.jsonPoint)}getAreaM2(e){return Y([...this.points,e,this.points[0]])}getFormatText(e){return Z(this.getAreaM2(e),this.unit)}getResultValue(){return this.points.length<3?0:Y([...this.points,this.points[0]])}getResultText(){return Z(this.getResultValue(),this.unit)}getMeasureType(){return`polygon`}mapClickHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);this.addPoint(t),this.points.push(t)}};mapMouseMoveHandle=e=>{if(this.isMeasure){let t=this.getCoords(e),n=this.points.length;if(n===0)this.ele.innerHTML=`点击地图开始测量`;else if(n===1)this.ele.innerHTML=`点击地图继续绘制`;else{let e={type:`Feature`,geometry:{type:`Polygon`,coordinates:[[...this.points,t,this.points[0]]]}};this.map.getSource(`polygonLines`+this.uuid).setData(e),this.ele.innerHTML=this.getFormatText(t)}this.tooltip.setLngLat(t)}};mapDbclickHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);this.addPoint(t),this.points.push(t);let n={type:`Feature`,geometry:{type:`Polygon`,coordinates:[[...this.points,this.points[0]]]}};this.map.getSource(`polygonLines`+this.uuid).setData(n),this.finishMeasure(t)}}},Te=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,unit:o=`mu`,onMeasure:s}=e,{map:c}=C(),l=(0,t.useRef)(null),u=(0,t.useCallback)(()=>{c&&(l.current?.clearMeasure(),l.current=new $(c,o,s),l.current.start())},[c,o,s]);return(0,t.useEffect)(()=>()=>{l.current?.clearMeasure(),l.current=null},[]),(0,r.jsx)(E,{title:`点击开始测量面积,双击结束`,style:n,icon:a,classname:i,onToggle:u})});e.BaseLayer=_,e.BaseMeasure=W,e.Clear=ye,e.Draw=ve,e.FullScreen=be,e.LayerGroupWrapper=y,e.LayerList=M,e.LayerWrapper=v,e.Legend=ne,e.MapContext=S,e.MapWidget=T,e.MapWrapper=x,e.MeasureLine=we,e.MeasurePolygon=Te,e.PolygonMeasure=$,e.PolylineMeasure=Q,e.Print=B,e.Swipe=ge,e.WidgetButton=E,e.ZoomIn=xe,e.ZoomOut=Se,e.formatArea=Z,e.formatDistance=X,e.haversineDistance=q,e.polygonAreaM2=Y,e.polylineLengthKm=J,e.useMap=C});
|
|
28
|
+
`;let i=document.createElement(`div`),a=this.toPixels(this.width),o=this.toPixels(this.height);i.style.cssText=`position:absolute;top:0;left:0;width:${a}px;height:${o}px;`,r.appendChild(i),document.body.appendChild(r);let s=new n.Map({container:i,style:this.map.getStyle(),center:this.map.getCenter(),zoom:this.map.getZoom(),bearing:this.map.getBearing(),pitch:this.map.getPitch(),interactive:!1,fadeDuration:0,attributionControl:!1,canvasContextAttributes:{preserveDrawingBuffer:!0},transformRequest:this.map._requestManager._transformRequestFn});this.map.getTerrain()&&(s.setMaxPitch(85),s.setPitch(this.map.getPitch()));let c=this.map.style?.imageManager?.images||[];Object.keys(c).forEach(e=>{s.hasImage(e)||s.addImage(e,c[e].data)});let l=()=>new Promise(e=>{if(!s.isStyleLoaded()||!s.areTilesLoaded()){setTimeout(l,100);return}setTimeout(e,200)});s.once(`idle`,async()=>{await l(),this.northIcon&&(await new ce(this.northIconOptions).addToMap(s,this.width,this.height),await new Promise(e=>{s.once(`idle`,()=>{setTimeout(e,200)})})),new de(this.map,s,this.markerOptions).renderMarkers()&&await new Promise(e=>{s.once(`idle`,()=>{setTimeout(e,200)})});let n=s.getCanvas(),i=n.getContext(`webgl`)||n.getContext(`webgl2`);i&&i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,new Uint8Array(4));let a=`map.${this.format}`,o=new oe;switch(this.format){case M.PNG:o.toPNG(n,a);break;case M.JPEG:o.toJPEG(n,a,this.jpegQuality);break;case M.PDF:new fe(this.width,this.height,this.unit).generate(n,a);break;case M.SVG:new pe().toSVG(n,a,this.width,this.height,this.unit,this.dpi);break}s.remove(),r.remove(),Object.defineProperty(window,"devicePixelRatio",{get:()=>t}),this.hideLoading(),e?.()})}toPixels(e){return this.unit===N.mm?96/25.4*e:96*e}showLoading(){let e=document.createElement(`div`);e.className=`qm-print-loading-overlay`,e.innerHTML=`<div class="qm-print-loading-spinner"></div><div class="qm-print-loading-text">正在生成...</div>`,document.body.appendChild(e)}hideLoading(){document.querySelector(`.qm-print-loading-overlay`)?.remove()}},R=(0,t.memo)(e=>{let{style:n,close:i,classname:a,onCallback:o}=e,{map:s}=C(),[c,l]=(0,t.useState)(!1),[u,d]=(0,t.useState)({PageSize:P.A4,PageOrientation:F.横向,Format:M.PDF,DPI:I[300],Crosshair:!0,PrintableArea:!0}),f=(0,t.useRef)(null),p=(0,t.useRef)(null);(0,t.useEffect)(()=>{if(s)return c?(u.Crosshair&&(f.current=new ie(s),f.current.create()),u.PrintableArea&&(p.current=new ae(s),p.current.create()),m()):(f.current?.destroy(),f.current=null,p.current?.destroy(),p.current=null),()=>{f.current?.destroy(),p.current?.destroy()}},[s,c,u.Crosshair,u.PrintableArea,u.PageSize,u.PageOrientation]);let m=(0,t.useCallback)(()=>{if(!p.current)return;let e=u.PageSize;u.PageOrientation===F.纵向?p.current.updateArea(e[1],e[0]):p.current.updateArea(e[0],e[1])},[u.PageSize,u.PageOrientation]),h=(0,t.useCallback)(()=>{if(!s)return;let e=[...u.PageSize];u.PageOrientation===F.纵向&&(e=[e[1],e[0]]),new me(s,e,u.DPI,u.Format,N.mm,{jpegQuality:u.JPEGQuality,northIcon:!0}).generate(()=>{l(!1)}),o?.()},[s,u]),g=Object.entries(P).map(([e,t])=>(0,r.jsx)(`option`,{value:JSON.stringify(t),children:e},e)),_=Object.entries(F).map(([e,t])=>(0,r.jsx)(`option`,{value:t,children:e},e)),v=Object.entries(M).map(([e,t])=>(0,r.jsx)(`option`,{value:t,children:e},e)),y=Object.entries(I).map(([e,t])=>(0,r.jsx)(`option`,{value:t,children:e},e));return(0,r.jsxs)(`div`,{className:`qm-print-panel ${a||``}`,style:{display:i?`none`:`block`,...n},children:[(0,r.jsx)(`table`,{className:`qm-print-panel-table`,children:(0,r.jsxs)(`tbody`,{children:[(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`td`,{children:(0,r.jsx)(`label`,{children:`页面尺寸`})}),(0,r.jsx)(`td`,{children:(0,r.jsx)(`select`,{id:`print-page-size`,value:JSON.stringify(u.PageSize),onChange:e=>{d(t=>({...t,PageSize:JSON.parse(e.target.value)})),m()},children:g})})]}),(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`td`,{children:(0,r.jsx)(`label`,{children:`布局方向`})}),(0,r.jsx)(`td`,{children:(0,r.jsx)(`select`,{id:`print-orientation`,value:u.PageOrientation,onChange:e=>{d(t=>({...t,PageOrientation:e.target.value})),m()},children:_})})]}),(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`td`,{children:(0,r.jsx)(`label`,{children:`导出格式`})}),(0,r.jsx)(`td`,{children:(0,r.jsx)(`select`,{id:`print-format`,value:u.Format,onChange:e=>d(t=>({...t,Format:e.target.value})),children:v})})]}),(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`td`,{children:(0,r.jsx)(`label`,{children:`DPI`})}),(0,r.jsx)(`td`,{children:(0,r.jsx)(`select`,{id:`print-dpi`,value:u.DPI,onChange:e=>d(t=>({...t,DPI:Number(e.target.value)})),children:y})})]})]})}),(0,r.jsx)(`button`,{type:`button`,className:`qm-print-export-button`,onClick:h,title:`根据设置导出地图`,children:`导 出`})]})});function z(e,t){let n=e.getCenter(),r=e.getZoom(),i=e.getBearing(),a=e.getPitch();t.forEach(e=>{e.jumpTo({center:n,zoom:r,bearing:i,pitch:a})})}function he(...e){let t;t=e.length===1&&Array.isArray(e[0])?e[0]:e;let n=[];t.forEach((e,r)=>{let i=t.filter((e,t)=>t!==r);n[r]=()=>a(e,i)});function r(){t.forEach((e,t)=>{e.on(`move`,n[t])})}function i(){t.forEach((e,t)=>{e.off(`move`,n[t])})}function a(e,t){i(),z(e,t),r()}return r(),()=>{i()}}var B=class{options;_mapA;_mapB;_horizontal;_bounds;currentPosition=0;_swiper;_controlContainer;_clearSync;_onResize;_eventTarget;constructor(e,t,n,r={}){this.options={orientation:`vertical`,mousemove:!1,...r},this._mapA=e,this._mapB=t,this._horizontal=this.options.orientation===`horizontal`,this._eventTarget=new EventTarget,this._swiper=document.createElement(`div`),this._swiper.className=this._horizontal?`compare-swiper-horizontal`:`compare-swiper-vertical`,this._controlContainer=document.createElement(`div`),this._controlContainer.className=this._horizontal?`maplibregl-compare maplibregl-compare-horizontal`:`maplibregl-compare`,this._controlContainer.appendChild(this._swiper),this._mountContainer(n),this._bounds=this._mapB.getContainer().getBoundingClientRect();let i=this._horizontal?this._bounds.height/2:this._bounds.width/2;this._setPosition(i),this._clearSync=he(this._mapA,this._mapB),this._onResize=()=>{this._bounds=this._mapB.getContainer().getBoundingClientRect(),this.currentPosition&&this._setPosition(this.currentPosition)},this._mapB.on(`resize`,this._onResize),this.options.mousemove&&(this._mapA.getContainer().addEventListener(`mousemove`,this._onMove),this._mapB.getContainer().addEventListener(`mousemove`,this._onMove)),this._swiper.addEventListener(`mousedown`,this._onDown),this._swiper.addEventListener(`touchstart`,this._onDown)}_mountContainer(e){if(typeof e==`string`){let t=document.querySelector(e);if(!t)throw Error(`找不到容器`);t.appendChild(this._controlContainer)}else if(e instanceof HTMLElement)e.appendChild(this._controlContainer);else throw Error(`容器必须是字符串选择器或 HTML 元素`)}_setPointerEvents(e){this._controlContainer.style.pointerEvents=e,this._swiper.style.pointerEvents=e}_onDown=e=>{`touches`in e?(document.addEventListener(`touchmove`,this._onMove),document.addEventListener(`touchend`,this._onTouchEnd)):(document.addEventListener(`mousemove`,this._onMove),document.addEventListener(`mouseup`,this._onMouseUp))};_setPosition(e){let t=this._horizontal?this._bounds.height:this._bounds.width,n=Math.max(0,Math.min(e,t)),r=this._horizontal?`translate(0, ${n}px)`:`translate(${n}px, 0)`;this._controlContainer.style.transform=r,this._controlContainer.style.webkitTransform=r;let i=this._bounds.height,a,o;this._horizontal?(a=`rect(0, 999em, ${n}px, 0)`,o=`rect(${n}px, 999em, ${i}px, 0)`):(a=`rect(0, ${n}px, ${i}px, 0)`,o=`rect(0, 999em, ${i}px, ${n}px)`),this._mapA.getContainer().style.clip=a,this._mapB.getContainer().style.clip=o,this.currentPosition=n}_onMove=e=>{this.options.mousemove&&this._setPointerEvents(`none`),this._horizontal?this._setPosition(this._getY(e)):this._setPosition(this._getX(e))};_onMouseUp=()=>{document.removeEventListener(`mousemove`,this._onMove),document.removeEventListener(`mouseup`,this._onMouseUp),this._emitSlideEnd()};_onTouchEnd=()=>{document.removeEventListener(`touchmove`,this._onMove),document.removeEventListener(`touchend`,this._onTouchEnd),this._emitSlideEnd()};_emitSlideEnd(){this._eventTarget.dispatchEvent(new CustomEvent(`slideend`,{detail:{currentPosition:this.currentPosition}}))}_getX(e){let t=(`touches`in e?e.touches[0]:e).clientX-this._bounds.left;return Math.max(0,Math.min(t,this._bounds.width))}_getY(e){let t=(`touches`in e?e.touches[0]:e).clientY-this._bounds.top;return Math.max(0,Math.min(t,this._bounds.height))}setSlider(e){this._setPosition(e)}on(e,t){this._eventTarget.addEventListener(e,e=>{let n=e.detail;t(n)})}off(e,t){this._eventTarget.removeEventListener(e,t)}remove(){this._clearSync(),this._mapB.off(`resize`,this._onResize),[this._mapA,this._mapB].forEach(e=>{let t=e.getContainer();t.style.clip=``,t.removeEventListener(`mousemove`,this._onMove)}),this._swiper.removeEventListener(`mousedown`,this._onDown),this._swiper.removeEventListener(`touchstart`,this._onDown),this._controlContainer.remove()}};window.maplibregl&&(window.maplibregl.Compare=B);var V=(0,t.memo)(e=>{let{title:n,open:a=!1,maskClosable:o=!0,mask:s,width:c=520,footer:l,onCancel:u,destroyOnHidden:d=!1,className:f,style:p,children:m,centered:h=!1}=e,g=s?.closable===void 0?o:s.closable,[_,v]=(0,t.useState)(a);(0,t.useEffect)(()=>{if(a)v(!0),document.body.style.overflow=`hidden`;else if(document.body.style.overflow=``,d){let e=setTimeout(()=>{v(!1)},200);return()=>clearTimeout(e)}},[a,d]),(0,t.useEffect)(()=>()=>{document.body.style.overflow=``},[]);let y=(0,t.useCallback)(e=>{e.target===e.currentTarget&&g&&u?.()},[g,u]),b=(0,t.useCallback)(e=>{e.stopPropagation(),u?.()},[u]);return _?(0,i.createPortal)((0,r.jsxs)(`div`,{className:`qm-modal-wrapper ${a?`qm-modal-open`:``} ${h?`qm-modal-centered`:``}`,children:[(0,r.jsx)(`div`,{className:`qm-modal-mask ${a?`qm-modal-mask-enter`:`qm-modal-mask-leave`}`}),(0,r.jsx)(`div`,{className:`qm-modal-container`,onClick:y,children:(0,r.jsxs)(`div`,{className:`qm-modal ${f||``} ${a?`qm-modal-enter`:`qm-modal-leave`}`,style:{width:typeof c==`number`?`${c}px`:c,...p},onClick:e=>e.stopPropagation(),children:[n&&(0,r.jsxs)(`div`,{className:`qm-modal-header`,children:[(0,r.jsx)(`div`,{className:`qm-modal-title`,children:n}),(0,r.jsx)(`button`,{type:`button`,className:`qm-modal-close`,onClick:b,"aria-label":`关闭`,children:(0,r.jsx)(`span`,{className:`qm-modal-close-x`,children:`×`})})]}),(0,r.jsx)(`div`,{className:`qm-modal-body`,children:m}),l!==null&&(0,r.jsx)(`div`,{className:`qm-modal-footer`,children:l})]})})]}),document.body):null}),ge=(0,t.memo)(e=>{let{style:n,close:i,onCallback:a,classname:o}=e,{map:s}=C(),[c,l]=(0,t.useState)(null),[u,d]=(0,t.useState)(null);return(0,t.useEffect)(()=>{if(c&&u){let e=document.getElementById(`swipeContainer`);e&&(new B(c,u,e,{mousemove:!1,orientation:`vertical`}),c.setCenter(s.getCenter()),c.setZoom(s.getZoom()),c.setBearing(s.getBearing()),u.setPitch(s.getPitch()))}},[c,u]),(0,r.jsx)(V,{title:`卷帘对比`,mask:{closable:!1},open:!i,width:1e3,footer:null,onCancel:()=>a?.(!1),destroyOnHidden:!0,className:o,style:n,children:(0,r.jsxs)(`div`,{id:`swipeContainer`,className:`maplibregl-swipe`,children:[(0,r.jsx)(T,{mapOptions:{...s.options,id:`swipeBeforeMap`},mapLayerSettting:s.mapLayerSetting,onMapLoad:e=>l(e),className:`swipe-map-container`,children:(0,r.jsx)(j,{style:{top:10,left:10}})}),(0,r.jsx)(T,{mapOptions:{...s.options,id:`swipeAfterMap`},mapLayerSettting:s.mapLayerSetting,onMapLoad:e=>d(e),className:`swipe-map-container`,children:(0,r.jsx)(j,{style:{top:10,right:10}})})]})})}),_e=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAARxJREFUWEft1LEuREEYxfHf9jRLIRIqnUSpoOEFREUh3kFBo6LYKEj0StEp8ARUEvUmOg2NSHT07pW73XK/mZBtZto5c87/npn7dYx4dUacrwCUBkoDpYHcBiYwjTG84g2fOUMtB+AYu0PC9nGUCpEK8IyZX0IOq72DFIgUgFusBMw3cBnQfUuiAOu4ippivLqmj4g+ClDfby9i2Gjm8BTRRwFusBYxbDTLuI/oowCn2IkYNpoF9CP6KMA2ziOGjWYS7xF9FKDbfFE9fNrWSTWU9tpEg/0oQK3fwkWL8Qtmo+Epv+HAc6kawWfVfz4/JOQOqynhOQD1mXr+b2IRU3jAI65Tw3MBcnJ+PJPyBv40OOcRFoDSQGngXxr4App1HCGF2UdQAAAAAElFTkSuQmCC`,ve=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAp1JREFUWEe9l0uIjlEYx3+zsZGFsqCUe0hEiXFJ7iklxUxZMcVIE7IZFm4TJWYzLolQLKYmTKLIJYaYRolyySULpMRmFkwoC85/Oq/ejvO93zlHvWf7vc95fu/z/J//8341lHuWArOBJ8AVpa4pMf9eYE8u311gQVkAdcB5z8vWlwXgvn3G0lIWwFjgracC48oCUG63CmeBhmoAs4CJwC/gKtD7H6JtBg4C14FNwPtqU6CRueEkHGqCvyRC3JHqge3AoeyOogo8BGY6yY6aKmxJABicq94M4FEIwFdgkJPsmglengCwErgEPAem5OOLKnAfmOska7FiimU4AWwEjgBbQwHmA12eTCkQEtwIQJW4HApQC/QALwE52aScm8VAzAEeWA0MMXb8OxRgH7ATOAOst0F5Sw2FyMavE1jtVrRIA9pY04ANwOlcYCzETWAJ0AicCgVQv9S3PjuKakP+hELIxLLYYcDnUACVXLS3ABmS74RAZPdIS/oO+OdUaoFmVoqVDnYXzFw1CPn9WmAXsD8UYKBV7ABgYYVRDGmHbFvqHwNMBZ6GAqyws/oGmBDoOL5KrAIumo33ARhZ6R5fCw5bvz9nhLguEECPuRDaI8uAY8DmGAB9OOgDYo2pQEcEgAuRhX4zK1im5k5S/+9uBaTUbrMyfxhyudb3SACN2idPjOslfx9xAaR4OdxtI6DFkcn1uDadT2xNwPEQEd4D5tmNpc2Vcj4a5xzuBKqy8oJCHxgPvLZPjDbz+y4lux27VmAR8Mr6iOzYe7IWSO3606BxeQFMTkweHSaAHcABJ7LerN8L0bclBAjgmeeNHwPTE+6LDhGAeu06lTbhqOjbEgIEcNLu6nx4G7At4b7okEyEEqBW50+g3dyifzGlnD8S4H8a/N0aLAAAAABJRU5ErkJggg==`,ye=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAASxJREFUWEft16FKBWEQBeDvvodBRCw+gFWbgtVkEkWLil6wGbSLgiZBxKDFajB6owgGwSQ3GMTmMyhz3YVluRdW+BcM/4FlYXf2zPnPzMJMxy92cYx7POGgeJ76dooFfOEGZx1sIV5UsYKrxNmH5emGgEfMJE7WmC4EvGK69sUbPhuzNAscR1xV9EJA1D56oIo59JrxNo5axnUt+jAEBMr6vGO/aJDGzH8InMU5pjDos1JAcHwXp47Tt4kHhJBB7iwgO5AdyA5kB7ID2YHsQHbg3ziwXgyLMaYdYa+loXAztqGCe7vcjG6xVEvYxUliEYu4q3EOVrOYhuv4QD+xgDFM1jj7owQkzj2S7jkEDCvBKi4Tq4gyR64qNsq/YA2xOgUuWtyMQsQ8JrCDlx+OVWdvFenv8gAAAABJRU5ErkJggg==`,be=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAxVJREFUWEe1133InnMUB/DPKCQS87ZQtrJ5yT8LUShaJKHWzMSaWqkt07LyEjEvQykrL2WRFautoZBt3hoRhkRqjLyUKMuyGLHWan3X73q6unff7t+953Lq6um5nt855/s7z/ec870mqLfDcBeuwd94E7fUu/c/OWGEAIuxvOf8Ejw6Qox9jo4C4HtM6ZPsM/Q+/TAdWfx/xtbmwCgANuP0ytt+hE3IzzznYW3L9znMy++jAHgIt/cAeAw7cApOKwAPrAR5L5bWAjgKH+DUEjzVGETCizEV03AGzsTxfUC9jstqATyM2/Aqrqq8YXPsEPzTxyfkXVID4AK8iwNKmbeMCCDHV+DGlt83mImvagC8XG79CG7dj+SNy7VYiYNxOdbXkHA+nsFfCA92jQNAXH/EyTgRvwwDkJJ/WYi0AE+NM3ncPywteQ4+HQbgAdyJzzG9g+QJ8VL534fIIfTAOXASvsNBuLS0XBcYHsdNGKvoIBKuKUvnRVzdReYS4w48iPtwz6AK5MYZErFUIrO7K7uhdMLTTVv2q0DIcRaWlfXbVfLEuQRv4DVc0a7AE6U38y5t8jsmdpm5xMpYTmeNETsVWIgne5KFLDf/DwCOxm/4FZOaCvTb8+mALJ7dHYPIpoyayjQ8BttSgZDshJ5E28vk6zj/3nA/YHIZcHt3QXb6op5MUTghYteWcf4KzseFeD8ADkWmXhia/d1Y9sCzHSK4srRgQMS2YX67DQ8vxIj4zKT6s4D6uCMQ7yGrvW0bBk3C5vAnpVQ79xPE2ZhRej66cB8bBCD67h0chzEBWQkiJU5rR5pdNMRn/X8JknyAZCfE8gHS+03Qjn0EZpUnibPEGguhox834n6cW/7wBxYPU0R3I+o1lnlxLL4uUzM6Lze8vnAlur+xb/EW1mFD633Uc6RYtEbefzEMQHxX4bqeUiZ4BlWWVWOZbm+XNssWrbIaAOHA3AHRUoUsl5Q4eu/fqqytQzUAVmNOn8DhRRTOT6MmbZ+vAZDbpwptewGzx5O48a0BkLNLizTPAomYeL7M9HFj2AMTmY45mDBG5AAAAABJRU5ErkJggg==`,xe=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAuRJREFUWEfVl1moTWEUx3+31M1U5JYxxQuJa7xvEg+UMpOkDFcevChEGUMi8/gkD24kSaIkRJEhM1cyJA83JMKD5AUPvv9tfVpOe5999j3XkVX7tPfZa/h/3/p/a61dxT+Wqn8cn/8SwAhgHDAW6Ap0A9oDH+y6C5wHrgNfsnY4zw6MBhYD07Kc2vu3wD5gP/A9zaYUAG3NycIUJ2+A98AA24lCtYfAVuBkkn0WgB7AYdvyaH8BOAe8ABqBT85xf2CgXesLAq4EthWCKAagD3AGqDWjp8B24EiJKRBPpD/Y6eu/S96+GIBjwGwXfCbwrMTgXm15SM0O98cw4FF8TgMgsok8ktfA+BYGj3GWArvt4SowphDAhsDwz8ABoNqC9TWlRcDBFqy80OQKoJMk2Rh+FLO5EOkmEmY60AY4YYriwNRWCC4XQwGdiCjiWJMAiBgX3QuRbK49a6s6hDQsAI6nHaUcAP1i64GGyAEdtfnmSKnoEgj4ErjtwLwDeuYIlqQ6yxaidw1AfQQwCLgGdHJWX4GO7vl33soAoRrxxOzvh3pS50/BWmBTgnOxVpXMp6kMDHwL9aEdoAra2wPQ6i8Dw837j1DDVwcO7CwnWoLtPUANTf2hurAOzLPcnALWAc9bObjcaeW97NjXJBWiOcDRvxBYLrsDIrNEXKjNakatjWNCSPFZX2MqDWCFNShhUHneW0kAKvF3XHdUZWysJIBloa7ssu0XyWfovlIAaoCPjlCjbGbMBKDuVQe8Clt3ugxGqurF+rIFWBN9Ze2A5sBDpqwxbDNwKweQPcASp38zFLuR3j4LgAZNjWJRfhoIHaUHRYBMsRY/xOk0AWrBf0gWAClr0NQ0o6nIixgtIBpKdamLTgrj1uQwN8ZhJuo3d74kwKUAiHarAOUvj2jV6qICkCh5AMhBv7D1E+0Sk9PkBqAvJI14ApEqeQF4R/okU447u+uxDTH+W6HojpUDIE8qUnV/AUEbfiHgdnTrAAAAAElFTkSuQmCC`,Se=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA71JREFUWEfNl2nIVlUQx3+vgoRrai6lpaaiJbgU5QeXygVREVdUxF0RTa0oF3BBW6AFxRUXXHLrg5qgIgruS35QM1ooI3LFXdyKKAiq83+ZI+Pj83jPKynOpzlzZ87935n/mTm3iHTZB7ye6L4feCPFtyjFyXz+LYGvXJP2TnLKAfB+BpAZ9jxp7ySnPABmFgAh+wMBGAoMyfiyWH/V936S6rcaWKUMPA1cLGF9/w/3G0DVWILPAWXhUcoqYFhJOPBQwD2WACoAv9nn1gSuuE+vayxfAhzJSUkvoDKwIsdeA7hstmeAS/55vgxMAz40p4+A6S4gHrMzwPMBjG9OUR8mdrsY7aU9JW2BQ1kAxgV2LjCnecA7LmAqIFCSMsDfpj8B/Gn6FOBjFzMXeNvWLYBvswAMCl+3xpxWAiNcwGTgE1uXdS9V6nWsJO8Cc1yMSjLc1g2Ak1kAugFbzWkD0M8FvAfMsnVF4HfTfS8ZA4gjUdYDfW2Ry6m8A6MNcNACdgBd3GZKpVIqqRJSe9P0esAp03M5sD0QtrM9Kw/8kZWBpsB35vQVIEBRxgILbSF2XzX9ReBH0/sD+uooIl1r4J9A7tL+5dLznYLnQoc6a44C0twFjQqte6mta7kW/hJw3Ow9gC0uRqRrBtwO2XsyBUClwPxb5qi01ndBIlM853UCuc7Zs1aAsiXpBOx0MSKdjuz5EPtsCgD5KF3KzjWgugsaDGiKSQQs1r19SPNus7/mOCSTylQN+DmU5oVUACKX0vUXUM4AKXYA8IVt0iisfzG9K7DN9FeBY6aXMtKpT8imZ3dJoVlwOnQztV2JgKh+Eh2nSLAmYf2T2fsAG00XiX8w3ZdTd8p2qQAiceRfG7hgger3m0wXsb43fWAoyVrTGwK/mi6iqvYS9ZbuqQB061EtJaqb6ifxTepl4BuzjwSWmS6ixZc2Do3shNlVOgG9SwqVYLND62uqhqLGImkZmtRR08eHxjTf9KeA66a/4nx0fEenAhDTxXiJGL7X9I7uiKm5HDb7ROAz0323U833mH02MCEVgKbgW+bsG4t+NiIYXT4PmI9G9gemq9vpGEtUc2VTouv8PbfpQiXQZvEeoOm4ziH/OkxEHSs1nEhOnRhlQ8fS/xF5cipLcZDd2a4QAI1UpUzyJrA4N3WJa03GReabOyWLzYUA6A6w3AJ1B4j1TXzvHbdJwKe2ys3kfQH0Br60wKwfkSxQ8Uelp+NDZgk6ALuydi7hc52gOC8yAei2o5Ga+juehaX4JySf03+JLrAhSDUYWAAAAABJRU5ErkJggg==`,Ce={Swipe:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAALcklEQVR4Aeyd217iPBRHA1fMXPtAzpONPpl+7+O1zpV+ewdaCrTQQw47yfI3gVraHFay+CsWZu/4ggAEJgkgyCQaHoCAcwjCKoDAHQIIcgcOD0EAQVgDELhDIKIgd1rlIQgUQgBBCpkoupmHAILk4U6rhRBAkEImim7mIYAgebjTaiEEyhSkELh0s3wCCFL+HDKCiAQQJCJcqi6fAIKUP4eMICIBBIkIl6rLJ4AgV3PItxAYEkCQIQ22IXBFAEGugPAtBIYEEGRIg20IXBFAkCsgfAuBIQEEGdKIu03tBRJAkAInjS6nI4Ag6VjTUoEEECTjpD0dDs9Pv3//9UW2u674/fK93y+Pd/u5T09gn75JWuwJ7HZ/ZfvFl/3+TYT40eJk2xfnjo85vnIRQJBc5IO2S2WxCCBILLLUWwUBBKliGhlELAIIEoss9VZBAEGqmEYGEYsAgsQiW0u9jY8DQRpfAAz/PgEEuc+HRxsngCCNLwCGf58Agtznw6ONE0CQxhdAzuGX0DaClDBL9DEbAQTJhp6GSyCAICXMEn3MRgBBsqGn4RIIIEgJs0QflxIIdjyCBENJRTUSQJAaZ5UxBSOAIMFQUlGNBBCkxlllTMEIIEgwlFRUI4FbQWocJWOCwEoCCLISHKe1QQBB2phnRrmSQHBB/KcC8mmAK6eD09YS8OvucHhee/7UeUEFefr16637RED9hEAp+smBU22zHwKbCXgxfv/+8etuv3/za3BzrecKggniZdjtrg1+0Q7rILRJCgRCEdA1pWvLizGsVNag3z/ct2E7mCCTfZAO6yC8QJMH8QAE5hPwa0nSwunamn/aqiPjC3LuFmlyZsHWCgJ9ajinH+rtUnylFMR548V8/wzg+ILAfAJ+zcja8Wto/mmbj0wryLm7LzJg/ah/fok/M2FrhECO1Bh2I5cgXR9UlBCSdPVxXxEBeRL9q7+/pk6NIcLcgmhfVBLSRElQPIHcqeE7cbqxIMipK05FIU06Go3eW0iNIXpLgmi/VBLSREk0ViylxhC9NUG6vqkopElHo/J7a6kxxG1VEO2jSmIgTbQrlBgErKbGcKyWBen6qaKQJh2NSu4tp8YQcQmCaH9VEtJESRReSkiNIeJSBOn6rKKQJh2Nwu5LSY0h1tIE0b6rJKSJkiik+NTQS9ITXkMVCk2JgnRjV1HKTpNuJBXf+0vP9RqqQsdYsiCKXCUhTZSEsdKnRoJL0mMOvXRBOjZcSt+RMHBfemoMEdYiiPMXtEmU+18EHV85CNSSGkN29QhyHhVpcmaRZMuLcf48giRtpmqkRkEcaeKcS/TlE1uS2zNP1GbKZuoU5EzwmCZ8DNGZSKCtPjUKfOl2CYLaBXGnZzZ9tYuXhF2Yr9pTY0ipfkHOo1VJeEn4zGPxViupMQTTkiDduFUU0qSjMfO+pdQYImlREB2/SkKaKIkHZSQ1HpxR18OtCtLNoopCmnQ0ru5bTY0hhtYFURYqCWmiJE6l9dQ4YfB3COIx+BsVpfk0ITX8WuhvEKRH4TdUkibThNTw839zgyA3SPwOFaWZNLGTGp69qRsEmZ4OlaTqNCE1pie/ewRBOhLT9ypKdWnSX5Je+Ps1pqctzCMIMo+jSlJFmvjU0Le/IsasmUeQWZj6g1SUYtOkT41+OGw8IoAgjwjdPq6SFJUmpIZz7nYeZ+1BkFmYRg86Xkp/ODyPPmpgpxej0jcypcKLIFtI68/x+/2bf5l0Sz0RzvV9kr6dLveP0EIbVSJImHk2kyZ9ajiX7P/xcxV/IUioyTWQJqRGqMk814MgZxahtpL/Ek9qhJq623rmCHJ7FnvmEFBRor8kTGrMmYr1xyDIenZzzlRJorwkTGrMwb/9GATZznBODSpKsDQhNeYgD3MMgoThOKcWlWRTmpAaczCHPQZBwvKcU5uKsjhNSI05aMMfk1mQ8AMqpEaV5GfuH/H8NVT8XSPL1CJIFuwLG9W/sSw8hcPDEECQMByppVICCFLpxDKsMAQQJAxHaqmUQL2CVDphDCstAQRJy5vWCiOAILkm7Ofn3WmZ1z6Xrs/jFPwoBAmOdFaFLx9fX39mHSkHfXx+vsodkgiE1P8QJCVxTYzv7z+nBb+oZT1Hyk5OQhSBkOofgqwgvfIUnxof//69rzzfnyaSkCaeRJobBInNeUNqTHVNJZFCmkwBCrgfQQLCHKkqSGqM1Ot3iSSkiScR7wZBYrCNkBpT3VRJpJAmU4A27keQjQBHTo+aGiPt+V0iCWniSYS9QZBQPMOkxqbeqCRSSJNNFC9PRpBLHuu+05du5e8aW1+hWtf47VkiyauTPi34Q+RtJezxBBDEY1h5I6khi3FnRYzhKLRPpz9G8neTIZiF2wiyEFh/uDxDnxZgv8vihghMmmyYGARZCs9wakwNhTSZIvN4P4I8ZnQ8QsTQn+tLSI1jh69vndM0kcIv8bdoJvcgyCSaiweyvHR70YOA34gkvCQ8kyeC3APVpcbxatp7Rxb3mEoihTR5MHMIMg2oqtSYGqZIQppMwZH9CCIQLv5VnBoX4xx8o5JIIU0GTLpNBOlIHO+bSI3jUG9vRZJ1aXJbVTV7EESnssHU0GGPFZVECmlygoMgzjWdGqd1cHMnkpAmQqVdQUgNmf77/1QSKU2nSauCkBr33bh4VCRpNk3aEoTUuFj4S75RSaQkT5MlfYxxbEuCkBoBVpBI0lSa1C8IqRFAi8sqVBIpTaRJ3YKcLknXq1kvp5jvQhAQSY5pok9CISo0WEedgsiEyeSZfCOTwTWwqUvC+fV0hXOVb8yqT5BTamyadU5eTEBF0bcDFPQ231ljrEcQUmPWhMc8SH+UrS1N6hCE1Ii57hfX3aeJc8X/2FW6IC8yGfyu4ex9+TQ5vo+maEnKFER+nNKfd0UOfRXF3uqgRz0BnSMpxb4kXKIgL/pzrj5D9bPAhnkCIok+mRWXJusEyTEdpEYO6kHbVEmkFJUmpQhCagRdqnkrE0mKSRPbgpAaeVdyxNZVEinm08SyIKRGxAVqpWqRxHSa2BOE1LCydpP1QyWRYjJNrAnywitUydaluYZEEnNpYkMQUsPcYs3VIZVEipk0sSAIv2vkWo2G2xVJTKRJPkFIDcPL00bXVBIpWdMklyCkho01WEQvRJJsaZJWkLypUcRioJPjBFQSKcnTJJ0gp0vSuYZqfAGwdx4BkSTp/5gVTpDv7/9GhyipIYPikvRROOxcQ0CfZPXPAXLu+MWPu927PBbkXzBBtNPSo3OHRQx/SfrX1x/Zzz8IBCcgT7zHNBm+MUvWnd8fqLVggmh/tGNSdp0YJ2n0IQoEohDQNSZr7lXKzpfAT8hBBekIaKe77TbuGWWtBKIIUissxtUeAQRpb84Z8QICCLIAFoe2RwBB2ptzRryAAIIsgJXlUBrNSgBBsuKncesEEMT6DNG/rAQQJCt+GrdOAEGszxD9y0oAQbLiz9s4rT8mgCCPGXFEwwQQpOHJZ+iPCSDIY0Yc0TABBGl48hn6YwII8pgRRywnUM0ZCFLNVDKQGAQQJAZV6qyGAIJUM5UMJAYBBIlBlTqrIYAg1UxlKwNJO04EScub1gojgCCFTRjdTUsAQdLyprXCCCBIzgnTj8j8+Xl3j0rOPjbeNoJkWgBPh8Pzx+fnq37G7KOix2bqZlvNjowWQUagpNi15NMnlxybou8ttYEgLc02Y11MAEEWI+OElgggSEuzzVgXE0CQxcg4oSUCoQRpiRljbYgAgjQ02Qx1OQEEWc6MMxoigCANTTZDXU4AQZYz44yGCBQgSEOzwVDNEUAQc1NChywRQBBLs0FfzBFAEHNTQocsEUAQS7NBX8wRaFsQc9NBh6wRQBBrM0J/TBFAEFPTQWesEUAQazNCf0wRQBBT00FnrBFAkEgzQrV1EPgfAAD//2qm5gYAAAAGSURBVAMAd9+3vkECJ7IAAAAASUVORK5CYII=`,Legend:`data:image/png;base64,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`,LayerList:`data:image/png;base64,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`,Print:`data:image/png;base64,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`,Clear:`data:image/png;base64,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`,MeasureLine:`data:image/png;base64,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`,MeasurePolygon:`data:image/png;base64,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`,ZoomIn:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAH8ElEQVR4AeyZDXLiMAxGSY8EHKA9Wbsnaw8AXIm1WNKhLCWJY1uy9DpkIYl/pPflDe3sy4YfdQLb7fZ9t9t9puN8PT7lmnphFLBBEMWHQCQQIYZh+EhlvKZjfL3KNbknY8aLvLcngCDtmV92lAdfJLicPPlHxsjYJ0O4VZEAglSE+9vS8sDLg//b/fvrMna/399+w9wP4bwSAQSpBPbZsvLAP7v/6N75fP58dJ1rdQlUFKRu4b2uLt8eubXzLZJLLn8eguSzaz4zfYu8N980+IYI0vgBSL9e8bdEY+ZrtkOQNfSY654AgriPmAbXEOhTkDUdMxcCCwggyAJYDI1HAEHiZU7HCwggyAJYDI1HAEHiZU7HCwggyB0sTiFwSwBBbmnwGQJ3BBDkDginELglgCC3NPgMgTsCCHIHhFMI3BJAkFsadT+zeocEEKTD0Ci5HQEEaceanTokgCAdhkbJ7QggSDvW7NQhAQTpMLT/S+ZKLQIIUoss67oggCAuYqSJWgQQpBZZ1nVBAEFcxEgTtQggSC2yXtYN3geCBH8AaP85AQR5zoe7wQkgSPAHgPafE0CQ53y4G5wAggR/ADTb72FvBOkhJWpUI4AgaujZuAcCCNJDStSoRgBB1NCzcQ8EEKSHlKhxKYFi4xGkGEoW8kgAQTymSk/FCCBIMZQs5JEAgnhMlZ6KEUCQYihZyCOB/wXx2CU9QSCTAIJkgmNaDAIIEiNnuswkgCCZ4JgWgwCCxMiZLjMJNBUks0amQUCNAIKooWfjHgggSA8pUaMaAQRRQ8/GPRBAkB5SokY1Al4EUQPIxr4JIIjvfOluJQEEWQmQ6b4JIIjvfOluJQEEWQmQ6b4JIMhkvgyITABBIqdP75MEEGQSEQMiE0CQyOnT+yQBBJlExIDIBBBEM332Nk8AQcxHRIGaBBBEkz57myeAIOYjokBNAgiiSZ+9zRNAEPMR5RXIrDIEEKQMR1ZxSgBBnAZLW2UIIEgZjqzilACCOA2WtsoQQJAyHCOtEqpXBAkVN80uJYAgS4kxPhQBBAkVN80uJYAgS4kxPhQBBAkVt/Vm7dWHIPYyoSJDBBDEUBiUYo8AgtjLhIoMEUAQQ2FQij0CCGIvEyqqQSBzTQTJBMe0GAQQJEbOdJlJAEEywTEtBgEEiZEzXWYSQJBMcEyLQeChIPv9/nW3231eD94LskiP1Ws6cl/kUjCL8fnebrfvcjwK5YcgVzHO6eczDZYgOTab0gw2K39K1xN+vWEYPuRIwpzvRfkWRG5cxViZH9Mh0C8BEUVcGDu4CCIX5MZ4kXcIRCYgLogTwuAiiFyQEw4IQOAfgdGJl9GUf5db/8t+ELBLQNx4SabIH2l2q6QyCCgREDfkVywEUQqAbc0TeBVBzFdJgRDQIiCCfGltzr4QME7g6yX934dPQYyTpzz7BMSNl9Pp9Md+qVQIgfYExA35FWuTTPlovz07QsAugdGJiyBiynjBbslUBoE2BMQFcUJ2uwgiH+SC3JDPHBCISiD938ebuDD2/y2IXJAbx+NxEFHkSNfkD3iOzeYHg8268zR91atkLax1zVLEkGf/cDgIk++AfggyXhVR5EgT3jiORRkkxj8CSOdLXl/kUTaPkee9GGMoDwUZb/IOgegEECT6E0D/TwkgyFM83IxOAEFsPQFUY4wAghgLhHJsEUAQW3lQjTECCGIsEMqxRQBBbOVBNcYIIIixQOqVw8o5BBAkhxpzwhBAkDBR02gOAQTJocacMAQQJEzUNJpDAEFyqDHnJwHHZwjiOFxaW08AQdYzZAXHBBDEcbi0tp4AgqxnyAqOCSCI43A9tKbdA4JoJ8D+pgkgiOl4KE6bAIJoJ8D+pgkgiOl4KE6bAIJoJ8D+WgRm7YsgszAxKCoBBImaPH3PIoAgszAxKCoBBImaPH3PIoAgszAxKCqBPEGi0qLvcAQQJFzkNLyEAIIsocXYcAQQJFzkNLyEAIIsocXYcATMCRIuARo2TQBBTMdDcdoEEEQ7AfY3TQBBTMdDcdoEEEQ7AfY3TSCSIKaDoDibBBDEZi5UZYQAghgJgjJsEkAQm7lQlRECCGIkCMqwSQBBiuTCIl4JIIjXZOmrCAEEKYKRRbwSQBCvydJXEQIIUgQji3glgCDWk6U+VQIIooqfza0TQBDrCVGfKgEEUcXP5tYJIIj1hKhPlQCCqOLX3ZzdpwkgyDQjRgQmgCCBw6f1aQIIMs2IEYEJIEjg8Gl9mgCCTDNixHICbmYgiJsoaaQGAQSpQZU13RBAEDdR0kgNAghSgypruiGAIG6ijNJI2z4RpC1vduuMAIJ0FhjltiWAIG15s1tnBBCks8Aoty0BBGnLm90sE3hQG4I8gMIlCIwEEGQkwTsEHhBAkAdQuASBkQCCjCR4h8ADAgjyAAqXIDASKCXIuB7vEHBFAEFcxUkzpQkgSGmirOeKAIK4ipNmShNAkNJEWc8VgQ4EccWbZjojgCCdBUa5bQkgSFve7NYZAQTpLDDKbUsAQdryXrXb+Xz+WrUAkxcTiC3IYlzrJwzD8Gf9KqzQigCCtCJ93edwOGR/C5xOJ+S6cmz1hiCtSN/sMwzD283prI/p16uPWQMZVJQAghTFOW8x+RZZ8sDLWL495rEtPQpBShOduZ488PLgTw2XMTJ2ahz36xBAkDpcN3OWlQf/eDwOIkEaf/u3yZdck3syJt3jpUTgLwAAAP//pyjPFgAAAAZJREFUAwBczBbXqyNG8AAAAABJRU5ErkJggg==`,ZoomOut:`data:image/png;base64,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`,FullScreen:`data:image/png;base64,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`},H={Point:_e,Line:ve,Rectangle:ye,Polygon:be,Trash:Se,Reset:xe},U=[{id:`point`,title:`绘制点:点击地图绘制点要素`,mode:`draw_point`,icon:H.Point},{id:`line`,title:`绘制线:点击地图开始,双击结束绘制线要素`,mode:`draw_line_string`,icon:H.Line},{id:`polygon`,title:`绘制面:点击地图开始,双击结束绘制面要素`,mode:`draw_polygon`,icon:H.Polygon},{id:`reset`,title:`清除:删除所有绘制的要素`,mode:`simple_select`,icon:H.Reset}],we=[{id:`gl-draw-line`,type:`line`,filter:[`all`,[`==`,`$type`,`LineString`]],layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":`#D20C0C`,"line-dasharray":[.2,2],"line-width":2}},{id:`gl-draw-polygon-fill`,type:`fill`,filter:[`all`,[`==`,`$type`,`Polygon`]],paint:{"fill-color":`#D20C0C`,"fill-outline-color":`#D20C0C`,"fill-opacity":.3}},{id:`gl-draw-polygon-midpoint`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`midpoint`]],paint:{"circle-radius":5,"circle-color":`#fbb03b`}},{id:`gl-draw-polygon-stroke-active`,type:`line`,filter:[`all`,[`==`,`$type`,`Polygon`]],layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":`#D20C0C`,"line-dasharray":[.3,3],"line-width":3}},{id:`gl-draw-polygon-and-line-vertex-halo-active`,type:`circle`,filter:[`all`,[`==`,`meta`,`vertex`],[`==`,`$type`,`Point`]],paint:{"circle-radius":5,"circle-color":`#FFF`}},{id:`gl-draw-polygon-and-line-vertex-active`,type:`circle`,filter:[`all`,[`==`,`meta`,`vertex`],[`==`,`$type`,`Point`]],paint:{"circle-radius":3,"circle-color":`#D20C0C`}},{id:`gl-draw-point-point-stroke-active`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`true`]],paint:{"circle-radius":8,"circle-color":`#FFF`}},{id:`gl-draw-point-active`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`true`]],paint:{"circle-radius":6,"circle-color":`#D20C0C`}},{id:`gl-draw-point-point-stroke-inactive`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`false`]],paint:{"circle-radius":8,"circle-color":`#FFF`}},{id:`gl-draw-point-inactive`,type:`circle`,filter:[`all`,[`==`,`$type`,`Point`],[`==`,`meta`,`feature`],[`==`,`active`,`false`]],paint:{"circle-radius":6,"circle-color":`#D20C0C`}}],Te=(0,t.memo)(e=>{let{style:n,classname:i,onDraw:o,initFeature:s,modes:c}=e,l=c?U.filter(e=>c.includes(e.mode)||e.id===`reset`):U,{map:u}=C(),d=(0,t.useRef)(null),f=e=>{if(u&&e.features&&d.current){let t=d.current.add(e);d.current.changeMode(`simple_select`,{featureIds:t})}},p=(e,t)=>{if(!d.current||!u)return;t===`reset`&&d.current.deleteAll(),d.current.changeMode(e);let n=u.getCanvas();e===`simple_select`?n.style.cursor=``:n.style.cursor=`crosshair`},m=()=>{if(!d.current)return;let e=d.current.getAll();e.features&&e.features.length>0&&o?.({data:e})};return(0,t.useEffect)(()=>{s&&f(s)},[s]),(0,t.useEffect)(()=>(u&&!d.current&&(u.doubleClickZoom.disable(),d.current=new a.default({displayControlsDefault:!1,styles:we,defaultMode:`simple_select`}),u.addControl(d.current,`bottom-left`),u.on(`draw.create`,m),u.on(`draw.delete`,m),u.on(`draw.update`,m),u.on(`draw.modechange`,e=>{let t=u.getCanvas();e.mode===`simple_select`?t.style.cursor=``:t.style.cursor=`crosshair`}),s&&f(s)),()=>{}),[]),(0,r.jsx)(`div`,{className:`qm-maplibregl-draw ${i||``}`,style:n,children:(0,r.jsx)(`div`,{className:`qm-maplibregl-draw-bar`,children:(0,r.jsx)(`div`,{children:l.map(e=>(0,r.jsx)(`div`,{title:e.title,className:`qm-maplibregl-draw-bar-button`,style:{backgroundImage:`url(${e.icon})`,...n},onClick:()=>p(e.mode,e.id)},e.id))})})})}),Ee=(0,t.memo)(e=>{let{style:t,classname:n,icon:i,onCallback:a}=e,{map:o}=C();return(0,r.jsx)(E,{title:`点击清除地图上所有选中对象`,style:t,icon:i,classname:n,onToggle:()=>{o&&(o.clearSelect(),a?.())}})}),De=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,onCallback:o}=e;return(0,r.jsx)(E,{title:`点击进入或退出全屏`,style:n,icon:a,classname:i,onToggle:(0,t.useCallback)(()=>{document.fullscreenElement?document.exitFullscreen?.().catch(e=>console.error(`无法退出全屏模式: ${e}`)):document.documentElement.requestFullscreen().catch(e=>console.error(`无法进入全屏模式: ${e}`)),o?.()},[o])})}),Oe=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,onCallback:o}=e,{map:s}=C();return(0,r.jsx)(E,{title:`点击放大地图`,style:n,icon:a,classname:i,onToggle:(0,t.useCallback)(()=>{s&&(s.zoomTo(s.getZoom()+1),o?.())},[s])})}),ke=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,onCallback:o}=e,{map:s}=C();return(0,r.jsx)(E,{title:`点击缩小地图`,style:n,icon:a,classname:i,onToggle:(0,t.useCallback)(()=>{s&&(s.zoomTo(s.getZoom()-1),o?.())},[s])})}),W=class{map;uuid;isMeasure=!1;points=[];markers=[];ele;tooltip;onMeasure;scale;prevDoubleClickZoom;constructor(e,t){this.map=e,this.uuid=this.generateId(),this.onMeasure=t,this.scale=window.scale??1,this.prevDoubleClickZoom=e.doubleClickZoom.isEnabled(),this.ele=document.createElement(`div`),this.ele.className=`measureResult`,this.tooltip=new n.Marker({element:this.ele,anchor:`left`,offset:[8,0]}).setLngLat([0,0]).addTo(e),this.markers.push(this.tooltip)}generateId(){return(Math.random()*1e7).toString(16).substr(0,4)+`-`+new Date().getTime()+`-`+Math.random().toString().substr(2,5)}start(){this.map.doubleClickZoom.disable(),this.map.getCanvas().style.cursor=`crosshair`,this.isMeasure=!0,this.map.on(`click`,this.mapClickHandle),this.map.on(`mousemove`,this.mapMouseMoveHandle),this.map.on(`dblclick`,this.mapDbclickHandle)}clearDrawEventListener(){this.map.off(`click`,this.mapClickHandle),this.map.off(`mousemove`,this.mapMouseMoveHandle),this.map.off(`dblclick`,this.mapDbclickHandle)}clearMeasure(){this.prevDoubleClickZoom?this.map.doubleClickZoom.enable():this.map.doubleClickZoom.disable(),this.map.getCanvas().style.cursor=`pointer`,this.removeLayers(),this.markers.forEach(e=>{e.remove()}),this.markers=[],this.points=[],this.isMeasure=!1,this.clearDrawEventListener()}finishMeasure(e){this.isMeasure=!1,this.map.getCanvas().style.cursor=``,this.tooltip.remove();let t=document.createElement(`div`);t.className=`measureResultClose`,t.innerHTML=`×`;let r=new n.Marker({element:t,anchor:`bottom-left`,offset:[-5,-10]}).setLngLat(e).addTo(this.map);t.onclick=e=>{e.stopPropagation(),this.clearMeasure()},this.markers.push(r),this.onMeasure?.({type:this.getMeasureType(),points:[...this.points],value:this.getResultValue(),formatted:this.getResultText()})}getCoords(e){let t=this.map.unproject([e.point.x/this.scale,e.point.y/this.scale]);return[t.lng,t.lat]}},Ae=6371008.8,G=6378137,K=Math.PI/180,q=(e,t)=>{let n=(t[1]-e[1])*K,r=(t[0]-e[0])*K,i=e[1]*K,a=t[1]*K,o=Math.sin(n/2)**2+Math.cos(i)*Math.cos(a)*Math.sin(r/2)**2;return 2*Ae*Math.atan2(Math.sqrt(o),Math.sqrt(1-o))/1e3},J=e=>{let t=0;for(let n=1;n<e.length;n++)t+=q(e[n-1],e[n]);return t},Y=e=>{let t=e.length;if(t<3)return 0;let n=0;for(let r=0;r<t;r++){let i,a,o;r===t-2?(i=t-2,a=t-1,o=0):r===t-1?(i=t-1,a=0,o=1):(i=r,a=r+1,o=r+2);let s=e[i],c=e[a],l=e[o];n+=(l[0]-s[0])*K*Math.sin(c[1]*K)}return Math.abs(n*G*G/2)},X=e=>e<1?Math.round(e*1e3)+`m`:e.toFixed(2)+`km`,Z=(e,t=`mu`)=>t===`mu`?(e*.0015).toFixed(4)+`亩`:e<1e3?Math.round(e)+`m²`:(e/1e6).toFixed(4)+`km²`,Q=class extends W{jsonPoint={type:`FeatureCollection`,features:[]};jsonLine={type:`FeatureCollection`,features:[]};constructor(e,t){super(e,t),this.createLayers()}createLayers(){let e=`polylinePointsSource`+this.uuid,t=`polylineLines`+this.uuid,n=`polylineMovelinesSource`+this.uuid;this.map.addSource(e,{type:`geojson`,data:this.jsonPoint}),this.map.addSource(t,{type:`geojson`,data:this.jsonLine}),this.map.addSource(n,{type:`geojson`,data:this.jsonLine}),this.map.addLayer({id:`polylineMovelinesLayer`+this.uuid,type:`line`,source:n,paint:{"line-color":`#ff0000`,"line-width":2,"line-opacity":.65}}),this.map.addLayer({id:`polylineLinesLayer`+this.uuid,type:`line`,source:t,paint:{"line-color":`#ff0000`,"line-width":2,"line-opacity":.65}}),this.map.addLayer({id:`polylinePointsLayer`+this.uuid,type:`circle`,source:e,paint:{"circle-color":`#ffffff`,"circle-radius":3,"circle-stroke-width":2,"circle-stroke-color":`#ff0000`}})}removeLayers(){let e=`polylinePointsSource`+this.uuid;this.map.getSource(e)&&(this.map.removeLayer(`polylinePointsLayer`+this.uuid),this.map.removeLayer(`polylineLinesLayer`+this.uuid),this.map.removeLayer(`polylineMovelinesLayer`+this.uuid),this.map.removeSource(e),this.map.removeSource(`polylineLines`+this.uuid),this.map.removeSource(`polylineMovelinesSource`+this.uuid))}addPoint(e){let t=`polylineLines`+this.uuid;if(this.jsonPoint.features.length>0){let n=this.jsonPoint.features[this.jsonPoint.features.length-1];this.jsonLine.features.push({type:`Feature`,geometry:{type:`LineString`,coordinates:[n.geometry.coordinates,e]}}),this.map.getSource(t).setData(this.jsonLine)}this.jsonPoint.features.push({type:`Feature`,geometry:{type:`Point`,coordinates:e}}),this.map.getSource(`polylinePointsSource`+this.uuid).setData(this.jsonPoint)}addMeasureRes(e){let t=document.createElement(`div`);t.className=`measureResult`,t.innerHTML=this.points.length===0?`起点`:this.getFormatText(e);let r=new n.Marker({element:t,anchor:`left`,offset:[8,0]}).setLngLat(e).addTo(this.map);this.markers.push(r)}getFormatText(e){return X(J([...this.points,e]))}getResultValue(){return J(this.points)}getResultText(){return X(this.getResultValue())}getMeasureType(){return`line`}mapClickHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);this.addMeasureRes(t),this.addPoint(t),this.points.push(t)}};mapMouseMoveHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);if(this.jsonPoint.features.length>0){let e={type:`Feature`,geometry:{type:`LineString`,coordinates:[this.jsonPoint.features[this.jsonPoint.features.length-1].geometry.coordinates,t]}};this.map.getSource(`polylineMovelinesSource`+this.uuid).setData(e),this.ele.innerHTML=this.getFormatText(t)}else this.ele.innerHTML=`点击地图开始测量`;this.tooltip.setLngLat(t)}};mapDbclickHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);this.addPoint(t),this.points.push(t),this.finishMeasure(t)}}},je=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,onMeasure:o}=e,{map:s}=C(),c=(0,t.useRef)(null),l=(0,t.useCallback)(()=>{s&&(c.current?.clearMeasure(),c.current=new Q(s,o),c.current.start())},[s,o]);return(0,t.useEffect)(()=>()=>{c.current?.clearMeasure(),c.current=null},[]),(0,r.jsx)(E,{title:`点击开始测量距离,双击结束`,style:n,icon:a,classname:i,onToggle:l})}),$=class extends W{unit;jsonPoint={type:`FeatureCollection`,features:[]};jsonLine={type:`FeatureCollection`,features:[]};constructor(e,t=`mu`,n){super(e,n),this.unit=t,this.createLayers()}createLayers(){let e=`polygonPointsSource`+this.uuid,t=`polygonLines`+this.uuid;this.map.addSource(e,{type:`geojson`,data:this.jsonPoint}),this.map.addSource(t,{type:`geojson`,data:this.jsonLine}),this.map.addLayer({id:`polygonLinesLayer`+this.uuid,type:`fill`,source:t,paint:{"fill-color":`#ff0000`,"fill-opacity":.1}}),this.map.addLayer({id:`polygonLinesstrokeLayer`+this.uuid,type:`line`,source:t,paint:{"line-color":`#ff0000`,"line-width":2,"line-opacity":.65}}),this.map.addLayer({id:`polygonPointsLayer`+this.uuid,type:`circle`,source:e,paint:{"circle-color":`#ffffff`,"circle-radius":3,"circle-stroke-width":2,"circle-stroke-color":`#ff0000`}})}removeLayers(){let e=`polygonPointsSource`+this.uuid;this.map.getSource(e)&&(this.map.removeLayer(`polygonPointsLayer`+this.uuid),this.map.removeLayer(`polygonLinesLayer`+this.uuid),this.map.removeLayer(`polygonLinesstrokeLayer`+this.uuid),this.map.removeSource(e),this.map.removeSource(`polygonLines`+this.uuid))}addPoint(e){this.jsonPoint.features.push({type:`Feature`,geometry:{type:`Point`,coordinates:e}}),this.map.getSource(`polygonPointsSource`+this.uuid).setData(this.jsonPoint)}getAreaM2(e){return Y([...this.points,e,this.points[0]])}getFormatText(e){return Z(this.getAreaM2(e),this.unit)}getResultValue(){return this.points.length<3?0:Y([...this.points,this.points[0]])}getResultText(){return Z(this.getResultValue(),this.unit)}getMeasureType(){return`polygon`}mapClickHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);this.addPoint(t),this.points.push(t)}};mapMouseMoveHandle=e=>{if(this.isMeasure){let t=this.getCoords(e),n=this.points.length;if(n===0)this.ele.innerHTML=`点击地图开始测量`;else if(n===1)this.ele.innerHTML=`点击地图继续绘制`;else{let e={type:`Feature`,geometry:{type:`Polygon`,coordinates:[[...this.points,t,this.points[0]]]}};this.map.getSource(`polygonLines`+this.uuid).setData(e),this.ele.innerHTML=this.getFormatText(t)}this.tooltip.setLngLat(t)}};mapDbclickHandle=e=>{if(this.isMeasure){let t=this.getCoords(e);this.addPoint(t),this.points.push(t);let n={type:`Feature`,geometry:{type:`Polygon`,coordinates:[[...this.points,this.points[0]]]}};this.map.getSource(`polygonLines`+this.uuid).setData(n),this.finishMeasure(t)}}},Me=(0,t.memo)(e=>{let{style:n,classname:i,icon:a,unit:o=`mu`,onMeasure:s}=e,{map:c}=C(),l=(0,t.useRef)(null),u=(0,t.useCallback)(()=>{c&&(l.current?.clearMeasure(),l.current=new $(c,o,s),l.current.start())},[c,o,s]);return(0,t.useEffect)(()=>()=>{l.current?.clearMeasure(),l.current=null},[]),(0,r.jsx)(E,{title:`点击开始测量面积,双击结束`,style:n,icon:a,classname:i,onToggle:u})});e.BaseLayer=_,e.BaseMeasure=W,e.Clear=Ee,e.Draw=Te,e.FullScreen=De,e.LayerGroupWrapper=y,e.LayerList=j,e.LayerWrapper=v,e.Legend=re,e.MapContext=S,e.MapWidget=T,e.MapWrapper=x,e.MeasureLine=je,e.MeasurePolygon=Me,e.PolygonMeasure=$,e.PolylineMeasure=Q,e.Print=R,e.Swipe=ge,e.WIDGETICONS=Ce,e.WidgetButton=E,e.ZoomIn=Oe,e.ZoomOut=ke,e.formatArea=Z,e.formatDistance=X,e.haversineDistance=q,e.polygonAreaM2=Y,e.polylineLengthKm=J,e.useMap=C});
|