@mapcomponents/react-maplibre 0.1.43 → 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 +21 -0
- package/coverage/clover.xml +222 -146
- 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 +72 -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 +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 +452 -279
- package/dist/index.esm.js +136 -40
- 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 +26 -11
- 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;
|
|
@@ -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,37 +12607,81 @@ 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
|
+
}
|
|
12607
12625
|
});
|
|
12608
12626
|
}
|
|
12609
|
-
|
|
12610
|
-
|
|
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]);
|
|
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
|
};
|
|
@@ -13337,10 +13402,13 @@ var MlVectorTileLayer = function (props) {
|
|
|
13337
13402
|
var layerPaintConfsRef = useRef({});
|
|
13338
13403
|
var layerLayoutConfsRef = useRef({});
|
|
13339
13404
|
var initializedRef = useRef(false);
|
|
13340
|
-
|
|
13341
|
-
if (!mapHook.map
|
|
13405
|
+
var createLayer = useCallback(function () {
|
|
13406
|
+
if (!mapHook.map)
|
|
13342
13407
|
return;
|
|
13343
13408
|
initializedRef.current = true;
|
|
13409
|
+
if (mapHook.map.map.getLayer(layerId.current)) {
|
|
13410
|
+
mapHook.cleanup();
|
|
13411
|
+
}
|
|
13344
13412
|
// Add the new layer to the openlayers instance once it is available
|
|
13345
13413
|
mapHook.map.addSource(layerId.current, __assign({ type: "vector", tiles: [props.url], tileSize: 512, attribution: "" }, props.sourceOptions), mapHook.componentId);
|
|
13346
13414
|
for (var key in props.layers) {
|
|
@@ -13353,8 +13421,21 @@ var MlVectorTileLayer = function (props) {
|
|
|
13353
13421
|
} }, props.layers[key]), props.insertBeforeLayer, mapHook.componentId);
|
|
13354
13422
|
layerPaintConfsRef.current[key] = JSON.stringify(props.layers[key].paint);
|
|
13355
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);
|
|
13356
13432
|
}
|
|
13357
13433
|
}, [mapHook.map, props]);
|
|
13434
|
+
useEffect(function () {
|
|
13435
|
+
if (initializedRef.current)
|
|
13436
|
+
return;
|
|
13437
|
+
createLayer();
|
|
13438
|
+
}, [createLayer]);
|
|
13358
13439
|
useEffect(function () {
|
|
13359
13440
|
if (!mapHook.map || !initializedRef.current)
|
|
13360
13441
|
return;
|
|
@@ -13447,10 +13528,13 @@ var MlWmsLayer = function (props) {
|
|
|
13447
13528
|
});
|
|
13448
13529
|
var initializedRef = useRef(false);
|
|
13449
13530
|
var layerId = useRef(props.layerId || "MlWmsLayer-" + mapHook.componentId);
|
|
13450
|
-
|
|
13451
|
-
if (!mapHook.map
|
|
13531
|
+
var createLayer = useCallback(function () {
|
|
13532
|
+
if (!mapHook.map)
|
|
13452
13533
|
return;
|
|
13453
13534
|
initializedRef.current = true;
|
|
13535
|
+
if (mapHook.map.map.getLayer(layerId.current)) {
|
|
13536
|
+
mapHook.cleanup();
|
|
13537
|
+
}
|
|
13454
13538
|
var _propsUrlParams;
|
|
13455
13539
|
var _wmsUrl = props.url;
|
|
13456
13540
|
if (props.url.indexOf("?") !== -1) {
|
|
@@ -13461,14 +13545,26 @@ var MlWmsLayer = function (props) {
|
|
|
13461
13545
|
// first spread in default props manually to enable overriding a single parameter without replacing the whole default urlParameters object
|
|
13462
13546
|
var urlParamsObj = __assign(__assign(__assign({}, defaultProps.urlParameters), Object.fromEntries(_urlParamsFromUrl)), props.urlParameters);
|
|
13463
13547
|
var urlParams = new URLSearchParams(urlParamsObj);
|
|
13464
|
-
var urlParamsStr = decodeURIComponent(urlParams.toString()) +
|
|
13465
|
-
"".replace(/%2F/g, "/").replace(/%3A/g, ":");
|
|
13548
|
+
var urlParamsStr = decodeURIComponent(urlParams.toString()) + "".replace(/%2F/g, "/").replace(/%3A/g, ":");
|
|
13466
13549
|
mapHook.map.addSource(layerId.current, __assign({ type: "raster", tiles: [_wmsUrl + "?" + urlParamsStr], tileSize: urlParamsObj.width, attribution: props.attribution }, props.sourceOptions), mapHook.componentId);
|
|
13467
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);
|
|
13468
13559
|
if (!props.visible) {
|
|
13469
13560
|
mapHook.map.map.setLayoutProperty(layerId.current, "visibility", "none");
|
|
13470
13561
|
}
|
|
13471
|
-
}, [mapHook, props]);
|
|
13562
|
+
}, [mapHook.map, props]);
|
|
13563
|
+
useEffect(function () {
|
|
13564
|
+
if (initializedRef.current)
|
|
13565
|
+
return;
|
|
13566
|
+
createLayer();
|
|
13567
|
+
}, [createLayer]);
|
|
13472
13568
|
useEffect(function () {
|
|
13473
13569
|
if (!mapHook.map || !initializedRef.current)
|
|
13474
13570
|
return;
|