bbl-mapbox-react 0.0.14 → 0.0.16
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/components/MeasureControl.d.ts +5 -2
- package/dist/index.cjs +7 -7
- package/dist/index.mjs +323 -297
- package/dist/types.d.ts +0 -2
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -3181,9 +3181,9 @@ function RoadHighlightControl({ map: e, highlightWidth: r = 3, defaultRoadTypes:
|
|
|
3181
3181
|
b,
|
|
3182
3182
|
D
|
|
3183
3183
|
]);
|
|
3184
|
-
let
|
|
3184
|
+
let ve = (e, t) => {
|
|
3185
3185
|
y((n) => t ? [...n, e] : n.filter((t) => t !== e));
|
|
3186
|
-
},
|
|
3186
|
+
}, ye = (e) => {
|
|
3187
3187
|
y(e ? ROAD_TYPE_OPTIONS.map((e) => e.class) : []);
|
|
3188
3188
|
}, k = v.length > 0;
|
|
3189
3189
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -3211,7 +3211,7 @@ function RoadHighlightControl({ map: e, highlightWidth: r = 3, defaultRoadTypes:
|
|
|
3211
3211
|
}), /* @__PURE__ */ jsx(Checkbox, {
|
|
3212
3212
|
checked: v.length === ROAD_TYPE_OPTIONS.length,
|
|
3213
3213
|
indeterminate: v.length > 0 && v.length < ROAD_TYPE_OPTIONS.length,
|
|
3214
|
-
onChange:
|
|
3214
|
+
onChange: ye,
|
|
3215
3215
|
style: {
|
|
3216
3216
|
"--color-text-1": "#fff",
|
|
3217
3217
|
"--color-border-2": "rgba(255, 255, 255, 0.3)"
|
|
@@ -3228,11 +3228,11 @@ function RoadHighlightControl({ map: e, highlightWidth: r = 3, defaultRoadTypes:
|
|
|
3228
3228
|
className: "mapbox-road-highlight-control__type-list",
|
|
3229
3229
|
children: ROAD_TYPE_OPTIONS.map((e) => /* @__PURE__ */ jsxs("div", {
|
|
3230
3230
|
className: "mapbox-road-highlight-control__type-item",
|
|
3231
|
-
onClick: () =>
|
|
3231
|
+
onClick: () => ve(e.class, !v.includes(e.class)),
|
|
3232
3232
|
children: [
|
|
3233
3233
|
/* @__PURE__ */ jsx(Checkbox, {
|
|
3234
3234
|
checked: v.includes(e.class),
|
|
3235
|
-
onChange: (t) =>
|
|
3235
|
+
onChange: (t) => ve(e.class, t),
|
|
3236
3236
|
onClick: (e) => e.stopPropagation(),
|
|
3237
3237
|
style: {
|
|
3238
3238
|
"--color-text-1": "#fff",
|
|
@@ -3367,7 +3367,14 @@ function clearPreviewSource(e, t) {
|
|
|
3367
3367
|
features: []
|
|
3368
3368
|
});
|
|
3369
3369
|
}
|
|
3370
|
+
function ensureGlyphs(e) {
|
|
3371
|
+
if (!e.getStyle().glyphs) {
|
|
3372
|
+
let t = e.style, n = "/gis-fonts/{fontstack}/{range}.pbf";
|
|
3373
|
+
t.glyphs = n, t.stylesheet && (t.stylesheet.glyphs = n);
|
|
3374
|
+
}
|
|
3375
|
+
}
|
|
3370
3376
|
function initAllPreviewLayers(e) {
|
|
3377
|
+
ensureGlyphs(e);
|
|
3371
3378
|
for (let t of [
|
|
3372
3379
|
"rect",
|
|
3373
3380
|
"circle",
|
|
@@ -3498,57 +3505,61 @@ function clearAllPreviewSources(e) {
|
|
|
3498
3505
|
"polyline-vertices-source"
|
|
3499
3506
|
]) clearPreviewSource(e, `${PREVIEW_PREFIX}${t}`);
|
|
3500
3507
|
}
|
|
3501
|
-
function MeasureControl({ map: e,
|
|
3502
|
-
let [
|
|
3503
|
-
showArea:
|
|
3504
|
-
showLength:
|
|
3505
|
-
showRadius:
|
|
3506
|
-
}),
|
|
3507
|
-
|
|
3508
|
-
|
|
3509
|
-
|
|
3510
|
-
|
|
3511
|
-
|
|
3508
|
+
function MeasureControl({ map: e, entityConfig: r, onEntityConfigChange: i, className: s = "", style: c }) {
|
|
3509
|
+
let [l, u] = useState(!1), [d, f] = useState(null), [g, _] = useState({
|
|
3510
|
+
showArea: !0,
|
|
3511
|
+
showLength: !0,
|
|
3512
|
+
showRadius: !0
|
|
3513
|
+
}), v = r !== void 0, y = v ? {
|
|
3514
|
+
showArea: r.showArea ?? !0,
|
|
3515
|
+
showLength: r.showLength ?? !0,
|
|
3516
|
+
showRadius: r.showRadius ?? !0
|
|
3517
|
+
} : g, [b, x] = useState([]), S = useRef(/* @__PURE__ */ new Map()), C = useRef(0), T = useRef(null), E = useRef(null), D = useRef(null), O = useRef(null), k = useRef(null), A = useRef([]), j = useRef([]), M = useRef(y);
|
|
3518
|
+
M.current = y;
|
|
3519
|
+
let be = useRef(d);
|
|
3520
|
+
be.current = d;
|
|
3521
|
+
let xe = useCallback(() => `measure-${++C.current}`, []), Se = useRef(!1), Ce = useCallback(() => {
|
|
3522
|
+
!e || !e.isStyleLoaded() || (initAllPreviewLayers(e), Se.current = !0);
|
|
3512
3523
|
}, [e]);
|
|
3513
3524
|
useEffect(() => {
|
|
3514
3525
|
if (!e) return;
|
|
3515
3526
|
let t = () => {
|
|
3516
|
-
initAllPreviewLayers(e),
|
|
3527
|
+
initAllPreviewLayers(e), Se.current = !0;
|
|
3517
3528
|
};
|
|
3518
3529
|
e.isStyleLoaded() ? t() : e.once("load", t);
|
|
3519
3530
|
let n = () => {
|
|
3520
|
-
|
|
3531
|
+
Se.current = !1;
|
|
3521
3532
|
};
|
|
3522
3533
|
return e.on("style.load", n), () => {
|
|
3523
3534
|
e.off("style.load", n);
|
|
3524
3535
|
};
|
|
3525
3536
|
}, [e]), useEffect(() => {
|
|
3526
3537
|
let e = (e) => {
|
|
3527
|
-
|
|
3538
|
+
T.current && !T.current.contains(e.target) && E.current && !E.current.contains(e.target) && u(!1);
|
|
3528
3539
|
};
|
|
3529
3540
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
3530
3541
|
}, []);
|
|
3531
|
-
let
|
|
3542
|
+
let we = useCallback((t) => {
|
|
3532
3543
|
if (!e) return;
|
|
3533
|
-
let n = applyEntityConfig(t,
|
|
3544
|
+
let n = applyEntityConfig(t, M.current), r = null;
|
|
3534
3545
|
if (n.type === "circle" ? r = new CircleRenderer(e, n) : n.type === "square" ? r = new SquareRenderer(e, n) : n.type === "rectangle" ? r = new RectangleRenderer(e, n) : n.type === "polygon" ? r = new PolygonRenderer(e, n) : n.type === "polyline" && (r = new PolylineRenderer(e, n)), r) {
|
|
3535
|
-
|
|
3546
|
+
S.current.set(n.id, r);
|
|
3536
3547
|
let e = {
|
|
3537
3548
|
entity: n,
|
|
3538
3549
|
shapeLabel: SHAPE_LABELS[n.type] || n.type,
|
|
3539
3550
|
area: computeEntityArea(n),
|
|
3540
3551
|
lengthOrRadius: computeEntityLengthOrRadius(n)
|
|
3541
3552
|
};
|
|
3542
|
-
|
|
3553
|
+
x((t) => [...t, e]);
|
|
3543
3554
|
}
|
|
3544
|
-
}, [e]),
|
|
3545
|
-
let t =
|
|
3546
|
-
t && (t.destroy(),
|
|
3547
|
-
}, []),
|
|
3548
|
-
|
|
3549
|
-
}, []),
|
|
3555
|
+
}, [e]), Te = useCallback((e) => {
|
|
3556
|
+
let t = S.current.get(e);
|
|
3557
|
+
t && (t.destroy(), S.current.delete(e)), x((t) => t.filter((t) => t.entity.id !== e));
|
|
3558
|
+
}, []), Ee = useCallback(() => {
|
|
3559
|
+
S.current.forEach((e) => e.destroy()), S.current.clear(), x([]);
|
|
3560
|
+
}, []), De = useCallback((t) => {
|
|
3550
3561
|
if (!e) return;
|
|
3551
|
-
let n =
|
|
3562
|
+
let n = S.current.get(t);
|
|
3552
3563
|
if (!n) return;
|
|
3553
3564
|
let r = n.getBounds();
|
|
3554
3565
|
e.fitBounds(r, {
|
|
@@ -3556,23 +3567,21 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3556
3567
|
maxZoom: 18,
|
|
3557
3568
|
duration: 1e3
|
|
3558
3569
|
});
|
|
3559
|
-
}, [e]),
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3570
|
+
}, [e]), Oe = useCallback((e, t) => {
|
|
3571
|
+
let n = {
|
|
3572
|
+
...M.current,
|
|
3573
|
+
[e]: t
|
|
3574
|
+
};
|
|
3575
|
+
v ? i?.({ ...n }) : _(n), x((t) => t.map((t) => {
|
|
3576
|
+
let r = { ...t.entity };
|
|
3577
|
+
r[e] = void 0;
|
|
3578
|
+
let i = applyEntityConfig(r, n), a = S.current.get(t.entity.id);
|
|
3579
|
+
return a && a.update(i), {
|
|
3580
|
+
...t,
|
|
3581
|
+
entity: i
|
|
3564
3582
|
};
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
n[e] = void 0;
|
|
3568
|
-
let i = applyEntityConfig(n, r), a = y.current.get(t.entity.id);
|
|
3569
|
-
return a && a.update(i), {
|
|
3570
|
-
...t,
|
|
3571
|
-
entity: i
|
|
3572
|
-
};
|
|
3573
|
-
})), r;
|
|
3574
|
-
});
|
|
3575
|
-
}, []), Oe = useCallback((t, n) => {
|
|
3583
|
+
}));
|
|
3584
|
+
}, [v, i]), ke = useCallback((t, n) => {
|
|
3576
3585
|
if (!e) return;
|
|
3577
3586
|
let [r, i] = t, [a, o] = n, s = [
|
|
3578
3587
|
[Math.min(r, a), Math.max(i, o)],
|
|
@@ -3591,7 +3600,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3591
3600
|
});
|
|
3592
3601
|
let l = e.getSource(`${PREVIEW_PREFIX}rect-preview-measure-source`);
|
|
3593
3602
|
if (l) {
|
|
3594
|
-
let e =
|
|
3603
|
+
let e = M.current, t = [], n = s[0], r = s[1], i = s[2];
|
|
3595
3604
|
if (e?.showArea) {
|
|
3596
3605
|
let e = distance(n, r), a = distance(r, i);
|
|
3597
3606
|
t.push({
|
|
@@ -3622,7 +3631,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3622
3631
|
features: t
|
|
3623
3632
|
});
|
|
3624
3633
|
}
|
|
3625
|
-
}, [e]),
|
|
3634
|
+
}, [e]), Ae = useCallback((t, n) => {
|
|
3626
3635
|
if (!e) return;
|
|
3627
3636
|
let r = calculateDistance(t, n), i = createCirclePolygon(t, r), a = e.getSource(`${PREVIEW_PREFIX}circle-preview-source`);
|
|
3628
3637
|
a && a.setData({
|
|
@@ -3633,7 +3642,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3633
3642
|
},
|
|
3634
3643
|
properties: {}
|
|
3635
3644
|
});
|
|
3636
|
-
let o =
|
|
3645
|
+
let o = M.current, s = [], c = [];
|
|
3637
3646
|
if (o?.showArea && s.push({
|
|
3638
3647
|
type: "Feature",
|
|
3639
3648
|
geometry: {
|
|
@@ -3669,7 +3678,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3669
3678
|
type: "FeatureCollection",
|
|
3670
3679
|
features: c
|
|
3671
3680
|
});
|
|
3672
|
-
}, [e]),
|
|
3681
|
+
}, [e]), je = useCallback((t, n) => {
|
|
3673
3682
|
if (!e) return;
|
|
3674
3683
|
let r = calculateDistance(t, n) * 2, i = createSquareCoords(t, r), a = e.getSource(`${PREVIEW_PREFIX}square-preview-source`);
|
|
3675
3684
|
a && a.setData({
|
|
@@ -3682,7 +3691,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3682
3691
|
});
|
|
3683
3692
|
let o = e.getSource(`${PREVIEW_PREFIX}square-preview-measure-source`);
|
|
3684
3693
|
if (o) {
|
|
3685
|
-
let e =
|
|
3694
|
+
let e = M.current, n = [];
|
|
3686
3695
|
if (e?.showArea && n.push({
|
|
3687
3696
|
type: "Feature",
|
|
3688
3697
|
geometry: {
|
|
@@ -3706,7 +3715,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3706
3715
|
features: n
|
|
3707
3716
|
});
|
|
3708
3717
|
}
|
|
3709
|
-
}, [e]),
|
|
3718
|
+
}, [e]), Me = useCallback((t, n) => {
|
|
3710
3719
|
if (!e) return;
|
|
3711
3720
|
let r = [...t, n], i = e.getSource(`${PREVIEW_PREFIX}polygon-preview-source`);
|
|
3712
3721
|
i && (r.length >= 3 ? i.setData({
|
|
@@ -3741,7 +3750,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3741
3750
|
});
|
|
3742
3751
|
let o = e.getSource(`${PREVIEW_PREFIX}polygon-preview-measure-source`);
|
|
3743
3752
|
if (o) {
|
|
3744
|
-
let e =
|
|
3753
|
+
let e = M.current, t = [];
|
|
3745
3754
|
if (e?.showArea && r.length >= 3) {
|
|
3746
3755
|
let e = polygonArea([...r, r[0]]), n = 0, i = 0;
|
|
3747
3756
|
for (let e of r) n += e[0], i += e[1];
|
|
@@ -3783,7 +3792,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3783
3792
|
features: t
|
|
3784
3793
|
});
|
|
3785
3794
|
}
|
|
3786
|
-
}, [e]),
|
|
3795
|
+
}, [e]), N = useCallback((t, n) => {
|
|
3787
3796
|
if (!e) return;
|
|
3788
3797
|
let r = [...t, n], i = e.getSource(`${PREVIEW_PREFIX}polyline-preview-source`);
|
|
3789
3798
|
i && (r.length >= 2 ? i.setData({
|
|
@@ -3811,7 +3820,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3811
3820
|
});
|
|
3812
3821
|
let o = e.getSource(`${PREVIEW_PREFIX}polyline-preview-measure-source`);
|
|
3813
3822
|
if (o) {
|
|
3814
|
-
let e =
|
|
3823
|
+
let e = M.current, t = [];
|
|
3815
3824
|
if (e?.showLength && r.length >= 2) for (let e = 0; e < r.length - 1; e++) {
|
|
3816
3825
|
let n = r[e], i = r[e + 1];
|
|
3817
3826
|
t.push({
|
|
@@ -3830,118 +3839,118 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3830
3839
|
}
|
|
3831
3840
|
}, [e]);
|
|
3832
3841
|
useEffect(() => {
|
|
3833
|
-
if (!e || !
|
|
3834
|
-
|
|
3842
|
+
if (!e || !d) return;
|
|
3843
|
+
Ce(), e.getCanvas().style.cursor = "crosshair";
|
|
3835
3844
|
let t = (t) => {
|
|
3836
|
-
let n = [t.lngLat.lng, t.lngLat.lat], r =
|
|
3845
|
+
let n = [t.lngLat.lng, t.lngLat.lat], r = be.current;
|
|
3837
3846
|
if (r === "rectangle") {
|
|
3838
|
-
let t =
|
|
3839
|
-
if (!t)
|
|
3847
|
+
let t = D.current;
|
|
3848
|
+
if (!t) D.current = n;
|
|
3840
3849
|
else {
|
|
3841
3850
|
let r = {
|
|
3842
|
-
id:
|
|
3851
|
+
id: xe(),
|
|
3843
3852
|
type: "rectangle",
|
|
3844
3853
|
bounds: [t, n]
|
|
3845
3854
|
};
|
|
3846
|
-
|
|
3855
|
+
we(r), D.current = null, clearAllPreviewSources(e), f(null);
|
|
3847
3856
|
}
|
|
3848
3857
|
} else if (r === "circle") {
|
|
3849
|
-
let t =
|
|
3850
|
-
if (!t)
|
|
3858
|
+
let t = O.current;
|
|
3859
|
+
if (!t) O.current = { center: n };
|
|
3851
3860
|
else {
|
|
3852
3861
|
let r = calculateDistance(t.center, n), i = {
|
|
3853
|
-
id:
|
|
3862
|
+
id: xe(),
|
|
3854
3863
|
type: "circle",
|
|
3855
3864
|
center: t.center,
|
|
3856
3865
|
radius: r
|
|
3857
3866
|
};
|
|
3858
|
-
|
|
3867
|
+
we(i), O.current = null, clearAllPreviewSources(e), f(null);
|
|
3859
3868
|
}
|
|
3860
3869
|
} else if (r === "square") {
|
|
3861
|
-
let t =
|
|
3862
|
-
if (!t)
|
|
3870
|
+
let t = k.current;
|
|
3871
|
+
if (!t) k.current = { center: n };
|
|
3863
3872
|
else {
|
|
3864
3873
|
let r = calculateDistance(t.center, n) * 2, i = {
|
|
3865
|
-
id:
|
|
3874
|
+
id: xe(),
|
|
3866
3875
|
type: "square",
|
|
3867
3876
|
center: t.center,
|
|
3868
3877
|
length: r
|
|
3869
3878
|
};
|
|
3870
|
-
|
|
3879
|
+
we(i), k.current = null, clearAllPreviewSources(e), f(null);
|
|
3871
3880
|
}
|
|
3872
3881
|
} else if (r === "polygon") {
|
|
3873
|
-
let t =
|
|
3882
|
+
let t = A.current;
|
|
3874
3883
|
if (t.length >= 3 && calculateDistance(t[0], n) < 20) {
|
|
3875
3884
|
let n = {
|
|
3876
|
-
id:
|
|
3885
|
+
id: xe(),
|
|
3877
3886
|
type: "polygon",
|
|
3878
3887
|
coordinates: [...t]
|
|
3879
3888
|
};
|
|
3880
|
-
|
|
3889
|
+
we(n), A.current = [], clearAllPreviewSources(e), f(null);
|
|
3881
3890
|
return;
|
|
3882
3891
|
}
|
|
3883
|
-
|
|
3884
|
-
} else r === "polyline" && (
|
|
3892
|
+
A.current = [...t, n];
|
|
3893
|
+
} else r === "polyline" && (j.current = [...j.current, n]);
|
|
3885
3894
|
}, n = (e) => {
|
|
3886
|
-
let t = [e.lngLat.lng, e.lngLat.lat], n =
|
|
3887
|
-
if (n === "rectangle" &&
|
|
3888
|
-
else if (n === "circle" &&
|
|
3889
|
-
else if (n === "square" &&
|
|
3895
|
+
let t = [e.lngLat.lng, e.lngLat.lat], n = be.current;
|
|
3896
|
+
if (n === "rectangle" && D.current) ke(D.current, t);
|
|
3897
|
+
else if (n === "circle" && O.current) Ae(O.current.center, t);
|
|
3898
|
+
else if (n === "square" && k.current) je(k.current.center, t);
|
|
3890
3899
|
else if (n === "polygon") {
|
|
3891
|
-
let e =
|
|
3892
|
-
e.length > 0 && je(e, t);
|
|
3893
|
-
} else if (n === "polyline") {
|
|
3894
|
-
let e = O.current;
|
|
3900
|
+
let e = A.current;
|
|
3895
3901
|
e.length > 0 && Me(e, t);
|
|
3902
|
+
} else if (n === "polyline") {
|
|
3903
|
+
let e = j.current;
|
|
3904
|
+
e.length > 0 && N(e, t);
|
|
3896
3905
|
}
|
|
3897
3906
|
}, r = (t) => {
|
|
3898
3907
|
t.preventDefault();
|
|
3899
|
-
let n =
|
|
3908
|
+
let n = be.current;
|
|
3900
3909
|
if (n === "polygon") {
|
|
3901
|
-
let t =
|
|
3910
|
+
let t = A.current;
|
|
3902
3911
|
if (t.length >= 3) {
|
|
3903
3912
|
let n = {
|
|
3904
|
-
id:
|
|
3913
|
+
id: xe(),
|
|
3905
3914
|
type: "polygon",
|
|
3906
3915
|
coordinates: [...t]
|
|
3907
3916
|
};
|
|
3908
|
-
|
|
3909
|
-
} else
|
|
3917
|
+
we(n), A.current = [], clearAllPreviewSources(e), f(null);
|
|
3918
|
+
} else A.current = [], clearAllPreviewSources(e);
|
|
3910
3919
|
} else if (n === "polyline") {
|
|
3911
|
-
let t =
|
|
3920
|
+
let t = j.current;
|
|
3912
3921
|
if (t.length >= 2) {
|
|
3913
3922
|
let n = {
|
|
3914
|
-
id:
|
|
3923
|
+
id: xe(),
|
|
3915
3924
|
type: "polyline",
|
|
3916
3925
|
coordinates: [...t]
|
|
3917
3926
|
};
|
|
3918
|
-
|
|
3919
|
-
} else
|
|
3927
|
+
we(n), j.current = [], clearAllPreviewSources(e), f(null);
|
|
3928
|
+
} else j.current = [], clearAllPreviewSources(e);
|
|
3920
3929
|
}
|
|
3921
3930
|
}, i = (t) => {
|
|
3922
|
-
t.key === "Escape" && (
|
|
3931
|
+
t.key === "Escape" && (D.current = null, O.current = null, k.current = null, A.current = [], j.current = [], clearAllPreviewSources(e), f(null));
|
|
3923
3932
|
}, a = (t) => {
|
|
3924
3933
|
t.preventDefault();
|
|
3925
|
-
let n =
|
|
3934
|
+
let n = be.current;
|
|
3926
3935
|
if (n === "polygon") {
|
|
3927
|
-
let t =
|
|
3936
|
+
let t = A.current;
|
|
3928
3937
|
if (t.length >= 3) {
|
|
3929
3938
|
let n = {
|
|
3930
|
-
id:
|
|
3939
|
+
id: xe(),
|
|
3931
3940
|
type: "polygon",
|
|
3932
3941
|
coordinates: [...t]
|
|
3933
3942
|
};
|
|
3934
|
-
|
|
3943
|
+
we(n), A.current = [], clearAllPreviewSources(e), f(null);
|
|
3935
3944
|
}
|
|
3936
3945
|
} else if (n === "polyline") {
|
|
3937
|
-
let t =
|
|
3946
|
+
let t = j.current;
|
|
3938
3947
|
if (t.length >= 2) {
|
|
3939
3948
|
let n = {
|
|
3940
|
-
id:
|
|
3949
|
+
id: xe(),
|
|
3941
3950
|
type: "polyline",
|
|
3942
3951
|
coordinates: [...t]
|
|
3943
3952
|
};
|
|
3944
|
-
|
|
3953
|
+
we(n), j.current = [], clearAllPreviewSources(e), f(null);
|
|
3945
3954
|
}
|
|
3946
3955
|
}
|
|
3947
3956
|
};
|
|
@@ -3950,28 +3959,28 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3950
3959
|
};
|
|
3951
3960
|
}, [
|
|
3952
3961
|
e,
|
|
3953
|
-
|
|
3954
|
-
|
|
3962
|
+
d,
|
|
3963
|
+
xe,
|
|
3964
|
+
we,
|
|
3955
3965
|
Ce,
|
|
3956
|
-
Se,
|
|
3957
|
-
Oe,
|
|
3958
3966
|
ke,
|
|
3959
3967
|
Ae,
|
|
3960
3968
|
je,
|
|
3961
|
-
Me
|
|
3969
|
+
Me,
|
|
3970
|
+
N
|
|
3962
3971
|
]), useEffect(() => () => {
|
|
3963
|
-
|
|
3972
|
+
S.current.forEach((e) => e.destroy()), S.current.clear();
|
|
3964
3973
|
}, []);
|
|
3965
3974
|
let Ne = useCallback((t) => {
|
|
3966
|
-
|
|
3975
|
+
f((e) => e === t ? null : t), D.current = null, O.current = null, k.current = null, A.current = [], j.current = [], e && clearAllPreviewSources(e);
|
|
3967
3976
|
}, [e]);
|
|
3968
3977
|
return e ? /* @__PURE__ */ jsxs("div", {
|
|
3969
|
-
className: `mapbox-measure-control ${
|
|
3970
|
-
style:
|
|
3978
|
+
className: `mapbox-measure-control ${s}`,
|
|
3979
|
+
style: c,
|
|
3971
3980
|
children: [/* @__PURE__ */ jsxs("button", {
|
|
3972
|
-
ref:
|
|
3973
|
-
className: `mapbox-control-btn mapbox-measure-control__btn ${
|
|
3974
|
-
onClick: () =>
|
|
3981
|
+
ref: E,
|
|
3982
|
+
className: `mapbox-control-btn mapbox-measure-control__btn ${l ? "mapbox-measure-control__btn--active" : ""}`,
|
|
3983
|
+
onClick: () => u(!l),
|
|
3975
3984
|
title: "测量",
|
|
3976
3985
|
children: [
|
|
3977
3986
|
/* @__PURE__ */ jsx("img", {
|
|
@@ -3980,14 +3989,14 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3980
3989
|
className: "mapbox-measure-control__btn-icon"
|
|
3981
3990
|
}),
|
|
3982
3991
|
/* @__PURE__ */ jsx("span", { children: "测量" }),
|
|
3983
|
-
|
|
3992
|
+
b.length > 0 && /* @__PURE__ */ jsxs("span", { children: [
|
|
3984
3993
|
"(",
|
|
3985
|
-
|
|
3994
|
+
b.length,
|
|
3986
3995
|
")"
|
|
3987
3996
|
] })
|
|
3988
3997
|
]
|
|
3989
|
-
}),
|
|
3990
|
-
ref:
|
|
3998
|
+
}), l && /* @__PURE__ */ jsxs("div", {
|
|
3999
|
+
ref: T,
|
|
3991
4000
|
className: "mapbox-measure-control__panel",
|
|
3992
4001
|
children: [
|
|
3993
4002
|
/* @__PURE__ */ jsx("div", {
|
|
@@ -3998,18 +4007,18 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
3998
4007
|
className: "mapbox-measure-control__settings",
|
|
3999
4008
|
children: [
|
|
4000
4009
|
/* @__PURE__ */ jsx(Checkbox, {
|
|
4001
|
-
checked:
|
|
4002
|
-
onChange: (e) =>
|
|
4010
|
+
checked: y.showArea,
|
|
4011
|
+
onChange: (e) => Oe("showArea", e),
|
|
4003
4012
|
children: "面积"
|
|
4004
4013
|
}),
|
|
4005
4014
|
/* @__PURE__ */ jsx(Checkbox, {
|
|
4006
|
-
checked:
|
|
4007
|
-
onChange: (e) =>
|
|
4015
|
+
checked: y.showLength,
|
|
4016
|
+
onChange: (e) => Oe("showLength", e),
|
|
4008
4017
|
children: "长度"
|
|
4009
4018
|
}),
|
|
4010
4019
|
/* @__PURE__ */ jsx(Checkbox, {
|
|
4011
|
-
checked:
|
|
4012
|
-
onChange: (e) =>
|
|
4020
|
+
checked: y.showRadius,
|
|
4021
|
+
onChange: (e) => Oe("showRadius", e),
|
|
4013
4022
|
children: "半径"
|
|
4014
4023
|
})
|
|
4015
4024
|
]
|
|
@@ -4021,16 +4030,16 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
4021
4030
|
/* @__PURE__ */ jsxs("div", {
|
|
4022
4031
|
className: "mapbox-measure-control__tools",
|
|
4023
4032
|
children: [DRAW_TOOLS.map((e) => /* @__PURE__ */ jsx("button", {
|
|
4024
|
-
className: `mapbox-measure-control__tool-btn ${
|
|
4033
|
+
className: `mapbox-measure-control__tool-btn ${d === e.mode ? "mapbox-measure-control__tool-btn--active" : ""}`,
|
|
4025
4034
|
onClick: () => Ne(e.mode),
|
|
4026
4035
|
title: e.label,
|
|
4027
4036
|
children: /* @__PURE__ */ jsx("img", {
|
|
4028
4037
|
src: e.icon,
|
|
4029
4038
|
alt: e.label
|
|
4030
4039
|
})
|
|
4031
|
-
}, e.mode)),
|
|
4040
|
+
}, e.mode)), b.length > 0 && /* @__PURE__ */ jsx("button", {
|
|
4032
4041
|
className: "mapbox-measure-control__tool-btn mapbox-measure-control__tool-btn--danger",
|
|
4033
|
-
onClick:
|
|
4042
|
+
onClick: Ee,
|
|
4034
4043
|
title: "清除全部",
|
|
4035
4044
|
children: /* @__PURE__ */ jsx("img", {
|
|
4036
4045
|
src: "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e",
|
|
@@ -4038,7 +4047,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
4038
4047
|
})
|
|
4039
4048
|
})]
|
|
4040
4049
|
}),
|
|
4041
|
-
|
|
4050
|
+
b.length > 0 ? /* @__PURE__ */ jsx("div", {
|
|
4042
4051
|
className: "mapbox-measure-control__list",
|
|
4043
4052
|
children: /* @__PURE__ */ jsxs("table", {
|
|
4044
4053
|
className: "mapbox-measure-control__table",
|
|
@@ -4048,9 +4057,9 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
4048
4057
|
/* @__PURE__ */ jsx("th", { children: "面积" }),
|
|
4049
4058
|
/* @__PURE__ */ jsx("th", { children: "长度/半径" }),
|
|
4050
4059
|
/* @__PURE__ */ jsx("th", {})
|
|
4051
|
-
] }) }), /* @__PURE__ */ jsx("tbody", { children:
|
|
4060
|
+
] }) }), /* @__PURE__ */ jsx("tbody", { children: b.map((e) => /* @__PURE__ */ jsxs("tr", {
|
|
4052
4061
|
className: "mapbox-measure-control__table-row",
|
|
4053
|
-
onClick: () =>
|
|
4062
|
+
onClick: () => De(e.entity.id),
|
|
4054
4063
|
children: [
|
|
4055
4064
|
/* @__PURE__ */ jsx("td", { children: e.shapeLabel }),
|
|
4056
4065
|
/* @__PURE__ */ jsx("td", { children: String(e.entity.id) }),
|
|
@@ -4059,7 +4068,7 @@ function MeasureControl({ map: e, defaultEntityConfig: r, className: i = "", sty
|
|
|
4059
4068
|
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("button", {
|
|
4060
4069
|
className: "mapbox-measure-control__delete-btn",
|
|
4061
4070
|
onClick: (t) => {
|
|
4062
|
-
t.stopPropagation(),
|
|
4071
|
+
t.stopPropagation(), Te(e.entity.id);
|
|
4063
4072
|
},
|
|
4064
4073
|
title: "删除",
|
|
4065
4074
|
children: /* @__PURE__ */ jsx("img", {
|
|
@@ -4199,7 +4208,8 @@ function RasterPaintControl({ map: e, value: r, onChange: s, rasterPaintLayerIds
|
|
|
4199
4208
|
max: r,
|
|
4200
4209
|
step: i,
|
|
4201
4210
|
value: x[e],
|
|
4202
|
-
onChange: (t) => w(e, t)
|
|
4211
|
+
onChange: (t) => w(e, t),
|
|
4212
|
+
tooltipVisible: !1
|
|
4203
4213
|
}),
|
|
4204
4214
|
/* @__PURE__ */ jsx("span", {
|
|
4205
4215
|
className: "mapbox-raster-paint-control__value",
|
|
@@ -4243,7 +4253,7 @@ const EditControl = ({ markerTemplates: e, selectedTemplate: t, onTemplateSelect
|
|
|
4243
4253
|
} : {
|
|
4244
4254
|
width: e.width || 32,
|
|
4245
4255
|
height: e.height || 32
|
|
4246
|
-
}, E = h || t, D = i === "rectangle", O = i === "circle",
|
|
4256
|
+
}, E = h || t, D = i === "rectangle", O = i === "circle", ve = i === "polygon", ye = i === "square", k = i === "polyline";
|
|
4247
4257
|
return /* @__PURE__ */ jsxs("div", {
|
|
4248
4258
|
ref: _,
|
|
4249
4259
|
className: "mapbox-edit-control",
|
|
@@ -4265,7 +4275,7 @@ const EditControl = ({ markerTemplates: e, selectedTemplate: t, onTemplateSelect
|
|
|
4265
4275
|
}), /* @__PURE__ */ jsx("span", { children: t ? t.name : "Marker" })]
|
|
4266
4276
|
}),
|
|
4267
4277
|
d && /* @__PURE__ */ jsxs("button", {
|
|
4268
|
-
className: `mapbox-control-btn ${
|
|
4278
|
+
className: `mapbox-control-btn ${ye ? "mapbox-control-btn--active" : ""}`,
|
|
4269
4279
|
onClick: S,
|
|
4270
4280
|
title: "绘制正方形",
|
|
4271
4281
|
children: [/* @__PURE__ */ jsx("img", {
|
|
@@ -4295,7 +4305,7 @@ const EditControl = ({ markerTemplates: e, selectedTemplate: t, onTemplateSelect
|
|
|
4295
4305
|
}), /* @__PURE__ */ jsx("span", { children: "圆形" })]
|
|
4296
4306
|
}),
|
|
4297
4307
|
u && /* @__PURE__ */ jsxs("button", {
|
|
4298
|
-
className: `mapbox-control-btn ${
|
|
4308
|
+
className: `mapbox-control-btn ${ve ? "mapbox-control-btn--active" : ""}`,
|
|
4299
4309
|
onClick: x,
|
|
4300
4310
|
title: "绘制多边形",
|
|
4301
4311
|
children: [/* @__PURE__ */ jsx("img", {
|
|
@@ -4540,11 +4550,11 @@ function adjustPopupForBounds(e, t) {
|
|
|
4540
4550
|
return r.x + t.width + 10 > n.width && (r.x = n.width - t.width - 10), r.x < 10 && (r.x = 10), r.y + t.height + 10 > n.height && (r.y = n.height - t.height - 10), r.y < 10 && (r.y = 10), r;
|
|
4541
4551
|
}
|
|
4542
4552
|
const Mapbox = forwardRef((e, c) => {
|
|
4543
|
-
let { center: l = [116.4074, 39.9042], zoom: u = 12, pitch: d = 0, bearing: f = 0, style: h = "mapbox://styles/mapbox/dark-v11", maxBounds: g, mode: _ = "display", editConfig: v = {}, pickerConfig: y = {}, onPick: b, interactive: x = {}, layers: S = [], rasterPaint: C, entities: T = [], selectedIds: E = [], entityConfig: D, nameConfig: O, selectNameConfig: k, areaConfig: A, circleConfig: j, lengthConfig: M, showCoordinates:
|
|
4553
|
+
let { center: l = [116.4074, 39.9042], zoom: u = 12, pitch: d = 0, bearing: f = 0, style: h = "mapbox://styles/mapbox/dark-v11", maxBounds: g, mode: _ = "display", editConfig: v = {}, pickerConfig: y = {}, onPick: b, interactive: x = {}, layers: S = [], rasterPaint: C, entities: T = [], selectedIds: E = [], entityConfig: D, nameConfig: O, selectNameConfig: k, areaConfig: A, circleConfig: j, lengthConfig: M, showCoordinates: be = !0, showScale: Se = !0, showResetView: Ee = !0, showRoadHighlight: De = !1, showMeasure: Oe = !1, showRasterPaint: Ae = !1, onRasterPaintChange: je, popupDefaults: N, renderPopup: Pe, onMapLoad: Fe, onEntityClick: Ie, onPopupOpen: Le, onPopupClose: Re, className: ze = "", containerStyle: Be } = e, Ve = useRef(null), P = useRef(null), F = useRef(/* @__PURE__ */ new Map()), I = useRef(/* @__PURE__ */ new Map()), He = useRef(/* @__PURE__ */ new Set()), [L, Ue] = useState(null), We = useRef(null), Ge = useRef(null), Ke = useRef(null), [qe, Je] = useState(null), Ye = useRef(null), Xe = useRef(null), [Ze, Qe] = useState(null), [R, $e] = useState(_), [et, tt] = useState(null), nt = useRef(null), [rt, z] = useState(null), [it, B] = useState(null), [at, ot] = useState(null), V = useRef(!1), H = useRef(null), U = useRef(null), W = useRef(null), st = useRef(null), G = useRef(null), ct = useRef([]), K = useRef(null), lt = useRef(null), q = useRef(null), ut = useRef([]), J = useRef(null);
|
|
4544
4554
|
useEffect(() => {
|
|
4545
4555
|
$e(_);
|
|
4546
4556
|
}, [_]);
|
|
4547
|
-
let
|
|
4557
|
+
let dt = useCallback((e) => {
|
|
4548
4558
|
let t = F.current.get(e), n = I.current.get(e);
|
|
4549
4559
|
if (t && n) {
|
|
4550
4560
|
if (n.type === "radar" && t instanceof CanvasRadarRenderer) {
|
|
@@ -4561,7 +4571,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4561
4571
|
I.current.set(e, r), t.startAnimation();
|
|
4562
4572
|
}
|
|
4563
4573
|
}
|
|
4564
|
-
}, []),
|
|
4574
|
+
}, []), ft = useCallback((e) => {
|
|
4565
4575
|
let t = F.current.get(e), n = I.current.get(e);
|
|
4566
4576
|
if (t && n) {
|
|
4567
4577
|
if (n.type === "radar" && t instanceof CanvasRadarRenderer) {
|
|
@@ -4578,10 +4588,10 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4578
4588
|
I.current.set(e, r), t.stopAnimation();
|
|
4579
4589
|
}
|
|
4580
4590
|
}
|
|
4581
|
-
}, []),
|
|
4591
|
+
}, []), pt = useCallback((e) => {
|
|
4582
4592
|
let t = I.current.get(e);
|
|
4583
|
-
t && (t.type === "radar" || t.type === "circle") && (t.type, t.isAnimating ?
|
|
4584
|
-
}, [
|
|
4593
|
+
t && (t.type === "radar" || t.type === "circle") && (t.type, t.isAnimating ? ft(e) : dt(e));
|
|
4594
|
+
}, [dt, ft]), mt = useCallback((e) => {
|
|
4585
4595
|
if (e === void 0) {
|
|
4586
4596
|
let e = !1;
|
|
4587
4597
|
for (let [, t] of F.current) if (t instanceof UnitRenderer) {
|
|
@@ -4597,7 +4607,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4597
4607
|
let t = new Set(e.map(String));
|
|
4598
4608
|
for (let [e, n] of F.current) n instanceof UnitRenderer && n.setShowTrajectory(t.has(String(e)) ? "all" : 0);
|
|
4599
4609
|
}
|
|
4600
|
-
}, []),
|
|
4610
|
+
}, []), ht = useCallback((e, t, n) => {
|
|
4601
4611
|
let r = T.find((t) => String(t.id) === String(e));
|
|
4602
4612
|
if (!r?.popup || !P.current) return;
|
|
4603
4613
|
let i = r.popup.content ?? Pe?.(r);
|
|
@@ -4615,18 +4625,18 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4615
4625
|
N,
|
|
4616
4626
|
Pe,
|
|
4617
4627
|
Le
|
|
4618
|
-
]),
|
|
4628
|
+
]), gt = useCallback((e) => {
|
|
4619
4629
|
L?.entityId === e && (Ue(null), Re?.(e));
|
|
4620
|
-
}, [L, Re]),
|
|
4630
|
+
}, [L, Re]), _t = useCallback(() => {
|
|
4621
4631
|
Ue((e) => (e && Re?.(e.entityId), null));
|
|
4622
|
-
}, [Re]),
|
|
4632
|
+
}, [Re]), vt = useCallback((e) => L?.entityId === e, [L]), yt = useCallback((e, t, n) => {
|
|
4623
4633
|
let r = P.current;
|
|
4624
4634
|
r && r.flyTo({
|
|
4625
4635
|
center: e,
|
|
4626
4636
|
zoom: t ?? r.getZoom(),
|
|
4627
4637
|
...n
|
|
4628
4638
|
});
|
|
4629
|
-
}, []),
|
|
4639
|
+
}, []), bt = useCallback((e, t, n) => {
|
|
4630
4640
|
let r = P.current;
|
|
4631
4641
|
if (!r || e.length === 0) return;
|
|
4632
4642
|
let i = [];
|
|
@@ -4653,7 +4663,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4653
4663
|
pitch: n?.pitch ?? r.getPitch()
|
|
4654
4664
|
};
|
|
4655
4665
|
t !== void 0 && (p.maxZoom = t), n?.essential !== void 0 && (p.essential = n.essential), r.fitBounds(f, p);
|
|
4656
|
-
}, []),
|
|
4666
|
+
}, []), xt = useCallback((e) => {
|
|
4657
4667
|
let t = P.current;
|
|
4658
4668
|
if (!t || !t.getContainer()) return;
|
|
4659
4669
|
let { showMarker: n = !0, markerColor: r = "#3388ff" } = y;
|
|
@@ -4671,62 +4681,68 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4671
4681
|
anchor: "bottom"
|
|
4672
4682
|
}).setLngLat(e).addTo(t);
|
|
4673
4683
|
}
|
|
4674
|
-
}, [y]),
|
|
4684
|
+
}, [y]), St = useCallback(() => {
|
|
4675
4685
|
nt.current &&= (nt.current.remove(), null);
|
|
4676
|
-
}, []),
|
|
4686
|
+
}, []), Ct = useCallback(() => `marker-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`, []), wt = useCallback((e) => {
|
|
4677
4687
|
let t = P.current;
|
|
4678
|
-
if (Ve.current) if (
|
|
4688
|
+
if (Ve.current) if (J.current &&= (J.current.remove(), null), e && t) {
|
|
4679
4689
|
t.getCanvas().style.cursor = "none";
|
|
4680
4690
|
let n = document.createElement("div");
|
|
4681
4691
|
n.className = "mapbox-custom-cursor";
|
|
4682
4692
|
let r = e.size || e.width || 32;
|
|
4683
4693
|
n.style.cssText = "\n position: fixed;\n pointer-events: none;\n z-index: 9999;\n transform: translate(-50%, -50%);\n opacity: 0.8;\n ";
|
|
4684
4694
|
let i = document.createElement("img");
|
|
4685
|
-
i.src = e.icon, i.style.width = `${r}px`, i.style.height = `${e.size || e.height || r}px`, i.style.objectFit = "contain", n.appendChild(i), document.body.appendChild(n),
|
|
4695
|
+
i.src = e.icon, i.style.width = `${r}px`, i.style.height = `${e.size || e.height || r}px`, i.style.objectFit = "contain", n.appendChild(i), document.body.appendChild(n), J.current = n;
|
|
4686
4696
|
let a = (e) => {
|
|
4687
|
-
|
|
4697
|
+
J.current && (J.current.style.left = `${e.clientX}px`, J.current.style.top = `${e.clientY}px`);
|
|
4688
4698
|
};
|
|
4689
4699
|
document.addEventListener("mousemove", a), n.dataset.cleanup = "true", n._cleanup = () => {
|
|
4690
4700
|
document.removeEventListener("mousemove", a);
|
|
4691
4701
|
};
|
|
4692
4702
|
} else t && (t.getCanvas().style.cursor = "");
|
|
4693
|
-
}, []),
|
|
4694
|
-
if (
|
|
4695
|
-
let e =
|
|
4696
|
-
e && e(),
|
|
4703
|
+
}, []), Y = useCallback(() => {
|
|
4704
|
+
if (J.current) {
|
|
4705
|
+
let e = J.current._cleanup;
|
|
4706
|
+
e && e(), J.current.remove(), J.current = null;
|
|
4697
4707
|
}
|
|
4698
4708
|
let e = P.current;
|
|
4699
4709
|
e && (e.getCanvas().style.cursor = "");
|
|
4700
|
-
}, []),
|
|
4701
|
-
e.getSource(t)
|
|
4702
|
-
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
features: []
|
|
4706
|
-
}
|
|
4707
|
-
}), e.addLayer({
|
|
4708
|
-
id: n,
|
|
4709
|
-
type: "symbol",
|
|
4710
|
-
source: t,
|
|
4711
|
-
filter: [
|
|
4712
|
-
"==",
|
|
4713
|
-
"$type",
|
|
4714
|
-
"Point"
|
|
4715
|
-
],
|
|
4716
|
-
layout: {
|
|
4717
|
-
"text-field": ["get", "label"],
|
|
4718
|
-
"text-size": 12,
|
|
4719
|
-
"text-font": ["Open Sans Bold", "Arial Unicode MS Bold"],
|
|
4720
|
-
"text-allow-overlap": !0,
|
|
4721
|
-
"text-rotation-alignment": "map",
|
|
4722
|
-
"text-offset": [0, -.8]
|
|
4723
|
-
},
|
|
4724
|
-
paint: {
|
|
4725
|
-
"text-color": "#ffffff",
|
|
4726
|
-
"text-halo-color": "rgba(0, 0, 0, 0.8)",
|
|
4727
|
-
"text-halo-width": 1
|
|
4710
|
+
}, []), X = useCallback((e, t, n) => {
|
|
4711
|
+
if (!e.getSource(t)) {
|
|
4712
|
+
if (!e.getStyle().glyphs) {
|
|
4713
|
+
let t = e.style, n = "/gis-fonts/{fontstack}/{range}.pbf";
|
|
4714
|
+
t.glyphs = n, t.stylesheet && (t.stylesheet.glyphs = n);
|
|
4728
4715
|
}
|
|
4729
|
-
|
|
4716
|
+
e.addSource(t, {
|
|
4717
|
+
type: "geojson",
|
|
4718
|
+
data: {
|
|
4719
|
+
type: "FeatureCollection",
|
|
4720
|
+
features: []
|
|
4721
|
+
}
|
|
4722
|
+
}), e.addLayer({
|
|
4723
|
+
id: n,
|
|
4724
|
+
type: "symbol",
|
|
4725
|
+
source: t,
|
|
4726
|
+
filter: [
|
|
4727
|
+
"==",
|
|
4728
|
+
"$type",
|
|
4729
|
+
"Point"
|
|
4730
|
+
],
|
|
4731
|
+
layout: {
|
|
4732
|
+
"text-field": ["get", "label"],
|
|
4733
|
+
"text-size": 12,
|
|
4734
|
+
"text-font": ["Open Sans Bold", "Arial Unicode MS Bold"],
|
|
4735
|
+
"text-allow-overlap": !0,
|
|
4736
|
+
"text-rotation-alignment": "map",
|
|
4737
|
+
"text-offset": [0, -.8]
|
|
4738
|
+
},
|
|
4739
|
+
paint: {
|
|
4740
|
+
"text-color": "#ffffff",
|
|
4741
|
+
"text-halo-color": "rgba(0, 0, 0, 0.8)",
|
|
4742
|
+
"text-halo-width": 1
|
|
4743
|
+
}
|
|
4744
|
+
});
|
|
4745
|
+
}
|
|
4730
4746
|
}, []), Tt = useCallback(() => {
|
|
4731
4747
|
let e = P.current;
|
|
4732
4748
|
e && (e.getSource("rect-preview-source") || (e.addSource("rect-preview-source", {
|
|
@@ -4752,8 +4768,8 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4752
4768
|
"line-width": 2,
|
|
4753
4769
|
"line-dasharray": [4, 4]
|
|
4754
4770
|
}
|
|
4755
|
-
}),
|
|
4756
|
-
}, [
|
|
4771
|
+
}), X(e, "rect-preview-measure-source", "rect-preview-measure-label")));
|
|
4772
|
+
}, [X]), Et = useCallback((e, t) => {
|
|
4757
4773
|
let n = P.current;
|
|
4758
4774
|
if (!n) return;
|
|
4759
4775
|
let r = n.getSource("rect-preview-source");
|
|
@@ -4854,7 +4870,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4854
4870
|
"line-width": 2,
|
|
4855
4871
|
"line-dasharray": [4, 4]
|
|
4856
4872
|
}
|
|
4857
|
-
}),
|
|
4873
|
+
}), X(e, "circle-preview-measure-source", "circle-preview-measure-label"), e.getSource("circle-preview-radius-source") || (e.addSource("circle-preview-radius-source", {
|
|
4858
4874
|
type: "geojson",
|
|
4859
4875
|
data: {
|
|
4860
4876
|
type: "FeatureCollection",
|
|
@@ -4871,7 +4887,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4871
4887
|
"line-dasharray": [4, 4]
|
|
4872
4888
|
}
|
|
4873
4889
|
}))));
|
|
4874
|
-
}, [
|
|
4890
|
+
}, [X]), kt = useCallback((e, t, n = 64) => {
|
|
4875
4891
|
let [r, i] = e, a = [], o = t / 6371e3, s = i * Math.PI / 180;
|
|
4876
4892
|
for (let e = 0; e <= n; e++) {
|
|
4877
4893
|
let t = e / n * 2 * Math.PI, c = o * Math.cos(t), l = o * Math.sin(t) / Math.cos(s), u = i + c * 180 / Math.PI, d = r + l * 180 / Math.PI;
|
|
@@ -4998,8 +5014,8 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
4998
5014
|
"circle-stroke-color": "#ffffff",
|
|
4999
5015
|
"circle-stroke-width": 2
|
|
5000
5016
|
}
|
|
5001
|
-
}),
|
|
5002
|
-
}, [
|
|
5017
|
+
}), X(e, "polygon-preview-measure-source", "polygon-preview-measure-label")));
|
|
5018
|
+
}, [X]), Ft = useCallback((e, t) => {
|
|
5003
5019
|
let n = P.current;
|
|
5004
5020
|
if (!n) return;
|
|
5005
5021
|
let r = n.getSource("polygon-preview-source"), i = n.getSource("polygon-vertices-source");
|
|
@@ -5102,7 +5118,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5102
5118
|
features: []
|
|
5103
5119
|
});
|
|
5104
5120
|
}, []), Lt = useCallback(() => {
|
|
5105
|
-
|
|
5121
|
+
ct.current = [], It();
|
|
5106
5122
|
}, [It]), Rt = useCallback(() => {
|
|
5107
5123
|
let e = P.current;
|
|
5108
5124
|
e && (e.getSource("square-preview-source") || (e.addSource("square-preview-source", {
|
|
@@ -5128,8 +5144,8 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5128
5144
|
"line-width": 2,
|
|
5129
5145
|
"line-dasharray": [4, 4]
|
|
5130
5146
|
}
|
|
5131
|
-
}),
|
|
5132
|
-
}, [
|
|
5147
|
+
}), X(e, "square-preview-measure-source", "square-preview-measure-label")));
|
|
5148
|
+
}, [X]), zt = useCallback((e, t) => {
|
|
5133
5149
|
let [n, r] = e, i = t / 2 / 6371e3, a = r * Math.PI / 180, o = i * 180 / Math.PI, s = i * 180 / Math.PI / Math.cos(a);
|
|
5134
5150
|
return [
|
|
5135
5151
|
[n - s, r + o],
|
|
@@ -5152,7 +5168,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5152
5168
|
},
|
|
5153
5169
|
properties: {}
|
|
5154
5170
|
});
|
|
5155
|
-
let o =
|
|
5171
|
+
let o = K.current, s = o?.strokeColor ?? "#3388ff", c = o?.strokeWidth ?? 2, l = o?.fillColor ?? "#3388ff", u = o?.fillOpacity ?? .1;
|
|
5156
5172
|
n.getLayer("square-preview-line") && (n.setPaintProperty("square-preview-line", "line-color", s), n.setPaintProperty("square-preview-line", "line-width", c)), n.getLayer("square-preview-fill") && (n.setPaintProperty("square-preview-fill", "fill-color", l), n.setPaintProperty("square-preview-fill", "fill-opacity", u));
|
|
5157
5173
|
let d = n.getSource("square-preview-measure-source");
|
|
5158
5174
|
if (d) {
|
|
@@ -5194,7 +5210,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5194
5210
|
features: []
|
|
5195
5211
|
});
|
|
5196
5212
|
}, []), Ht = useCallback(() => {
|
|
5197
|
-
|
|
5213
|
+
lt.current = null, Vt();
|
|
5198
5214
|
}, [Vt]), Ut = useCallback(() => {
|
|
5199
5215
|
let e = P.current;
|
|
5200
5216
|
e && (e.getSource("polyline-preview-source") || (e.addSource("polyline-preview-source", {
|
|
@@ -5228,8 +5244,8 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5228
5244
|
"circle-stroke-color": "#ffffff",
|
|
5229
5245
|
"circle-stroke-width": 2
|
|
5230
5246
|
}
|
|
5231
|
-
}),
|
|
5232
|
-
}, [
|
|
5247
|
+
}), X(e, "polyline-preview-measure-source", "polyline-preview-measure-label")));
|
|
5248
|
+
}, [X]), Wt = useCallback((e, t) => {
|
|
5233
5249
|
let n = P.current;
|
|
5234
5250
|
if (!n) return;
|
|
5235
5251
|
let r = n.getSource("polyline-preview-source"), i = n.getSource("polyline-vertices-source");
|
|
@@ -5256,7 +5272,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5256
5272
|
properties: {}
|
|
5257
5273
|
}))
|
|
5258
5274
|
});
|
|
5259
|
-
let o =
|
|
5275
|
+
let o = q.current, s = o?.strokeColor ?? "#3388ff", c = o?.strokeWidth ?? 2;
|
|
5260
5276
|
n.getLayer("polyline-preview-line") && (n.setPaintProperty("polyline-preview-line", "line-color", s), n.setPaintProperty("polyline-preview-line", "line-width", c)), n.getLayer("polyline-vertices") && n.setPaintProperty("polyline-vertices", "circle-color", s);
|
|
5261
5277
|
let l = n.getSource("polyline-preview-measure-source");
|
|
5262
5278
|
if (l) {
|
|
@@ -5296,11 +5312,11 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5296
5312
|
features: []
|
|
5297
5313
|
});
|
|
5298
5314
|
}, []), Q = useCallback(() => {
|
|
5299
|
-
|
|
5315
|
+
ut.current = [], Gt();
|
|
5300
5316
|
}, [Gt]), Kt = useCallback((e) => {
|
|
5301
|
-
z(e),
|
|
5317
|
+
z(e), wt(e), e ? (B("marker"), Z(), Nt(), Lt(), Ht(), Q()) : B(null);
|
|
5302
5318
|
}, [
|
|
5303
|
-
|
|
5319
|
+
wt,
|
|
5304
5320
|
Z,
|
|
5305
5321
|
Nt,
|
|
5306
5322
|
Lt,
|
|
@@ -5308,103 +5324,102 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5308
5324
|
Q
|
|
5309
5325
|
]), qt = useCallback((e) => {
|
|
5310
5326
|
if (B(e), e === "rectangle") {
|
|
5311
|
-
z(null),
|
|
5327
|
+
z(null), Y(), Nt(), Lt(), Ht(), Q();
|
|
5312
5328
|
let e = P.current;
|
|
5313
5329
|
e && (e.getCanvas().style.cursor = "crosshair");
|
|
5314
5330
|
} else if (e === "circle") {
|
|
5315
|
-
z(null),
|
|
5331
|
+
z(null), Y(), Z(), Lt(), Ht(), Q();
|
|
5316
5332
|
let e = P.current;
|
|
5317
5333
|
e && (e.getCanvas().style.cursor = "crosshair");
|
|
5318
5334
|
} else if (e === "polygon") {
|
|
5319
|
-
z(null),
|
|
5335
|
+
z(null), Y(), Z(), Nt(), Ht(), Q();
|
|
5320
5336
|
let e = P.current;
|
|
5321
5337
|
e && (e.getCanvas().style.cursor = "crosshair");
|
|
5322
5338
|
} else if (e === "square") {
|
|
5323
|
-
z(null),
|
|
5339
|
+
z(null), Y(), Z(), Nt(), Lt(), Q();
|
|
5324
5340
|
let e = P.current;
|
|
5325
5341
|
e && (e.getCanvas().style.cursor = "crosshair");
|
|
5326
5342
|
} else if (e === "polyline") {
|
|
5327
|
-
z(null),
|
|
5343
|
+
z(null), Y(), Z(), Nt(), Lt(), Ht();
|
|
5328
5344
|
let e = P.current;
|
|
5329
5345
|
e && (e.getCanvas().style.cursor = "crosshair");
|
|
5330
|
-
} else e === "marker" ? (Z(), Nt(), Lt(), Ht(), Q()) : (z(null),
|
|
5346
|
+
} else e === "marker" ? (Z(), Nt(), Lt(), Ht(), Q()) : (z(null), Y(), Z(), Nt(), Lt(), Ht(), Q());
|
|
5331
5347
|
}, [
|
|
5332
|
-
|
|
5348
|
+
Y,
|
|
5333
5349
|
Z,
|
|
5334
5350
|
Nt,
|
|
5335
5351
|
Lt,
|
|
5336
5352
|
Ht,
|
|
5337
5353
|
Q
|
|
5338
5354
|
]), Jt = useCallback((e) => {
|
|
5339
|
-
e !== "picker" && (
|
|
5355
|
+
e !== "picker" && (St(), tt(null)), e !== "edit" && (z(null), B(null), Z(), Q(), Y()), $e(e);
|
|
5340
5356
|
}, [
|
|
5341
|
-
|
|
5342
|
-
|
|
5357
|
+
St,
|
|
5358
|
+
Y,
|
|
5343
5359
|
Z,
|
|
5344
5360
|
Q
|
|
5345
5361
|
]), Yt = useCallback(() => R, [R]), Xt = useCallback(() => et, [et]), Zt = useCallback(() => {
|
|
5346
|
-
|
|
5347
|
-
}, [
|
|
5362
|
+
St(), tt(null);
|
|
5363
|
+
}, [St]);
|
|
5348
5364
|
useEffect(() => {
|
|
5349
|
-
if (!Ze
|
|
5365
|
+
if (!Ze) return;
|
|
5350
5366
|
let e = y.value;
|
|
5351
|
-
if (e) {
|
|
5367
|
+
if (e && isFinite(e.lng) && isFinite(e.lat)) {
|
|
5352
5368
|
let t = [e.lng, e.lat];
|
|
5353
|
-
tt(e),
|
|
5369
|
+
tt(e), xt(t);
|
|
5354
5370
|
}
|
|
5355
5371
|
}, [
|
|
5356
5372
|
y.value,
|
|
5357
|
-
|
|
5358
|
-
bt,
|
|
5373
|
+
xt,
|
|
5359
5374
|
Ze
|
|
5360
5375
|
]);
|
|
5361
5376
|
let Qt = (e) => "mode" in e, $t = useCallback((e) => {
|
|
5362
|
-
if ($e("edit"),
|
|
5363
|
-
if (e.mode === "marker") e.markerStyle ? (U.current = e.markerStyle, H.current = null, W.current = null, G.current = null,
|
|
5377
|
+
if ($e("edit"), St(), tt(null), V.current = !0, Qt(e)) {
|
|
5378
|
+
if (e.mode === "marker") e.markerStyle ? (U.current = e.markerStyle, H.current = null, W.current = null, G.current = null, K.current = null, q.current = null, z(null), B("marker"), e.markerStyle.src && e.markerStyle.width ? wt({
|
|
5364
5379
|
id: "custom",
|
|
5365
5380
|
name: e.markerStyle.name || "Marker",
|
|
5366
5381
|
icon: e.markerStyle.src,
|
|
5367
5382
|
width: e.markerStyle.width
|
|
5368
|
-
}) :
|
|
5383
|
+
}) : Y()) : e.template && (U.current = null, H.current = null, W.current = null, G.current = null, K.current = null, q.current = null, z(e.template), B("marker"), wt(e.template));
|
|
5369
5384
|
else if (e.mode === "rectangle") {
|
|
5370
|
-
H.current = e.rectangleStyle || null, U.current = null, W.current = null, G.current = null,
|
|
5385
|
+
H.current = e.rectangleStyle || null, U.current = null, W.current = null, G.current = null, K.current = null, q.current = null, z(null), B("rectangle"), Y();
|
|
5371
5386
|
let t = P.current;
|
|
5372
5387
|
t && (t.getCanvas().style.cursor = "crosshair");
|
|
5373
5388
|
} else if (e.mode === "circle") {
|
|
5374
|
-
W.current = e.circleStyle || null, H.current = null, U.current = null, G.current = null,
|
|
5389
|
+
W.current = e.circleStyle || null, H.current = null, U.current = null, G.current = null, K.current = null, q.current = null, z(null), B("circle"), Y();
|
|
5375
5390
|
let t = P.current;
|
|
5376
5391
|
t && (t.getCanvas().style.cursor = "crosshair");
|
|
5377
5392
|
} else if (e.mode === "polygon") {
|
|
5378
|
-
G.current = e.polygonStyle || null, H.current = null, U.current = null, W.current = null,
|
|
5393
|
+
G.current = e.polygonStyle || null, H.current = null, U.current = null, W.current = null, K.current = null, q.current = null, z(null), B("polygon"), Y();
|
|
5379
5394
|
let t = P.current;
|
|
5380
5395
|
t && (t.getCanvas().style.cursor = "crosshair");
|
|
5381
5396
|
} else if (e.mode === "square") {
|
|
5382
|
-
|
|
5397
|
+
K.current = e.squareStyle || null, H.current = null, U.current = null, W.current = null, G.current = null, q.current = null, z(null), B("square"), Y();
|
|
5383
5398
|
let t = P.current;
|
|
5384
5399
|
t && (t.getCanvas().style.cursor = "crosshair");
|
|
5385
5400
|
} else if (e.mode === "polyline") {
|
|
5386
|
-
|
|
5401
|
+
q.current = e.polylineStyle || null, H.current = null, U.current = null, W.current = null, G.current = null, K.current = null, z(null), B("polyline"), Y();
|
|
5387
5402
|
let t = P.current;
|
|
5388
5403
|
t && (t.getCanvas().style.cursor = "crosshair");
|
|
5389
5404
|
}
|
|
5390
|
-
} else z(e), B("marker"),
|
|
5405
|
+
} else z(e), B("marker"), wt(e), H.current = null, U.current = null, W.current = null, G.current = null, K.current = null, q.current = null;
|
|
5391
5406
|
}, [
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5407
|
+
St,
|
|
5408
|
+
wt,
|
|
5409
|
+
Y
|
|
5395
5410
|
]);
|
|
5396
5411
|
useImperativeHandle(c, () => ({
|
|
5397
|
-
startAnimation:
|
|
5398
|
-
stopAnimation:
|
|
5399
|
-
toggleAnimation:
|
|
5412
|
+
startAnimation: dt,
|
|
5413
|
+
stopAnimation: ft,
|
|
5414
|
+
toggleAnimation: pt,
|
|
5400
5415
|
getMap: () => P.current,
|
|
5401
|
-
openPopup: (e) =>
|
|
5402
|
-
closePopup:
|
|
5403
|
-
closeAllPopups:
|
|
5404
|
-
isPopupOpen:
|
|
5405
|
-
toggleUnitTrajectory:
|
|
5406
|
-
flyTo:
|
|
5407
|
-
flyToEntities:
|
|
5416
|
+
openPopup: (e) => ht(e, "programmatic"),
|
|
5417
|
+
closePopup: gt,
|
|
5418
|
+
closeAllPopups: _t,
|
|
5419
|
+
isPopupOpen: vt,
|
|
5420
|
+
toggleUnitTrajectory: mt,
|
|
5421
|
+
flyTo: yt,
|
|
5422
|
+
flyToEntities: bt,
|
|
5408
5423
|
getMode: Yt,
|
|
5409
5424
|
setMode: Jt,
|
|
5410
5425
|
getPickedLocation: Xt,
|
|
@@ -5412,16 +5427,16 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5412
5427
|
startDrawing: $t,
|
|
5413
5428
|
getRenderer: (e) => F.current.get(e)
|
|
5414
5429
|
}), [
|
|
5415
|
-
ut,
|
|
5416
5430
|
dt,
|
|
5417
5431
|
ft,
|
|
5418
|
-
|
|
5432
|
+
pt,
|
|
5419
5433
|
ht,
|
|
5420
5434
|
gt,
|
|
5421
5435
|
_t,
|
|
5422
|
-
pt,
|
|
5423
5436
|
vt,
|
|
5437
|
+
mt,
|
|
5424
5438
|
yt,
|
|
5439
|
+
bt,
|
|
5425
5440
|
Yt,
|
|
5426
5441
|
Jt,
|
|
5427
5442
|
Xt,
|
|
@@ -5562,7 +5577,10 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5562
5577
|
visibility: "none"
|
|
5563
5578
|
}), e.addLayer(a, r);
|
|
5564
5579
|
}
|
|
5565
|
-
n.glyphs &&
|
|
5580
|
+
if (n.glyphs && !e.getStyle().glyphs) {
|
|
5581
|
+
let t = e.style;
|
|
5582
|
+
t.glyphs = n.glyphs, t.stylesheet && (t.stylesheet.glyphs = n.glyphs);
|
|
5583
|
+
}
|
|
5566
5584
|
} catch (e) {
|
|
5567
5585
|
console.error(`Failed to load Style JSON from ${t.url}:`, e);
|
|
5568
5586
|
}
|
|
@@ -5627,7 +5645,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5627
5645
|
lng: t[0],
|
|
5628
5646
|
lat: t[1]
|
|
5629
5647
|
};
|
|
5630
|
-
tt(e),
|
|
5648
|
+
tt(e), xt(t), bn.current?.(e);
|
|
5631
5649
|
return;
|
|
5632
5650
|
}
|
|
5633
5651
|
if (r === "edit") {
|
|
@@ -5638,7 +5656,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5638
5656
|
else {
|
|
5639
5657
|
let n = H.current, r = applyEntityConfig({
|
|
5640
5658
|
...n,
|
|
5641
|
-
id: n?.id ??
|
|
5659
|
+
id: n?.id ?? Ct(),
|
|
5642
5660
|
type: "rectangle",
|
|
5643
5661
|
bounds: [e, t]
|
|
5644
5662
|
}, D);
|
|
@@ -5658,7 +5676,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5658
5676
|
else {
|
|
5659
5677
|
let n = At(e.center, t), r = W.current, i = applyEntityConfig({
|
|
5660
5678
|
...r,
|
|
5661
|
-
id: r?.id ??
|
|
5679
|
+
id: r?.id ?? Ct(),
|
|
5662
5680
|
type: "circle",
|
|
5663
5681
|
center: e.center,
|
|
5664
5682
|
radius: n
|
|
@@ -5674,13 +5692,13 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5674
5692
|
return;
|
|
5675
5693
|
}
|
|
5676
5694
|
if (e === "polygon") {
|
|
5677
|
-
let e =
|
|
5695
|
+
let e = ct.current;
|
|
5678
5696
|
if (e.length >= 3) {
|
|
5679
5697
|
let n = e[0];
|
|
5680
5698
|
if (At(n, t) < 20) {
|
|
5681
5699
|
let t = G.current, n = applyEntityConfig({
|
|
5682
5700
|
...t,
|
|
5683
|
-
id: t?.id ??
|
|
5701
|
+
id: t?.id ?? Ct(),
|
|
5684
5702
|
type: "polygon",
|
|
5685
5703
|
coordinates: [...e]
|
|
5686
5704
|
}, D);
|
|
@@ -5690,20 +5708,20 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5690
5708
|
let e = new PolygonRenderer(r, n, O, k, A, M);
|
|
5691
5709
|
F.current.set(n.id, e);
|
|
5692
5710
|
}
|
|
5693
|
-
wn.current.onPolygonAdd?.(n),
|
|
5711
|
+
wn.current.onPolygonAdd?.(n), ct.current = [], G.current = null, V.current && (V.current = !1, B(null), r && (r.getCanvas().style.cursor = ""));
|
|
5694
5712
|
return;
|
|
5695
5713
|
}
|
|
5696
5714
|
}
|
|
5697
|
-
|
|
5715
|
+
ct.current = [...e, t];
|
|
5698
5716
|
return;
|
|
5699
5717
|
}
|
|
5700
5718
|
if (e === "square") {
|
|
5701
|
-
let e =
|
|
5702
|
-
if (!e)
|
|
5719
|
+
let e = lt.current;
|
|
5720
|
+
if (!e) lt.current = { center: t };
|
|
5703
5721
|
else {
|
|
5704
|
-
let n = At(e.center, t) * 2, r =
|
|
5722
|
+
let n = At(e.center, t) * 2, r = K.current, i = applyEntityConfig({
|
|
5705
5723
|
...r,
|
|
5706
|
-
id: r?.id ??
|
|
5724
|
+
id: r?.id ?? Ct(),
|
|
5707
5725
|
type: "square",
|
|
5708
5726
|
center: e.center,
|
|
5709
5727
|
length: n
|
|
@@ -5714,38 +5732,38 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5714
5732
|
let e = new SquareRenderer(a, i, O, k, A, M);
|
|
5715
5733
|
F.current.set(i.id, e);
|
|
5716
5734
|
}
|
|
5717
|
-
wn.current.onSquareAdd?.(i),
|
|
5735
|
+
wn.current.onSquareAdd?.(i), lt.current = null, K.current = null, V.current && (V.current = !1, B(null), a && (a.getCanvas().style.cursor = ""));
|
|
5718
5736
|
}
|
|
5719
5737
|
return;
|
|
5720
5738
|
}
|
|
5721
5739
|
if (e === "polyline") {
|
|
5722
|
-
|
|
5740
|
+
ut.current = [...ut.current, t];
|
|
5723
5741
|
return;
|
|
5724
5742
|
}
|
|
5725
5743
|
let n = U.current;
|
|
5726
5744
|
if (n && n.src && n.width) {
|
|
5727
5745
|
let e = {
|
|
5728
5746
|
...n,
|
|
5729
|
-
id: n.id ??
|
|
5747
|
+
id: n.id ?? Ct(),
|
|
5730
5748
|
type: "marker",
|
|
5731
5749
|
center: t,
|
|
5732
5750
|
src: n.src,
|
|
5733
5751
|
width: n.width
|
|
5734
5752
|
};
|
|
5735
|
-
wn.current.onMarkerAdd?.(e), z(null), B(null),
|
|
5753
|
+
wn.current.onMarkerAdd?.(e), z(null), B(null), Y(), U.current = null, V.current = !1;
|
|
5736
5754
|
return;
|
|
5737
5755
|
}
|
|
5738
5756
|
let r = xn.current;
|
|
5739
5757
|
if (r) {
|
|
5740
5758
|
let e = {
|
|
5741
|
-
id:
|
|
5759
|
+
id: Ct(),
|
|
5742
5760
|
type: "marker",
|
|
5743
5761
|
name: r.name,
|
|
5744
5762
|
center: t,
|
|
5745
5763
|
src: r.icon,
|
|
5746
5764
|
width: r.size || r.width || 32
|
|
5747
5765
|
};
|
|
5748
|
-
r.customData !== void 0 && (e.customData = r.customData), wn.current.onMarkerAdd?.(e), z(null), B(null),
|
|
5766
|
+
r.customData !== void 0 && (e.customData = r.customData), wn.current.onMarkerAdd?.(e), z(null), B(null), Y(), V.current = !1;
|
|
5749
5767
|
return;
|
|
5750
5768
|
}
|
|
5751
5769
|
}
|
|
@@ -5792,11 +5810,11 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5792
5810
|
n === "rectangle" && r && Et(r, t);
|
|
5793
5811
|
let i = st.current;
|
|
5794
5812
|
n === "circle" && i && jt(i.center, t);
|
|
5795
|
-
let a =
|
|
5813
|
+
let a = ct.current;
|
|
5796
5814
|
n === "polygon" && a.length > 0 && Ft(a, t);
|
|
5797
|
-
let o =
|
|
5815
|
+
let o = lt.current;
|
|
5798
5816
|
n === "square" && o && Bt(o.center, t);
|
|
5799
|
-
let s =
|
|
5817
|
+
let s = ut.current;
|
|
5800
5818
|
n === "polyline" && s.length > 0 && Wt(s, t);
|
|
5801
5819
|
let c = gn.current, l = vn.current;
|
|
5802
5820
|
for (let [e, n] of F.current) if (n.isPointInEntity(t)) {
|
|
@@ -5814,13 +5832,13 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5814
5832
|
}
|
|
5815
5833
|
if (Ke.current &&= (clearTimeout(Ke.current), null), L?.openedBy === "hover") {
|
|
5816
5834
|
let e = F.current.get(L.entityId);
|
|
5817
|
-
e && !e.isPointInEntity(t) &&
|
|
5835
|
+
e && !e.isPointInEntity(t) && gt(L.entityId);
|
|
5818
5836
|
}
|
|
5819
5837
|
}, [
|
|
5820
5838
|
N,
|
|
5821
5839
|
Pe,
|
|
5822
5840
|
L,
|
|
5823
|
-
|
|
5841
|
+
gt,
|
|
5824
5842
|
Et,
|
|
5825
5843
|
jt,
|
|
5826
5844
|
Ft,
|
|
@@ -5829,7 +5847,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5829
5847
|
]), pn = useCallback((e) => {
|
|
5830
5848
|
if (e.preventDefault(), yn.current !== "edit") return;
|
|
5831
5849
|
if (xn.current) {
|
|
5832
|
-
z(null), B(null),
|
|
5850
|
+
z(null), B(null), Y();
|
|
5833
5851
|
return;
|
|
5834
5852
|
}
|
|
5835
5853
|
let t = Sn.current;
|
|
@@ -5852,11 +5870,11 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5852
5870
|
return;
|
|
5853
5871
|
}
|
|
5854
5872
|
if (t === "polygon") {
|
|
5855
|
-
let e =
|
|
5873
|
+
let e = ct.current;
|
|
5856
5874
|
if (e.length >= 3) {
|
|
5857
5875
|
let t = G.current, n = applyEntityConfig({
|
|
5858
5876
|
...t,
|
|
5859
|
-
id: t?.id ??
|
|
5877
|
+
id: t?.id ?? Ct(),
|
|
5860
5878
|
type: "polygon",
|
|
5861
5879
|
coordinates: [...e]
|
|
5862
5880
|
}, D);
|
|
@@ -5866,8 +5884,8 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5866
5884
|
let e = new PolygonRenderer(r, n, O, k, A, M);
|
|
5867
5885
|
F.current.set(n.id, e);
|
|
5868
5886
|
}
|
|
5869
|
-
wn.current.onPolygonAdd?.(n),
|
|
5870
|
-
} else if (e.length > 0)
|
|
5887
|
+
wn.current.onPolygonAdd?.(n), ct.current = [], G.current = null, V.current && (V.current = !1, B(null), r && (r.getCanvas().style.cursor = ""));
|
|
5888
|
+
} else if (e.length > 0) ct.current = [], It();
|
|
5871
5889
|
else {
|
|
5872
5890
|
B(null);
|
|
5873
5891
|
let e = P.current;
|
|
@@ -5876,7 +5894,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5876
5894
|
return;
|
|
5877
5895
|
}
|
|
5878
5896
|
if (t === "square") {
|
|
5879
|
-
if (
|
|
5897
|
+
if (lt.current) lt.current = null, Vt();
|
|
5880
5898
|
else {
|
|
5881
5899
|
B(null);
|
|
5882
5900
|
let e = P.current;
|
|
@@ -5885,11 +5903,11 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5885
5903
|
return;
|
|
5886
5904
|
}
|
|
5887
5905
|
if (t === "polyline") {
|
|
5888
|
-
let e =
|
|
5906
|
+
let e = ut.current;
|
|
5889
5907
|
if (e.length >= 2) {
|
|
5890
|
-
let t =
|
|
5908
|
+
let t = q.current, n = applyEntityConfig({
|
|
5891
5909
|
...t,
|
|
5892
|
-
id: t?.id ??
|
|
5910
|
+
id: t?.id ?? Ct(),
|
|
5893
5911
|
type: "polyline",
|
|
5894
5912
|
coordinates: [...e]
|
|
5895
5913
|
}, D);
|
|
@@ -5899,8 +5917,8 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5899
5917
|
let e = new PolylineRenderer(r, n, O, k, M);
|
|
5900
5918
|
F.current.set(n.id, e);
|
|
5901
5919
|
}
|
|
5902
|
-
wn.current.onPolylineAdd?.(n),
|
|
5903
|
-
} else if (e.length > 0)
|
|
5920
|
+
wn.current.onPolylineAdd?.(n), ut.current = [], q.current = null, V.current && (V.current = !1, B(null), r && (r.getCanvas().style.cursor = ""));
|
|
5921
|
+
} else if (e.length > 0) ut.current = [], Gt();
|
|
5904
5922
|
else {
|
|
5905
5923
|
B(null);
|
|
5906
5924
|
let e = P.current;
|
|
@@ -5938,7 +5956,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
5938
5956
|
}
|
|
5939
5957
|
}, [
|
|
5940
5958
|
un,
|
|
5941
|
-
|
|
5959
|
+
Y,
|
|
5942
5960
|
Dt,
|
|
5943
5961
|
Mt,
|
|
5944
5962
|
It,
|
|
@@ -6003,8 +6021,8 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6003
6021
|
gn.current = T;
|
|
6004
6022
|
let _n = useRef(Ie);
|
|
6005
6023
|
_n.current = Ie;
|
|
6006
|
-
let vn = useRef(
|
|
6007
|
-
vn.current =
|
|
6024
|
+
let vn = useRef(ht);
|
|
6025
|
+
vn.current = ht;
|
|
6008
6026
|
let yn = useRef(R);
|
|
6009
6027
|
yn.current = R;
|
|
6010
6028
|
let bn = useRef(b);
|
|
@@ -6021,7 +6039,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6021
6039
|
Tn.current = D, useEffect(() => {
|
|
6022
6040
|
let e = (e) => {
|
|
6023
6041
|
if (e.key === "Escape" && R === "edit") {
|
|
6024
|
-
if (rt && (z(null), B(null),
|
|
6042
|
+
if (rt && (z(null), B(null), Y()), it === "rectangle") if (at) ot(null), Dt();
|
|
6025
6043
|
else {
|
|
6026
6044
|
B(null);
|
|
6027
6045
|
let e = P.current;
|
|
@@ -6033,19 +6051,19 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6033
6051
|
let e = P.current;
|
|
6034
6052
|
e && (e.getCanvas().style.cursor = "");
|
|
6035
6053
|
}
|
|
6036
|
-
if (it === "polygon") if (
|
|
6054
|
+
if (it === "polygon") if (ct.current.length > 0) ct.current = [], It();
|
|
6037
6055
|
else {
|
|
6038
6056
|
B(null);
|
|
6039
6057
|
let e = P.current;
|
|
6040
6058
|
e && (e.getCanvas().style.cursor = "");
|
|
6041
6059
|
}
|
|
6042
|
-
if (it === "square") if (
|
|
6060
|
+
if (it === "square") if (lt.current) lt.current = null, Vt();
|
|
6043
6061
|
else {
|
|
6044
6062
|
B(null);
|
|
6045
6063
|
let e = P.current;
|
|
6046
6064
|
e && (e.getCanvas().style.cursor = "");
|
|
6047
6065
|
}
|
|
6048
|
-
if (it === "polyline") if (
|
|
6066
|
+
if (it === "polyline") if (ut.current.length > 0) ut.current = [], Gt();
|
|
6049
6067
|
else {
|
|
6050
6068
|
B(null);
|
|
6051
6069
|
let e = P.current;
|
|
@@ -6061,7 +6079,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6061
6079
|
rt,
|
|
6062
6080
|
it,
|
|
6063
6081
|
at,
|
|
6064
|
-
|
|
6082
|
+
Y,
|
|
6065
6083
|
Dt,
|
|
6066
6084
|
Mt,
|
|
6067
6085
|
It,
|
|
@@ -6073,7 +6091,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6073
6091
|
let t = L.entityId, n = L.config, r = () => {
|
|
6074
6092
|
let r = gn.current.find((e) => e.id === t);
|
|
6075
6093
|
if (!r) {
|
|
6076
|
-
|
|
6094
|
+
_t();
|
|
6077
6095
|
return;
|
|
6078
6096
|
}
|
|
6079
6097
|
let { position: i } = calculatePopupPosition(r, n, e, void 0, Ge.current);
|
|
@@ -6084,7 +6102,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6084
6102
|
return e.on("move", r), e.on("zoom", r), e.on("rotate", r), e.on("pitch", r), () => {
|
|
6085
6103
|
clearTimeout(i), e.off("move", r), e.off("zoom", r), e.off("rotate", r), e.off("pitch", r);
|
|
6086
6104
|
};
|
|
6087
|
-
}, [L?.entityId,
|
|
6105
|
+
}, [L?.entityId, _t]), useEffect(() => {
|
|
6088
6106
|
let e = P.current, t = Ve.current;
|
|
6089
6107
|
if (!e || !qe || !t) return;
|
|
6090
6108
|
let n = qe.lngLat, r = () => {
|
|
@@ -6134,11 +6152,15 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6134
6152
|
}
|
|
6135
6153
|
});
|
|
6136
6154
|
return P.current = _, _.on("load", () => {
|
|
6155
|
+
if (!_.getStyle().glyphs) {
|
|
6156
|
+
let e = _.style, t = "/gis-fonts/{fontstack}/{range}.pbf";
|
|
6157
|
+
e.glyphs = t, e.stylesheet && (e.stylesheet.glyphs = t);
|
|
6158
|
+
}
|
|
6137
6159
|
I.current.clear(), T.forEach((e) => {
|
|
6138
6160
|
I.current.set(e.id, e);
|
|
6139
6161
|
}), ln(S), en(), Tt(), Ot(), Pt(), Rt(), Ut(), Qe(_), Fe?.(_);
|
|
6140
6162
|
}), _.on("click", dn), _.on("mousemove", fn), _.on("contextmenu", pn), () => {
|
|
6141
|
-
_.off("click", dn), _.off("mousemove", fn), _.off("contextmenu", pn), tn(),
|
|
6163
|
+
_.off("click", dn), _.off("mousemove", fn), _.off("contextmenu", pn), tn(), St(), Y(), Z(), Q(), _.remove(), P.current = null;
|
|
6142
6164
|
};
|
|
6143
6165
|
}, []), useEffect(() => {
|
|
6144
6166
|
if (P.current) {
|
|
@@ -6205,6 +6227,10 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6205
6227
|
return;
|
|
6206
6228
|
}
|
|
6207
6229
|
En.current !== h && (En.current = h, e.setStyle(t), e.once("style.load", () => {
|
|
6230
|
+
if (!e.getStyle().glyphs) {
|
|
6231
|
+
let t = e.style, n = "/gis-fonts/{fontstack}/{range}.pbf";
|
|
6232
|
+
t.glyphs = n, t.stylesheet && (t.stylesheet.glyphs = n);
|
|
6233
|
+
}
|
|
6208
6234
|
He.current.clear(), kn.current(On.current), An.current(), jn.current(), Mn.current(), Nn.current(), Pn.current(), Fn.current(), In.current();
|
|
6209
6235
|
}));
|
|
6210
6236
|
}, [h]), useEffect(() => {
|
|
@@ -6233,8 +6259,8 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6233
6259
|
d,
|
|
6234
6260
|
f
|
|
6235
6261
|
]);
|
|
6236
|
-
let Rn = (() =>
|
|
6237
|
-
if (
|
|
6262
|
+
let Rn = (() => be === !1 ? null : be === !0 ? { enabled: !0 } : be)(), zn = (() => Se === !1 ? null : Se === !0 ? { enabled: !0 } : Se)(), Bn = (() => Ee === !1 ? null : Ee === !0 ? { enabled: !0 } : Ee)(), $ = (() => {
|
|
6263
|
+
if (De === !1) return null;
|
|
6238
6264
|
let e, t;
|
|
6239
6265
|
if (S && S.length > 0) {
|
|
6240
6266
|
let n = S.find((e) => e.hasRoadNetwork === !0) || S[0];
|
|
@@ -6247,16 +6273,16 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6247
6273
|
} else e = `base-layer-source-${n.id}`;
|
|
6248
6274
|
t = n.roadNetworkSourceLayer || "road";
|
|
6249
6275
|
}
|
|
6250
|
-
return
|
|
6276
|
+
return De === !0 ? {
|
|
6251
6277
|
enabled: !0,
|
|
6252
6278
|
source: e,
|
|
6253
6279
|
sourceLayer: t
|
|
6254
6280
|
} : {
|
|
6255
|
-
...
|
|
6256
|
-
source:
|
|
6257
|
-
sourceLayer:
|
|
6281
|
+
...De,
|
|
6282
|
+
source: De.source || e,
|
|
6283
|
+
sourceLayer: De.sourceLayer || t
|
|
6258
6284
|
};
|
|
6259
|
-
})(), Vn = (() =>
|
|
6285
|
+
})(), Vn = (() => Oe ? Oe === !0 ? { enabled: !0 } : Oe : null)(), Hn = (() => Ae ? Ae === !0 ? { enabled: !0 } : Ae : null)(), Un = useMemo(() => {
|
|
6260
6286
|
let e = [];
|
|
6261
6287
|
for (let t of S) if (t.applyRasterPaint) if (t.type === "style") {
|
|
6262
6288
|
let n = P.current;
|
|
@@ -6327,14 +6353,14 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6327
6353
|
}),
|
|
6328
6354
|
Vn && Vn.enabled !== !1 && /* @__PURE__ */ jsx(MeasureControl, {
|
|
6329
6355
|
map: Ze,
|
|
6330
|
-
|
|
6356
|
+
entityConfig: D,
|
|
6331
6357
|
className: Vn.className,
|
|
6332
6358
|
style: Vn.style
|
|
6333
6359
|
}),
|
|
6334
6360
|
Hn && Hn.enabled !== !1 && /* @__PURE__ */ jsx(RasterPaintControl, {
|
|
6335
6361
|
map: Ze,
|
|
6336
6362
|
value: C,
|
|
6337
|
-
onChange:
|
|
6363
|
+
onChange: je,
|
|
6338
6364
|
rasterPaintLayerIds: Un,
|
|
6339
6365
|
className: Hn.className,
|
|
6340
6366
|
style: Hn.style
|
|
@@ -6353,7 +6379,7 @@ const Mapbox = forwardRef((e, c) => {
|
|
|
6353
6379
|
}),
|
|
6354
6380
|
L && We.current && /* @__PURE__ */ jsx(EntityPopup, {
|
|
6355
6381
|
popupState: L,
|
|
6356
|
-
onClose: () =>
|
|
6382
|
+
onClose: () => gt(L.entityId),
|
|
6357
6383
|
portalContainer: We.current,
|
|
6358
6384
|
popupRef: Ge
|
|
6359
6385
|
}),
|