@mapcomponents/react-maplibre 0.1.44 → 0.1.48
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/CHANGELOG.md +32 -2
- package/coverage/clover.xml +226 -145
- package/coverage/coverage-final.json +7 -5
- package/coverage/lcov-report/index.html +86 -71
- package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.tsx.html +40 -10
- package/coverage/lcov-report/src/components/MapLibreMap/index.html +17 -17
- package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +1 -1
- package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.tsx.html +4 -4
- package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +1 -1
- package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
- package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +1 -1
- package/coverage/lcov-report/src/components/MlGPXViewer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx.html +188 -53
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +21 -21
- package/coverage/lcov-report/src/components/MlLayer/MlLayer.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +2 -2
- package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +1 -1
- package/coverage/lcov-report/src/components/MlMarker/MlMarker.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlMarker/index.html +1 -1
- package/coverage/lcov-report/src/components/MlMeasureTool/MlMeasureTool.tsx.html +265 -0
- package/coverage/lcov-report/src/components/MlMeasureTool/index.html +116 -0
- package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +1 -1
- package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlNavigationTools/index.html +1 -1
- package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +1 -1
- package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.stories_.js.html +232 -0
- package/coverage/lcov-report/src/components/MlOsmLayer/index.html +25 -10
- package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +1 -1
- package/coverage/lcov-report/src/components/MlScaleReference/index.html +1 -1
- package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +1 -1
- package/coverage/lcov-report/src/components/MlShareMapState/index.html +1 -1
- package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +1 -1
- package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +1 -1
- package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +1 -1
- package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +1 -1
- package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
- package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx.html +74 -20
- package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +19 -19
- package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +1 -1
- package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +1 -1
- package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.tsx.html +80 -20
- package/coverage/lcov-report/src/components/MlWmsLayer/index.html +21 -21
- package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.tsx.html +2 -2
- package/coverage/lcov-report/src/components/MlWmsLoader/index.html +1 -1
- package/coverage/lcov-report/src/contexts/MapContext.tsx.html +1 -1
- package/coverage/lcov-report/src/contexts/SimpleDataContext.js.html +1 -1
- package/coverage/lcov-report/src/contexts/SimpleDataProvider.js.html +1 -1
- package/coverage/lcov-report/src/contexts/index.html +1 -1
- package/coverage/lcov-report/src/hooks/index.html +19 -19
- package/coverage/lcov-report/src/hooks/useLayer.ts.html +75 -27
- package/coverage/lcov-report/src/hooks/useMap.ts.html +1 -1
- package/coverage/lcov-report/src/hooks/useMapState.ts.html +1 -1
- package/coverage/lcov-report/src/hooks/useWms.js.html +2 -2
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.ts.html +12 -6
- package/coverage/lcov.info +466 -281
- package/dist/index.esm.js +173 -42
- package/dist/index.esm.js.map +1 -1
- package/docs-build/{0.b1b9b035.iframe.bundle.js → 0.968bdc5f.iframe.bundle.js} +2 -2
- package/docs-build/0.968bdc5f.iframe.bundle.js.map +1 -0
- package/docs-build/{1.c50fb367.iframe.bundle.js → 1.3530bc86.iframe.bundle.js} +3 -3
- package/docs-build/1.3530bc86.iframe.bundle.js.map +1 -0
- package/docs-build/{17.2e544968.iframe.bundle.js → 17.c96fb6bc.iframe.bundle.js} +2 -2
- package/docs-build/17.c96fb6bc.iframe.bundle.js.map +1 -0
- package/docs-build/{18.42087006.iframe.bundle.js → 18.0947f810.iframe.bundle.js} +3 -3
- package/docs-build/18.0947f810.iframe.bundle.js.map +1 -0
- package/docs-build/{19.7e782442.iframe.bundle.js → 19.44204e5a.iframe.bundle.js} +2 -2
- package/docs-build/19.44204e5a.iframe.bundle.js.map +1 -0
- package/docs-build/{2.e58dc625.iframe.bundle.js → 2.c62e9630.iframe.bundle.js} +2 -2
- package/docs-build/2.c62e9630.iframe.bundle.js.map +1 -0
- package/docs-build/{20.f009289a.iframe.bundle.js → 20.50a2ad76.iframe.bundle.js} +2 -2
- package/docs-build/20.50a2ad76.iframe.bundle.js.map +1 -0
- package/docs-build/{21.1cdc9040.iframe.bundle.js → 21.ce55b70e.iframe.bundle.js} +2 -2
- package/docs-build/21.ce55b70e.iframe.bundle.js.map +1 -0
- package/docs-build/{22.c9e6b2d7.iframe.bundle.js → 22.639c6bb4.iframe.bundle.js} +2 -2
- package/docs-build/22.639c6bb4.iframe.bundle.js.map +1 -0
- package/docs-build/{3.a8172b89.iframe.bundle.js → 3.afb0e0a5.iframe.bundle.js} +2 -2
- package/docs-build/3.afb0e0a5.iframe.bundle.js.map +1 -0
- package/docs-build/catalogue/mc_meta.json +1 -1
- package/docs-build/iframe.html +1 -1
- package/docs-build/main~24120820.e956ad2c.iframe.bundle.js +2 -0
- package/docs-build/main~24120820.e956ad2c.iframe.bundle.js.map +1 -0
- package/docs-build/thumbnails/MlMeasureTool.png +0 -0
- package/docs-build/{vendors~main~0ad7406a.2054ae7c.iframe.bundle.js → vendors~main~0ad7406a.834c9ace.iframe.bundle.js} +3 -3
- package/docs-build/vendors~main~0ad7406a.834c9ace.iframe.bundle.js.map +1 -0
- package/docs-build/vendors~main~0f485567.7297d057.iframe.bundle.js +2 -0
- package/docs-build/vendors~main~0f485567.7297d057.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~41a6ab2c.a947ed53.iframe.bundle.js → vendors~main~41a6ab2c.19d97527.iframe.bundle.js} +2 -2
- package/docs-build/vendors~main~41a6ab2c.19d97527.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~52589227.1d1558cd.iframe.bundle.js → vendors~main~52589227.cebbe724.iframe.bundle.js} +2 -2
- package/docs-build/vendors~main~52589227.cebbe724.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~57c1f6cb.6a433835.iframe.bundle.js → vendors~main~57c1f6cb.8a8dd47e.iframe.bundle.js} +2 -2
- package/docs-build/vendors~main~57c1f6cb.8a8dd47e.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~73914085.a8e03e3b.iframe.bundle.js → vendors~main~73914085.2e61c0dc.iframe.bundle.js} +13 -13
- package/docs-build/vendors~main~73914085.2e61c0dc.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~9c5b28f6.7b8beed1.iframe.bundle.js → vendors~main~9c5b28f6.32356887.iframe.bundle.js} +3 -3
- package/docs-build/vendors~main~9c5b28f6.32356887.iframe.bundle.js.map +1 -0
- package/docs-build/vendors~main~b5906859.94dc520a.iframe.bundle.js +21 -0
- package/docs-build/vendors~main~b5906859.94dc520a.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~b8f44717.7053e467.iframe.bundle.js → vendors~main~b8f44717.8669cfb8.iframe.bundle.js} +3 -3
- package/docs-build/vendors~main~b8f44717.8669cfb8.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~b9cf3951.a4fd68f5.iframe.bundle.js → vendors~main~b9cf3951.2a2025c3.iframe.bundle.js} +11 -11
- package/docs-build/vendors~main~b9cf3951.2a2025c3.iframe.bundle.js.map +1 -0
- package/docs-build/vendors~main~d939e436.bb2b0303.iframe.bundle.js +2 -0
- package/docs-build/vendors~main~d939e436.bb2b0303.iframe.bundle.js.map +1 -0
- package/docs-build/vendors~main~f420d588.3481b43e.iframe.bundle.js +107 -0
- package/docs-build/vendors~main~f420d588.3481b43e.iframe.bundle.js.map +1 -0
- package/package.json +1 -1
- package/public/catalogue/mc_meta.json +1 -0
- package/public/thumbnails/MlMeasureTool.png +0 -0
- package/src/components/MapLibreMap/MapLibreMap.stories.js +75 -20
- package/src/components/MapLibreMap/MapLibreMap.tsx +11 -1
- package/src/components/MapLibreMap/lib/MapLibreGlWrapper.ts +2 -2
- package/src/components/MlFeatureEditor/MlFeatureEditor.tsx +3 -3
- package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.test.js +1 -1
- package/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx +82 -37
- package/src/components/MlLayerSwitcher/MlLayerSwitcher.js +1 -1
- package/src/components/MlMeasureTool/MlMeasureTool.doc.de.md +3 -0
- package/src/components/MlMeasureTool/MlMeasureTool.meta.json +15 -0
- package/src/components/MlMeasureTool/MlMeasureTool.stories.js +96 -0
- package/src/components/MlMeasureTool/MlMeasureTool.tsx +60 -0
- package/src/components/MlOsmLayer/{MlOsmLayer.stories.js → MlOsmLayer.stories_.js} +0 -0
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx +26 -8
- package/src/components/MlWmsLayer/MlWmsLayer.stories.js +2 -3
- package/src/components/MlWmsLayer/MlWmsLayer.tsx +27 -7
- package/src/components/MlWmsLoader/MlWmsLoader.tsx +1 -1
- package/src/hooks/useLayer.ts +27 -11
- package/src/hooks/useWms.js +1 -1
- package/src/index.ts +5 -4
- package/src/util/layerRemovalTest.js +5 -0
- package/docs-build/0.b1b9b035.iframe.bundle.js.map +0 -1
- package/docs-build/1.c50fb367.iframe.bundle.js.map +0 -1
- package/docs-build/17.2e544968.iframe.bundle.js.map +0 -1
- package/docs-build/18.42087006.iframe.bundle.js.map +0 -1
- package/docs-build/19.7e782442.iframe.bundle.js.map +0 -1
- package/docs-build/2.e58dc625.iframe.bundle.js.map +0 -1
- package/docs-build/20.f009289a.iframe.bundle.js.map +0 -1
- package/docs-build/21.1cdc9040.iframe.bundle.js.map +0 -1
- package/docs-build/22.c9e6b2d7.iframe.bundle.js.map +0 -1
- package/docs-build/3.a8172b89.iframe.bundle.js.map +0 -1
- package/docs-build/main~24120820.edd86ba9.iframe.bundle.js +0 -2
- package/docs-build/main~24120820.edd86ba9.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~0ad7406a.2054ae7c.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~0f485567.de36692f.iframe.bundle.js +0 -2
- package/docs-build/vendors~main~0f485567.de36692f.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~41a6ab2c.a947ed53.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~52589227.1d1558cd.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~57c1f6cb.6a433835.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~73914085.a8e03e3b.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~9c5b28f6.7b8beed1.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~b5906859.7f66dcaf.iframe.bundle.js +0 -21
- package/docs-build/vendors~main~b5906859.7f66dcaf.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~b8f44717.7053e467.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~b9cf3951.a4fd68f5.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~d939e436.ba1cad1b.iframe.bundle.js +0 -2
- package/docs-build/vendors~main~d939e436.ba1cad1b.iframe.bundle.js.map +0 -1
- package/docs-build/vendors~main~f420d588.59c93444.iframe.bundle.js +0 -107
- package/docs-build/vendors~main~f420d588.59c93444.iframe.bundle.js.map +0 -1
package/dist/index.esm.js
CHANGED
|
@@ -331,7 +331,7 @@ var MapLibreGlWrapper = /** @class */ (function () {
|
|
|
331
331
|
*/
|
|
332
332
|
buildLayerObjects: function () {
|
|
333
333
|
// @ts-ignore
|
|
334
|
-
return self.style._order
|
|
334
|
+
return self.map.style._order
|
|
335
335
|
.map(function (layerId) {
|
|
336
336
|
return self.wrapper.buildLayerObject(self.map.style._layers[layerId]);
|
|
337
337
|
})
|
|
@@ -568,7 +568,7 @@ var MapLibreGlWrapper = /** @class */ (function () {
|
|
|
568
568
|
props[_i] = arguments[_i];
|
|
569
569
|
}
|
|
570
570
|
if (self.map &&
|
|
571
|
-
|
|
571
|
+
self.map.style &&
|
|
572
572
|
typeof self.map.style[item] === "function") {
|
|
573
573
|
(_a = self.map.style)[item].apply(_a, props);
|
|
574
574
|
}
|
|
@@ -744,7 +744,7 @@ var defaultProps$2 = {
|
|
|
744
744
|
id: "background",
|
|
745
745
|
type: "background",
|
|
746
746
|
paint: {
|
|
747
|
-
"background-color": "rgba(
|
|
747
|
+
"background-color": "rgba(0,0,0,0)",
|
|
748
748
|
},
|
|
749
749
|
},
|
|
750
750
|
],
|
|
@@ -762,11 +762,13 @@ var defaultProps$2 = {
|
|
|
762
762
|
* @category Map components
|
|
763
763
|
*/
|
|
764
764
|
var MapLibreMap = function (props) {
|
|
765
|
+
var _a;
|
|
765
766
|
var map = useRef(null);
|
|
766
767
|
var mapContainer = useRef();
|
|
767
768
|
var mapContext = useContext(MapContext);
|
|
768
769
|
var mapIdRef = useRef(props.mapId);
|
|
769
770
|
var initializedRef = useRef(false);
|
|
771
|
+
var currentStyle = useRef((_a = props.options) === null || _a === void 0 ? void 0 : _a.style);
|
|
770
772
|
useEffect(function () {
|
|
771
773
|
var mapId = mapIdRef.current;
|
|
772
774
|
return function () {
|
|
@@ -796,6 +798,15 @@ var MapLibreMap = function (props) {
|
|
|
796
798
|
});
|
|
797
799
|
}
|
|
798
800
|
}, [props.options, props.mapId]);
|
|
801
|
+
useEffect(function () {
|
|
802
|
+
var _a, _b;
|
|
803
|
+
if (((_a = map.current) === null || _a === void 0 ? void 0 : _a.map) && ((_b = props === null || props === void 0 ? void 0 : props.options) === null || _b === void 0 ? void 0 : _b.style) && currentStyle.current !== props.options.style) {
|
|
804
|
+
console.log("set style");
|
|
805
|
+
currentStyle.current = props.options.style;
|
|
806
|
+
map.current.map.setStyle(props.options.style);
|
|
807
|
+
}
|
|
808
|
+
// @ts-ignore: props.options is either passed or populated with default values
|
|
809
|
+
}, [props.options.style]);
|
|
799
810
|
return React__default.createElement("div", { ref: mapContainer, className: "mapContainer", style: props.style });
|
|
800
811
|
};
|
|
801
812
|
MapLibreMap.defaultProps = defaultProps$2;
|
|
@@ -12220,13 +12231,15 @@ function useLayer(props) {
|
|
|
12220
12231
|
var layerId = useRef(props.layerId || (props.idPrefix ? props.idPrefix : "Layer-") + mapHook.componentId);
|
|
12221
12232
|
var createLayer = useCallback(function () {
|
|
12222
12233
|
var _a, _b;
|
|
12223
|
-
if (
|
|
12234
|
+
if (!mapHook.map)
|
|
12224
12235
|
return;
|
|
12225
|
-
initializedRef.current = true;
|
|
12226
12236
|
if (mapHook.map.map.getLayer(layerId.current)) {
|
|
12227
|
-
|
|
12228
|
-
|
|
12237
|
+
mapHook.cleanup();
|
|
12238
|
+
}
|
|
12239
|
+
if (mapHook.map.map.getSource(layerId.current)) {
|
|
12240
|
+
mapHook.map.map.removeSource(layerId.current);
|
|
12229
12241
|
}
|
|
12242
|
+
initializedRef.current = true;
|
|
12230
12243
|
mapHook.map.addLayer(__assign(__assign(__assign({}, props.options), (props.geojson
|
|
12231
12244
|
? {
|
|
12232
12245
|
source: {
|
|
@@ -12249,6 +12262,14 @@ function useLayer(props) {
|
|
|
12249
12262
|
if (typeof props.onLeave !== "undefined") {
|
|
12250
12263
|
mapHook.map.on("mouseleave", layerId.current, props.onLeave, mapHook.componentId);
|
|
12251
12264
|
}
|
|
12265
|
+
// recreate layer if style has changed
|
|
12266
|
+
mapHook.map.on("styledata", function () {
|
|
12267
|
+
var _a;
|
|
12268
|
+
if (initializedRef.current && !((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getLayer(layerId.current))) {
|
|
12269
|
+
console.log("Recreate Layer");
|
|
12270
|
+
createLayer();
|
|
12271
|
+
}
|
|
12272
|
+
}, mapHook.componentId);
|
|
12252
12273
|
layerPaintConfRef.current = JSON.stringify((_a = props.options) === null || _a === void 0 ? void 0 : _a.paint);
|
|
12253
12274
|
layerLayoutConfRef.current = JSON.stringify((_b = props.options) === null || _b === void 0 ? void 0 : _b.layout);
|
|
12254
12275
|
layerTypeRef.current = props.options.type;
|
|
@@ -12273,7 +12294,10 @@ function useLayer(props) {
|
|
|
12273
12294
|
}, [props.geojson, mapHook.map, props.options.type]);
|
|
12274
12295
|
useEffect(function () {
|
|
12275
12296
|
var _a, _b, _c, _d, _e;
|
|
12276
|
-
if (!mapHook.map ||
|
|
12297
|
+
if (!mapHook.map ||
|
|
12298
|
+
!((_c = (_b = (_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.getLayer) === null || _c === void 0 ? void 0 : _c.call(_b, layerId.current)) ||
|
|
12299
|
+
!initializedRef.current ||
|
|
12300
|
+
props.options.type !== layerTypeRef.current)
|
|
12277
12301
|
return;
|
|
12278
12302
|
var key;
|
|
12279
12303
|
var layoutString = JSON.stringify(props.options.layout);
|
|
@@ -12297,13 +12321,10 @@ function useLayer(props) {
|
|
|
12297
12321
|
layerPaintConfRef.current = paintString;
|
|
12298
12322
|
}
|
|
12299
12323
|
}, [props.options, mapHook.map]);
|
|
12300
|
-
var cleanup = function () {
|
|
12301
|
-
initializedRef.current = false;
|
|
12302
|
-
mapHook.cleanup();
|
|
12303
|
-
};
|
|
12304
12324
|
useEffect(function () {
|
|
12305
12325
|
return function () {
|
|
12306
|
-
|
|
12326
|
+
initializedRef.current = false;
|
|
12327
|
+
mapHook.cleanup();
|
|
12307
12328
|
};
|
|
12308
12329
|
}, []);
|
|
12309
12330
|
return {
|
|
@@ -12564,16 +12585,16 @@ var MlImageMarkerLayer = function (props) {
|
|
|
12564
12585
|
mapId: props.mapId,
|
|
12565
12586
|
waitForLayer: props.insertBeforeLayer,
|
|
12566
12587
|
});
|
|
12567
|
-
var
|
|
12588
|
+
var initializedRef = useRef(false);
|
|
12589
|
+
var recreationInProgress = useRef(false);
|
|
12568
12590
|
var imageIdRef = useRef(props.imageId || "img_" + new Date().getTime());
|
|
12569
12591
|
var layerId = useRef(props.layerId || "MlImageMarkerLayer-" + mapHook.componentId);
|
|
12592
|
+
// effect to sync Layer paint & layout properties
|
|
12570
12593
|
useEffect(function () {
|
|
12571
12594
|
if (!mapHook.map ||
|
|
12572
12595
|
(mapHook.map && !mapHook.map.map.getLayer(layerId.current)) ||
|
|
12573
12596
|
!props.options)
|
|
12574
12597
|
return;
|
|
12575
|
-
// the MapLibre-gl instance (mapContext.map) is accessible here
|
|
12576
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
12577
12598
|
var key;
|
|
12578
12599
|
if (props.options.layout) {
|
|
12579
12600
|
for (key in props.options.layout) {
|
|
@@ -12586,41 +12607,120 @@ var MlImageMarkerLayer = function (props) {
|
|
|
12586
12607
|
}
|
|
12587
12608
|
}
|
|
12588
12609
|
}, [props.options, layerId.current, props.mapId]);
|
|
12589
|
-
var
|
|
12590
|
-
if (!mapHook.map)
|
|
12591
|
-
|
|
12592
|
-
var tmpOptions = __assign({ id: layerId.current, layout: {} }, props.options);
|
|
12593
|
-
tmpOptions.layout["icon-image"] = imageIdRef.current;
|
|
12594
|
-
mapHook.map.addLayer(tmpOptions, props.insertBeforeLayer, mapHook.componentId);
|
|
12595
|
-
}, [props, mapHook.map]);
|
|
12596
|
-
useEffect(function () {
|
|
12597
|
-
if (!props.options || !mapHook.map || layerInitializedRef.current)
|
|
12610
|
+
var createImage = function (mapHook, props, callback) {
|
|
12611
|
+
if (!mapHook.map) {
|
|
12612
|
+
initializedRef.current = false;
|
|
12598
12613
|
return;
|
|
12599
|
-
|
|
12600
|
-
if (props.imgSrc) {
|
|
12614
|
+
}
|
|
12615
|
+
if (props.imgSrc && !mapHook.map.map.hasImage(imageIdRef.current)) {
|
|
12601
12616
|
mapHook.map.map.loadImage(props.imgSrc, function (error, image) {
|
|
12602
12617
|
if (error)
|
|
12603
12618
|
throw error;
|
|
12604
|
-
if (!mapHook.map)
|
|
12619
|
+
if (!mapHook.map || mapHook.map.map.hasImage(imageIdRef.current))
|
|
12605
12620
|
return;
|
|
12606
12621
|
mapHook.map.addImage(imageIdRef.current, image, mapHook.componentId);
|
|
12622
|
+
if (typeof callback === "function") {
|
|
12623
|
+
callback();
|
|
12624
|
+
}
|
|
12625
|
+
});
|
|
12626
|
+
}
|
|
12627
|
+
else {
|
|
12628
|
+
if (typeof callback === "function") {
|
|
12629
|
+
callback();
|
|
12630
|
+
}
|
|
12631
|
+
}
|
|
12632
|
+
};
|
|
12633
|
+
var createLayer = function (mapHook, props, createMapLibreElements) {
|
|
12634
|
+
var _a;
|
|
12635
|
+
if (!props.options || !mapHook.map || ((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getLayer(layerId.current)))
|
|
12636
|
+
return;
|
|
12637
|
+
var tmpOptions = __assign({ id: layerId.current, layout: {} }, props.options);
|
|
12638
|
+
tmpOptions.layout["icon-image"] = imageIdRef.current;
|
|
12639
|
+
mapHook.map.addLayer(tmpOptions, props.insertBeforeLayer, mapHook.componentId);
|
|
12640
|
+
// recreate layer if map style.json has changed
|
|
12641
|
+
mapHook.map.on("styledata", function () {
|
|
12642
|
+
var _a;
|
|
12643
|
+
if (initializedRef.current &&
|
|
12644
|
+
!((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getLayer(layerId.current)) &&
|
|
12645
|
+
!recreationInProgress.current) {
|
|
12646
|
+
initializedRef.current = false;
|
|
12647
|
+
recreationInProgress.current = true;
|
|
12648
|
+
console.log("Recreate Layer " + layerId.current);
|
|
12649
|
+
createMapLibreElements();
|
|
12650
|
+
}
|
|
12651
|
+
}, mapHook.componentId);
|
|
12652
|
+
if (recreationInProgress.current) {
|
|
12653
|
+
recreationInProgress.current = false;
|
|
12654
|
+
}
|
|
12655
|
+
};
|
|
12656
|
+
var createMapLibreElements = useCallback(function () {
|
|
12657
|
+
var _a;
|
|
12658
|
+
if (!mapHook.map || initializedRef.current || ((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getLayer(layerId.current)))
|
|
12659
|
+
return;
|
|
12660
|
+
initializedRef.current = true;
|
|
12661
|
+
if (recreationInProgress.current) {
|
|
12662
|
+
mapHook.cleanup();
|
|
12663
|
+
}
|
|
12664
|
+
if (props.imgSrc) {
|
|
12665
|
+
createImage(mapHook, props, function () {
|
|
12666
|
+
createLayer(mapHook, props, createMapLibreElements);
|
|
12607
12667
|
});
|
|
12608
12668
|
}
|
|
12609
|
-
|
|
12610
|
-
|
|
12669
|
+
else {
|
|
12670
|
+
createLayer(mapHook, props, createMapLibreElements);
|
|
12671
|
+
}
|
|
12672
|
+
}, [props, mapHook]);
|
|
12673
|
+
useEffect(function () {
|
|
12674
|
+
if (initializedRef.current)
|
|
12675
|
+
return;
|
|
12676
|
+
createMapLibreElements();
|
|
12677
|
+
}, [createMapLibreElements]);
|
|
12611
12678
|
useEffect(function () {
|
|
12612
12679
|
if (!mapHook.map ||
|
|
12613
12680
|
(mapHook.map && !mapHook.map.map.getLayer(layerId.current)) ||
|
|
12614
12681
|
!props.options) {
|
|
12615
12682
|
return;
|
|
12616
12683
|
}
|
|
12617
|
-
mapHook.map.map
|
|
12618
|
-
.getSource(layerId.current)
|
|
12619
|
-
.setData(props.options.source.data);
|
|
12684
|
+
mapHook.map.map.getSource(layerId.current).setData(props.options.source.data);
|
|
12620
12685
|
}, [props.options.source.data, props]);
|
|
12621
12686
|
return React__default.createElement(React__default.Fragment, null);
|
|
12622
12687
|
};
|
|
12623
12688
|
|
|
12689
|
+
//const unitSquareConvert = {
|
|
12690
|
+
// kilometers: 1,
|
|
12691
|
+
// miles: 1 / 2.58998811,
|
|
12692
|
+
//};
|
|
12693
|
+
function getUnitSquareMultiplier(measureType) {
|
|
12694
|
+
return measureType === "miles" ? 1 / 2.58998811 : 1;
|
|
12695
|
+
}
|
|
12696
|
+
function getUnitLabel(measureType) {
|
|
12697
|
+
return measureType === "miles" ? 'mi' : 'km';
|
|
12698
|
+
}
|
|
12699
|
+
var MlMeasureTool = function (props) {
|
|
12700
|
+
var _a = useState(0), length = _a[0], setLength = _a[1];
|
|
12701
|
+
var _b = useState([undefined]), currentFeatures = _b[0], setCurrentFeatures = _b[1];
|
|
12702
|
+
useEffect(function () {
|
|
12703
|
+
if (currentFeatures[0]) {
|
|
12704
|
+
setLength(props.measureType === "polygon"
|
|
12705
|
+
? (turf.area(currentFeatures[0]) / 1000000) * getUnitSquareMultiplier(props.unit)
|
|
12706
|
+
: turf.length(currentFeatures[0], { units: props.unit }));
|
|
12707
|
+
}
|
|
12708
|
+
}, [props.unit, currentFeatures]);
|
|
12709
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
12710
|
+
React__default.createElement(MlFeatureEditor, { onChange: function (features) {
|
|
12711
|
+
setCurrentFeatures(features);
|
|
12712
|
+
}, mode: props.measureType === "polygon" ? "custom_polygon" : "draw_line_string" }),
|
|
12713
|
+
length.toFixed(2),
|
|
12714
|
+
" ",
|
|
12715
|
+
getUnitLabel(props.unit),
|
|
12716
|
+
props.measureType === "polygon" ? "²" : ""));
|
|
12717
|
+
};
|
|
12718
|
+
MlMeasureTool.defaultProps = {
|
|
12719
|
+
mapId: undefined,
|
|
12720
|
+
measureType: "line",
|
|
12721
|
+
unit: "kilometers",
|
|
12722
|
+
};
|
|
12723
|
+
|
|
12624
12724
|
function getButtonGroupUtilityClass(slot) {
|
|
12625
12725
|
return generateUtilityClass('MuiButtonGroup', slot);
|
|
12626
12726
|
}
|
|
@@ -13337,10 +13437,13 @@ var MlVectorTileLayer = function (props) {
|
|
|
13337
13437
|
var layerPaintConfsRef = useRef({});
|
|
13338
13438
|
var layerLayoutConfsRef = useRef({});
|
|
13339
13439
|
var initializedRef = useRef(false);
|
|
13340
|
-
|
|
13341
|
-
if (!mapHook.map
|
|
13440
|
+
var createLayer = useCallback(function () {
|
|
13441
|
+
if (!mapHook.map)
|
|
13342
13442
|
return;
|
|
13343
13443
|
initializedRef.current = true;
|
|
13444
|
+
if (mapHook.map.map.getLayer(layerId.current)) {
|
|
13445
|
+
mapHook.cleanup();
|
|
13446
|
+
}
|
|
13344
13447
|
// Add the new layer to the openlayers instance once it is available
|
|
13345
13448
|
mapHook.map.addSource(layerId.current, __assign({ type: "vector", tiles: [props.url], tileSize: 512, attribution: "" }, props.sourceOptions), mapHook.componentId);
|
|
13346
13449
|
for (var key in props.layers) {
|
|
@@ -13353,8 +13456,21 @@ var MlVectorTileLayer = function (props) {
|
|
|
13353
13456
|
} }, props.layers[key]), props.insertBeforeLayer, mapHook.componentId);
|
|
13354
13457
|
layerPaintConfsRef.current[key] = JSON.stringify(props.layers[key].paint);
|
|
13355
13458
|
layerLayoutConfsRef.current[key] = JSON.stringify(props.layers[key].layout);
|
|
13459
|
+
// recreate layer if style has changed
|
|
13460
|
+
mapHook.map.on("styledata", function () {
|
|
13461
|
+
var _a;
|
|
13462
|
+
if (initializedRef.current && !((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getSource(layerId.current))) {
|
|
13463
|
+
console.log("Recreate Layer " + layerId.current);
|
|
13464
|
+
createLayer();
|
|
13465
|
+
}
|
|
13466
|
+
}, mapHook.componentId);
|
|
13356
13467
|
}
|
|
13357
13468
|
}, [mapHook.map, props]);
|
|
13469
|
+
useEffect(function () {
|
|
13470
|
+
if (initializedRef.current)
|
|
13471
|
+
return;
|
|
13472
|
+
createLayer();
|
|
13473
|
+
}, [createLayer]);
|
|
13358
13474
|
useEffect(function () {
|
|
13359
13475
|
if (!mapHook.map || !initializedRef.current)
|
|
13360
13476
|
return;
|
|
@@ -13447,10 +13563,13 @@ var MlWmsLayer = function (props) {
|
|
|
13447
13563
|
});
|
|
13448
13564
|
var initializedRef = useRef(false);
|
|
13449
13565
|
var layerId = useRef(props.layerId || "MlWmsLayer-" + mapHook.componentId);
|
|
13450
|
-
|
|
13451
|
-
if (!mapHook.map
|
|
13566
|
+
var createLayer = useCallback(function () {
|
|
13567
|
+
if (!mapHook.map)
|
|
13452
13568
|
return;
|
|
13453
13569
|
initializedRef.current = true;
|
|
13570
|
+
if (mapHook.map.map.getLayer(layerId.current)) {
|
|
13571
|
+
mapHook.cleanup();
|
|
13572
|
+
}
|
|
13454
13573
|
var _propsUrlParams;
|
|
13455
13574
|
var _wmsUrl = props.url;
|
|
13456
13575
|
if (props.url.indexOf("?") !== -1) {
|
|
@@ -13461,14 +13580,26 @@ var MlWmsLayer = function (props) {
|
|
|
13461
13580
|
// first spread in default props manually to enable overriding a single parameter without replacing the whole default urlParameters object
|
|
13462
13581
|
var urlParamsObj = __assign(__assign(__assign({}, defaultProps.urlParameters), Object.fromEntries(_urlParamsFromUrl)), props.urlParameters);
|
|
13463
13582
|
var urlParams = new URLSearchParams(urlParamsObj);
|
|
13464
|
-
var urlParamsStr = decodeURIComponent(urlParams.toString()) +
|
|
13465
|
-
"".replace(/%2F/g, "/").replace(/%3A/g, ":");
|
|
13583
|
+
var urlParamsStr = decodeURIComponent(urlParams.toString()) + "".replace(/%2F/g, "/").replace(/%3A/g, ":");
|
|
13466
13584
|
mapHook.map.addSource(layerId.current, __assign({ type: "raster", tiles: [_wmsUrl + "?" + urlParamsStr], tileSize: urlParamsObj.width, attribution: props.attribution }, props.sourceOptions), mapHook.componentId);
|
|
13467
13585
|
mapHook.map.addLayer(__assign({ id: layerId.current, type: "raster", source: layerId.current }, props.layerOptions), props.insertBeforeLayer, mapHook.componentId);
|
|
13586
|
+
// recreate layer if map style.json has changed
|
|
13587
|
+
mapHook.map.on("styledata", function () {
|
|
13588
|
+
var _a;
|
|
13589
|
+
if (initializedRef.current && !((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getLayer(layerId.current))) {
|
|
13590
|
+
console.log("Recreate Layer " + layerId.current);
|
|
13591
|
+
createLayer();
|
|
13592
|
+
}
|
|
13593
|
+
}, mapHook.componentId);
|
|
13468
13594
|
if (!props.visible) {
|
|
13469
13595
|
mapHook.map.map.setLayoutProperty(layerId.current, "visibility", "none");
|
|
13470
13596
|
}
|
|
13471
|
-
}, [mapHook, props]);
|
|
13597
|
+
}, [mapHook.map, props]);
|
|
13598
|
+
useEffect(function () {
|
|
13599
|
+
if (initializedRef.current)
|
|
13600
|
+
return;
|
|
13601
|
+
createLayer();
|
|
13602
|
+
}, [createLayer]);
|
|
13472
13603
|
useEffect(function () {
|
|
13473
13604
|
if (!mapHook.map || !initializedRef.current)
|
|
13474
13605
|
return;
|
|
@@ -18562,7 +18693,7 @@ useWms.defaultProps = {
|
|
|
18562
18693
|
urlParameters: {
|
|
18563
18694
|
SERVICE: "WMS",
|
|
18564
18695
|
VERSION: "1.3.0",
|
|
18565
|
-
REQUEST: "
|
|
18696
|
+
REQUEST: "GetCapabilities"
|
|
18566
18697
|
}
|
|
18567
18698
|
};
|
|
18568
18699
|
|
|
@@ -18628,5 +18759,5 @@ SimpleDataProvider.propTypes = {
|
|
|
18628
18759
|
children: PropTypes.node.isRequired
|
|
18629
18760
|
};
|
|
18630
18761
|
|
|
18631
|
-
export { GeoJsonContext, GeoJsonProvider, MapComponentsProvider, MapContext, MapLibreMap, MlBasicComponent, MlComponentTemplate, MlCreatePdfButton, MlFeatureEditor, MlFillExtrusionLayer, MlFollowGps, MlGPXViewer, MlGeoJsonLayer, MlImageMarkerLayer, MlLayer, MlLayerMagnify, MlLayerSwipe, MlMarker, MlNavigationCompass, MlNavigationTools, MlOsmLayer, MlSpatialElevationProfile, MlTransitionGeoJsonLayer, MlVectorTileLayer, MlWmsLayer, SimpleDataContext, SimpleDataProvider, useLayer, useMap, useMapState, useWms };
|
|
18762
|
+
export { GeoJsonContext, GeoJsonProvider, MapComponentsProvider, MapContext, MapLibreMap, MlBasicComponent, MlComponentTemplate, MlCreatePdfButton, MlFeatureEditor, MlFillExtrusionLayer, MlFollowGps, MlGPXViewer, MlGeoJsonLayer, MlImageMarkerLayer, MlLayer, MlLayerMagnify, MlLayerSwipe, MlMarker, MlMeasureTool, MlNavigationCompass, MlNavigationTools, MlOsmLayer, MlSpatialElevationProfile, MlTransitionGeoJsonLayer, MlVectorTileLayer, MlWmsLayer, SimpleDataContext, SimpleDataProvider, useLayer, useMap, useMapState, useWms };
|
|
18632
18763
|
//# sourceMappingURL=index.esm.js.map
|