@mapcomponents/react-maplibre 0.1.45 → 0.1.46
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 +9 -0
- package/coverage/clover.xml +206 -132
- 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 +1 -1
- 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 +184 -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 +1 -1
- 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 +46 -22
- 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 +1 -1
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.ts.html +9 -6
- package/coverage/lcov.info +422 -252
- package/dist/index.esm.js +127 -36
- package/dist/index.esm.js.map +1 -1
- package/docs-build/{0.b1b9b035.iframe.bundle.js → 0.0ee4f98c.iframe.bundle.js} +2 -2
- package/docs-build/0.0ee4f98c.iframe.bundle.js.map +1 -0
- package/docs-build/{1.c50fb367.iframe.bundle.js → 1.bb3cf738.iframe.bundle.js} +3 -3
- package/docs-build/1.bb3cf738.iframe.bundle.js.map +1 -0
- package/docs-build/{17.2e544968.iframe.bundle.js → 17.97db5b3f.iframe.bundle.js} +2 -2
- package/docs-build/17.97db5b3f.iframe.bundle.js.map +1 -0
- package/docs-build/{18.42087006.iframe.bundle.js → 18.f8d843df.iframe.bundle.js} +3 -3
- package/docs-build/18.f8d843df.iframe.bundle.js.map +1 -0
- package/docs-build/{19.7e782442.iframe.bundle.js → 19.c45e6b08.iframe.bundle.js} +2 -2
- package/docs-build/19.c45e6b08.iframe.bundle.js.map +1 -0
- package/docs-build/{2.e58dc625.iframe.bundle.js → 2.42c790e4.iframe.bundle.js} +2 -2
- package/docs-build/2.42c790e4.iframe.bundle.js.map +1 -0
- package/docs-build/{20.f009289a.iframe.bundle.js → 20.120bbcfb.iframe.bundle.js} +2 -2
- package/docs-build/20.120bbcfb.iframe.bundle.js.map +1 -0
- package/docs-build/{21.1cdc9040.iframe.bundle.js → 21.37c885f1.iframe.bundle.js} +2 -2
- package/docs-build/21.37c885f1.iframe.bundle.js.map +1 -0
- package/docs-build/{22.c9e6b2d7.iframe.bundle.js → 22.7fbc99f4.iframe.bundle.js} +2 -2
- package/docs-build/22.7fbc99f4.iframe.bundle.js.map +1 -0
- package/docs-build/{3.a8172b89.iframe.bundle.js → 3.1a37a83e.iframe.bundle.js} +2 -2
- package/docs-build/3.1a37a83e.iframe.bundle.js.map +1 -0
- package/docs-build/iframe.html +1 -1
- package/docs-build/main~24120820.905c51c8.iframe.bundle.js +2 -0
- package/docs-build/main~24120820.905c51c8.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.93aea1be.iframe.bundle.js} +3 -3
- package/docs-build/vendors~main~0ad7406a.93aea1be.iframe.bundle.js.map +1 -0
- package/docs-build/vendors~main~0f485567.6e7163ef.iframe.bundle.js +2 -0
- package/docs-build/vendors~main~0f485567.6e7163ef.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~41a6ab2c.a947ed53.iframe.bundle.js → vendors~main~41a6ab2c.da377733.iframe.bundle.js} +2 -2
- package/docs-build/vendors~main~41a6ab2c.da377733.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.86178471.iframe.bundle.js} +2 -2
- package/docs-build/vendors~main~57c1f6cb.86178471.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~73914085.a8e03e3b.iframe.bundle.js → vendors~main~73914085.e2f34f8e.iframe.bundle.js} +6 -6
- package/docs-build/{vendors~main~73914085.a8e03e3b.iframe.bundle.js.map → vendors~main~73914085.e2f34f8e.iframe.bundle.js.map} +1 -1
- package/docs-build/{vendors~main~9c5b28f6.7b8beed1.iframe.bundle.js → vendors~main~9c5b28f6.eefa7445.iframe.bundle.js} +3 -3
- package/docs-build/vendors~main~9c5b28f6.eefa7445.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~b5906859.7f66dcaf.iframe.bundle.js → vendors~main~b5906859.210afc21.iframe.bundle.js} +5 -5
- package/docs-build/vendors~main~b5906859.210afc21.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~b8f44717.7053e467.iframe.bundle.js → vendors~main~b8f44717.7b869975.iframe.bundle.js} +3 -3
- package/docs-build/vendors~main~b8f44717.7b869975.iframe.bundle.js.map +1 -0
- package/docs-build/{vendors~main~b9cf3951.a4fd68f5.iframe.bundle.js → vendors~main~b9cf3951.62d39717.iframe.bundle.js} +11 -11
- package/docs-build/vendors~main~b9cf3951.62d39717.iframe.bundle.js.map +1 -0
- package/docs-build/vendors~main~d939e436.394e3bc7.iframe.bundle.js +2 -0
- package/docs-build/vendors~main~d939e436.394e3bc7.iframe.bundle.js.map +1 -0
- package/docs-build/vendors~main~f420d588.88814a6a.iframe.bundle.js +107 -0
- package/docs-build/vendors~main~f420d588.88814a6a.iframe.bundle.js.map +1 -0
- package/package.json +1 -1
- 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/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 +67 -0
- package/src/components/MlMeasureTool/MlMeasureTool.tsx +33 -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/hooks/useLayer.ts +15 -7
- package/src/index.ts +4 -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~9c5b28f6.7b8beed1.iframe.bundle.js.map +0 -1
- 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;
|
|
@@ -12223,7 +12234,7 @@ function useLayer(props) {
|
|
|
12223
12234
|
if (!mapHook.map)
|
|
12224
12235
|
return;
|
|
12225
12236
|
if (mapHook.map.map.getLayer(layerId.current)) {
|
|
12226
|
-
mapHook.
|
|
12237
|
+
mapHook.cleanup();
|
|
12227
12238
|
}
|
|
12228
12239
|
if (mapHook.map.map.getSource(layerId.current)) {
|
|
12229
12240
|
mapHook.map.map.removeSource(layerId.current);
|
|
@@ -12251,6 +12262,14 @@ function useLayer(props) {
|
|
|
12251
12262
|
if (typeof props.onLeave !== "undefined") {
|
|
12252
12263
|
mapHook.map.on("mouseleave", layerId.current, props.onLeave, mapHook.componentId);
|
|
12253
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);
|
|
12254
12273
|
layerPaintConfRef.current = JSON.stringify((_a = props.options) === null || _a === void 0 ? void 0 : _a.paint);
|
|
12255
12274
|
layerLayoutConfRef.current = JSON.stringify((_b = props.options) === null || _b === void 0 ? void 0 : _b.layout);
|
|
12256
12275
|
layerTypeRef.current = props.options.type;
|
|
@@ -12302,13 +12321,10 @@ function useLayer(props) {
|
|
|
12302
12321
|
layerPaintConfRef.current = paintString;
|
|
12303
12322
|
}
|
|
12304
12323
|
}, [props.options, mapHook.map]);
|
|
12305
|
-
var cleanup = function () {
|
|
12306
|
-
initializedRef.current = false;
|
|
12307
|
-
mapHook.cleanup();
|
|
12308
|
-
};
|
|
12309
12324
|
useEffect(function () {
|
|
12310
12325
|
return function () {
|
|
12311
|
-
|
|
12326
|
+
initializedRef.current = false;
|
|
12327
|
+
mapHook.cleanup();
|
|
12312
12328
|
};
|
|
12313
12329
|
}, []);
|
|
12314
12330
|
return {
|
|
@@ -12569,16 +12585,16 @@ var MlImageMarkerLayer = function (props) {
|
|
|
12569
12585
|
mapId: props.mapId,
|
|
12570
12586
|
waitForLayer: props.insertBeforeLayer,
|
|
12571
12587
|
});
|
|
12572
|
-
var
|
|
12588
|
+
var initializedRef = useRef(false);
|
|
12589
|
+
var recreationInProgress = useRef(false);
|
|
12573
12590
|
var imageIdRef = useRef(props.imageId || "img_" + new Date().getTime());
|
|
12574
12591
|
var layerId = useRef(props.layerId || "MlImageMarkerLayer-" + mapHook.componentId);
|
|
12592
|
+
// effect to sync Layer paint & layout properties
|
|
12575
12593
|
useEffect(function () {
|
|
12576
12594
|
if (!mapHook.map ||
|
|
12577
12595
|
(mapHook.map && !mapHook.map.map.getLayer(layerId.current)) ||
|
|
12578
12596
|
!props.options)
|
|
12579
12597
|
return;
|
|
12580
|
-
// the MapLibre-gl instance (mapContext.map) is accessible here
|
|
12581
|
-
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
12582
12598
|
var key;
|
|
12583
12599
|
if (props.options.layout) {
|
|
12584
12600
|
for (key in props.options.layout) {
|
|
@@ -12591,37 +12607,81 @@ var MlImageMarkerLayer = function (props) {
|
|
|
12591
12607
|
}
|
|
12592
12608
|
}
|
|
12593
12609
|
}, [props.options, layerId.current, props.mapId]);
|
|
12594
|
-
var
|
|
12595
|
-
if (!mapHook.map)
|
|
12596
|
-
|
|
12597
|
-
var tmpOptions = __assign({ id: layerId.current, layout: {} }, props.options);
|
|
12598
|
-
tmpOptions.layout["icon-image"] = imageIdRef.current;
|
|
12599
|
-
mapHook.map.addLayer(tmpOptions, props.insertBeforeLayer, mapHook.componentId);
|
|
12600
|
-
}, [props, mapHook.map]);
|
|
12601
|
-
useEffect(function () {
|
|
12602
|
-
if (!props.options || !mapHook.map || layerInitializedRef.current)
|
|
12610
|
+
var createImage = function (mapHook, props, callback) {
|
|
12611
|
+
if (!mapHook.map) {
|
|
12612
|
+
initializedRef.current = false;
|
|
12603
12613
|
return;
|
|
12604
|
-
|
|
12605
|
-
if (props.imgSrc) {
|
|
12614
|
+
}
|
|
12615
|
+
if (props.imgSrc && !mapHook.map.map.hasImage(imageIdRef.current)) {
|
|
12606
12616
|
mapHook.map.map.loadImage(props.imgSrc, function (error, image) {
|
|
12607
12617
|
if (error)
|
|
12608
12618
|
throw error;
|
|
12609
|
-
if (!mapHook.map)
|
|
12619
|
+
if (!mapHook.map || mapHook.map.map.hasImage(imageIdRef.current))
|
|
12610
12620
|
return;
|
|
12611
12621
|
mapHook.map.addImage(imageIdRef.current, image, mapHook.componentId);
|
|
12622
|
+
if (typeof callback === "function") {
|
|
12623
|
+
callback();
|
|
12624
|
+
}
|
|
12612
12625
|
});
|
|
12613
12626
|
}
|
|
12614
|
-
|
|
12615
|
-
|
|
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);
|
|
12667
|
+
});
|
|
12668
|
+
}
|
|
12669
|
+
else {
|
|
12670
|
+
createLayer(mapHook, props, createMapLibreElements);
|
|
12671
|
+
}
|
|
12672
|
+
}, [props, mapHook]);
|
|
12673
|
+
useEffect(function () {
|
|
12674
|
+
if (initializedRef.current)
|
|
12675
|
+
return;
|
|
12676
|
+
createMapLibreElements();
|
|
12677
|
+
}, [createMapLibreElements]);
|
|
12616
12678
|
useEffect(function () {
|
|
12617
12679
|
if (!mapHook.map ||
|
|
12618
12680
|
(mapHook.map && !mapHook.map.map.getLayer(layerId.current)) ||
|
|
12619
12681
|
!props.options) {
|
|
12620
12682
|
return;
|
|
12621
12683
|
}
|
|
12622
|
-
mapHook.map.map
|
|
12623
|
-
.getSource(layerId.current)
|
|
12624
|
-
.setData(props.options.source.data);
|
|
12684
|
+
mapHook.map.map.getSource(layerId.current).setData(props.options.source.data);
|
|
12625
12685
|
}, [props.options.source.data, props]);
|
|
12626
12686
|
return React__default.createElement(React__default.Fragment, null);
|
|
12627
12687
|
};
|
|
@@ -13342,10 +13402,13 @@ var MlVectorTileLayer = function (props) {
|
|
|
13342
13402
|
var layerPaintConfsRef = useRef({});
|
|
13343
13403
|
var layerLayoutConfsRef = useRef({});
|
|
13344
13404
|
var initializedRef = useRef(false);
|
|
13345
|
-
|
|
13346
|
-
if (!mapHook.map
|
|
13405
|
+
var createLayer = useCallback(function () {
|
|
13406
|
+
if (!mapHook.map)
|
|
13347
13407
|
return;
|
|
13348
13408
|
initializedRef.current = true;
|
|
13409
|
+
if (mapHook.map.map.getLayer(layerId.current)) {
|
|
13410
|
+
mapHook.cleanup();
|
|
13411
|
+
}
|
|
13349
13412
|
// Add the new layer to the openlayers instance once it is available
|
|
13350
13413
|
mapHook.map.addSource(layerId.current, __assign({ type: "vector", tiles: [props.url], tileSize: 512, attribution: "" }, props.sourceOptions), mapHook.componentId);
|
|
13351
13414
|
for (var key in props.layers) {
|
|
@@ -13358,8 +13421,21 @@ var MlVectorTileLayer = function (props) {
|
|
|
13358
13421
|
} }, props.layers[key]), props.insertBeforeLayer, mapHook.componentId);
|
|
13359
13422
|
layerPaintConfsRef.current[key] = JSON.stringify(props.layers[key].paint);
|
|
13360
13423
|
layerLayoutConfsRef.current[key] = JSON.stringify(props.layers[key].layout);
|
|
13424
|
+
// recreate layer if style has changed
|
|
13425
|
+
mapHook.map.on("styledata", function () {
|
|
13426
|
+
var _a;
|
|
13427
|
+
if (initializedRef.current && !((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getSource(layerId.current))) {
|
|
13428
|
+
console.log("Recreate Layer " + layerId.current);
|
|
13429
|
+
createLayer();
|
|
13430
|
+
}
|
|
13431
|
+
}, mapHook.componentId);
|
|
13361
13432
|
}
|
|
13362
13433
|
}, [mapHook.map, props]);
|
|
13434
|
+
useEffect(function () {
|
|
13435
|
+
if (initializedRef.current)
|
|
13436
|
+
return;
|
|
13437
|
+
createLayer();
|
|
13438
|
+
}, [createLayer]);
|
|
13363
13439
|
useEffect(function () {
|
|
13364
13440
|
if (!mapHook.map || !initializedRef.current)
|
|
13365
13441
|
return;
|
|
@@ -13452,10 +13528,13 @@ var MlWmsLayer = function (props) {
|
|
|
13452
13528
|
});
|
|
13453
13529
|
var initializedRef = useRef(false);
|
|
13454
13530
|
var layerId = useRef(props.layerId || "MlWmsLayer-" + mapHook.componentId);
|
|
13455
|
-
|
|
13456
|
-
if (!mapHook.map
|
|
13531
|
+
var createLayer = useCallback(function () {
|
|
13532
|
+
if (!mapHook.map)
|
|
13457
13533
|
return;
|
|
13458
13534
|
initializedRef.current = true;
|
|
13535
|
+
if (mapHook.map.map.getLayer(layerId.current)) {
|
|
13536
|
+
mapHook.cleanup();
|
|
13537
|
+
}
|
|
13459
13538
|
var _propsUrlParams;
|
|
13460
13539
|
var _wmsUrl = props.url;
|
|
13461
13540
|
if (props.url.indexOf("?") !== -1) {
|
|
@@ -13466,14 +13545,26 @@ var MlWmsLayer = function (props) {
|
|
|
13466
13545
|
// first spread in default props manually to enable overriding a single parameter without replacing the whole default urlParameters object
|
|
13467
13546
|
var urlParamsObj = __assign(__assign(__assign({}, defaultProps.urlParameters), Object.fromEntries(_urlParamsFromUrl)), props.urlParameters);
|
|
13468
13547
|
var urlParams = new URLSearchParams(urlParamsObj);
|
|
13469
|
-
var urlParamsStr = decodeURIComponent(urlParams.toString()) +
|
|
13470
|
-
"".replace(/%2F/g, "/").replace(/%3A/g, ":");
|
|
13548
|
+
var urlParamsStr = decodeURIComponent(urlParams.toString()) + "".replace(/%2F/g, "/").replace(/%3A/g, ":");
|
|
13471
13549
|
mapHook.map.addSource(layerId.current, __assign({ type: "raster", tiles: [_wmsUrl + "?" + urlParamsStr], tileSize: urlParamsObj.width, attribution: props.attribution }, props.sourceOptions), mapHook.componentId);
|
|
13472
13550
|
mapHook.map.addLayer(__assign({ id: layerId.current, type: "raster", source: layerId.current }, props.layerOptions), props.insertBeforeLayer, mapHook.componentId);
|
|
13551
|
+
// recreate layer if map style.json has changed
|
|
13552
|
+
mapHook.map.on("styledata", function () {
|
|
13553
|
+
var _a;
|
|
13554
|
+
if (initializedRef.current && !((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getLayer(layerId.current))) {
|
|
13555
|
+
console.log("Recreate Layer " + layerId.current);
|
|
13556
|
+
createLayer();
|
|
13557
|
+
}
|
|
13558
|
+
}, mapHook.componentId);
|
|
13473
13559
|
if (!props.visible) {
|
|
13474
13560
|
mapHook.map.map.setLayoutProperty(layerId.current, "visibility", "none");
|
|
13475
13561
|
}
|
|
13476
|
-
}, [mapHook, props]);
|
|
13562
|
+
}, [mapHook.map, props]);
|
|
13563
|
+
useEffect(function () {
|
|
13564
|
+
if (initializedRef.current)
|
|
13565
|
+
return;
|
|
13566
|
+
createLayer();
|
|
13567
|
+
}, [createLayer]);
|
|
13477
13568
|
useEffect(function () {
|
|
13478
13569
|
if (!mapHook.map || !initializedRef.current)
|
|
13479
13570
|
return;
|