@mapcomponents/react-maplibre 0.1.18 → 0.1.22
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 +13 -0
- package/coverage/clover.xml +222 -205
- package/coverage/coverage-final.json +6 -6
- package/coverage/lcov-report/index.html +30 -30
- package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.js.html +1 -1
- package/coverage/lcov-report/src/components/MapLibreMap/index.html +1 -1
- package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.js.html +1 -1
- package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +1 -1
- package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.js.html +1 -1
- package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +1 -1
- package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.js.html +1 -1
- package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.js.html +1 -1
- package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
- package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.js.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.js.html +20 -5
- package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.js.html +1 -1
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayer/MlLayer.js.html +1 -1
- package/coverage/lcov-report/src/components/MlLayer/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.js.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.js.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +1 -1
- package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +1 -1
- 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.js.html +1 -1
- package/coverage/lcov-report/src/components/MlMarker/index.html +1 -1
- package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.js.html +1 -1
- package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +1 -1
- package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.js.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/index.html +1 -1
- 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 +261 -111
- package/coverage/lcov-report/src/components/MlShareMapState/index.html +9 -9
- 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/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.js.html +110 -17
- package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +15 -15
- 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.js.html +35 -89
- package/coverage/lcov-report/src/components/MlWmsLayer/index.html +17 -17
- package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.js.html +1 -1
- package/coverage/lcov-report/src/components/MlWmsLoader/index.html +1 -1
- package/coverage/lcov-report/src/hooks/index.html +1 -1
- package/coverage/lcov-report/src/hooks/useMap.js.html +23 -23
- package/coverage/lcov-report/src/hooks/useMapState.js.html +34 -34
- package/coverage/lcov-report/src/hooks/useWms.js.html +1 -1
- package/coverage/lcov-report/src/i18n.js.html +1 -1
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/translations/english.js.html +1 -1
- package/coverage/lcov-report/src/translations/german.js.html +1 -1
- package/coverage/lcov-report/src/translations/index.html +1 -1
- package/coverage/lcov.info +390 -349
- package/dist/index.esm.js +90 -68
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
- package/scripts/build-catalogue-markdown-docs.js +5 -3
- package/src/components/MapLibreMap/lib/MapLibreGlWrapper.js +26 -21
- package/src/components/MapLibreMap/lib/MapLibreGlWrapper.test.js +3 -3
- package/src/components/MlCreatePdfButton/MlCreatePdfButton.doc.de.md +2 -2
- package/src/components/MlCreatePdfButton/MlCreatePdfButton.doc.en.md +3 -0
- package/src/components/MlFeatureEditor/MlFeatureEditor.test.js +2 -2
- package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.js +8 -3
- package/src/components/MlNavigationCompass/MlNavigationCompass.test.js +2 -2
- package/src/components/MlShareMapState/MlShareMapState.js +138 -88
- package/src/components/MlShareMapState/MlShareMapState.stories.js +79 -29
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.js +40 -9
- package/src/components/MlWmsLayer/MlWmsLayer.js +16 -34
- package/src/hooks/useMap.js +1 -1
|
@@ -16,6 +16,7 @@ const MlVectorTileLayer = (props) => {
|
|
|
16
16
|
const idSuffixRef = useRef(new Date().getTime());
|
|
17
17
|
const layerIdsRef = useRef({});
|
|
18
18
|
const layerPaintConfsRef = useRef({});
|
|
19
|
+
const layerLayoutConfsRef = useRef({});
|
|
19
20
|
const initializedRef = useRef(false);
|
|
20
21
|
const mapRef = useRef(null);
|
|
21
22
|
|
|
@@ -48,7 +49,7 @@ const MlVectorTileLayer = (props) => {
|
|
|
48
49
|
tiles: [props.url],
|
|
49
50
|
tileSize: 512,
|
|
50
51
|
attribution: "",
|
|
51
|
-
|
|
52
|
+
...props.sourceOptions,
|
|
52
53
|
});
|
|
53
54
|
|
|
54
55
|
for (let key in props.layers) {
|
|
@@ -70,6 +71,7 @@ const MlVectorTileLayer = (props) => {
|
|
|
70
71
|
...props.layers[key],
|
|
71
72
|
});
|
|
72
73
|
layerPaintConfsRef.current[key] = JSON.stringify(props.layers[key].paint);
|
|
74
|
+
layerLayoutConfsRef.current[key] = JSON.stringify(props.layers[key].layout);
|
|
73
75
|
}
|
|
74
76
|
}, [mapContext.mapIds, props, mapContext]);
|
|
75
77
|
|
|
@@ -79,9 +81,10 @@ const MlVectorTileLayer = (props) => {
|
|
|
79
81
|
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
80
82
|
for (var key in props.layers) {
|
|
81
83
|
if (mapRef.current.getLayer(layerIdsRef.current[key])) {
|
|
82
|
-
|
|
84
|
+
// update changed paint property
|
|
85
|
+
let layerPaintConfString = JSON.stringify(props.layers[key].paint);
|
|
83
86
|
|
|
84
|
-
if (
|
|
87
|
+
if (layerPaintConfString !== layerPaintConfsRef.current[key]) {
|
|
85
88
|
for (let paintKey in props.layers[key].paint) {
|
|
86
89
|
mapContext
|
|
87
90
|
.getMap(props.mapId)
|
|
@@ -92,7 +95,23 @@ const MlVectorTileLayer = (props) => {
|
|
|
92
95
|
);
|
|
93
96
|
}
|
|
94
97
|
}
|
|
95
|
-
layerPaintConfsRef.current[key] =
|
|
98
|
+
layerPaintConfsRef.current[key] = layerPaintConfString;
|
|
99
|
+
|
|
100
|
+
// update changed layout property
|
|
101
|
+
let layerLayoutConfString = JSON.stringify(props.layers[key].layout);
|
|
102
|
+
|
|
103
|
+
if (layerLayoutConfString !== layerLayoutConfsRef.current[key]) {
|
|
104
|
+
for (let layoutKey in props.layers[key].layout) {
|
|
105
|
+
mapContext
|
|
106
|
+
.getMap(props.mapId)
|
|
107
|
+
.setLayoutProperty(
|
|
108
|
+
layerIdsRef.current[key],
|
|
109
|
+
layoutKey,
|
|
110
|
+
props.layers[key].layout[layoutKey]
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
layerLayoutConfsRef.current[key] = layerLayoutConfString;
|
|
96
115
|
}
|
|
97
116
|
}
|
|
98
117
|
}, [props.layers, props, mapContext]);
|
|
@@ -100,11 +119,19 @@ const MlVectorTileLayer = (props) => {
|
|
|
100
119
|
useEffect(() => {
|
|
101
120
|
if (!mapRef.current) return;
|
|
102
121
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
122
|
+
for (var key in props.layers) {
|
|
123
|
+
if (mapRef.current.getLayer(layerIdsRef.current[key])) {
|
|
124
|
+
// toggle layer visibility by changing the layout object's visibility property
|
|
125
|
+
if (props.visible) {
|
|
126
|
+
mapContext
|
|
127
|
+
.getMap(props.mapId)
|
|
128
|
+
.setLayoutProperty(layerIdsRef.current[key], "visibility", "visible");
|
|
129
|
+
} else {
|
|
130
|
+
mapContext
|
|
131
|
+
.getMap(props.mapId)
|
|
132
|
+
.setLayoutProperty(layerIdsRef.current[key], "visibility", "none");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
108
135
|
}
|
|
109
136
|
}, [props.visible]);
|
|
110
137
|
|
|
@@ -124,6 +151,10 @@ MlVectorTileLayer.propTypes = {
|
|
|
124
151
|
* Object that hold layers
|
|
125
152
|
*/
|
|
126
153
|
layers: PropTypes.object,
|
|
154
|
+
/**
|
|
155
|
+
* Boolean value to control the visibility of this layer
|
|
156
|
+
*/
|
|
157
|
+
visible: PropTypes.bool,
|
|
127
158
|
/**
|
|
128
159
|
* String of the URL of a wms layer
|
|
129
160
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import
|
|
1
|
+
import React, { useRef, useEffect } from "react";
|
|
2
|
+
import useMap from "../../hooks/useMap";
|
|
3
3
|
|
|
4
4
|
import PropTypes from "prop-types";
|
|
5
5
|
import { v4 as uuidv4 } from "uuid";
|
|
@@ -45,31 +45,13 @@ const defaultProps = {
|
|
|
45
45
|
* @component
|
|
46
46
|
*/
|
|
47
47
|
const MlWmsLayer = (props) => {
|
|
48
|
-
const
|
|
48
|
+
const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });
|
|
49
49
|
|
|
50
|
-
const componentId = useRef(props.layerId || ("MlWmsLayer-" + uuidv4()));
|
|
51
|
-
const mapRef = useRef(null);
|
|
52
50
|
const initializedRef = useRef(false);
|
|
53
|
-
const layerId = useRef(props.layerId || componentId
|
|
51
|
+
const layerId = useRef(props.layerId || "MlWmsLayer-" + mapHook.componentId);
|
|
54
52
|
|
|
55
53
|
useEffect(() => {
|
|
56
|
-
|
|
57
|
-
return () => {
|
|
58
|
-
// This is the cleanup function, it is called when this react component is removed from react-dom
|
|
59
|
-
if (mapRef.current) {
|
|
60
|
-
mapRef.current.cleanup(_componentId);
|
|
61
|
-
|
|
62
|
-
mapRef.current = null;
|
|
63
|
-
}
|
|
64
|
-
initializedRef.current = false;
|
|
65
|
-
};
|
|
66
|
-
}, []);
|
|
67
|
-
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
70
|
-
|
|
71
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
72
|
-
if (!mapRef.current) return;
|
|
54
|
+
if (!mapHook.map || initializedRef.current) return;
|
|
73
55
|
|
|
74
56
|
initializedRef.current = true;
|
|
75
57
|
|
|
@@ -90,7 +72,7 @@ const MlWmsLayer = (props) => {
|
|
|
90
72
|
let urlParamsStr =
|
|
91
73
|
decodeURIComponent(urlParams.toString()) + "".replace(/%2F/g, "/").replace(/%3A/g, ":");
|
|
92
74
|
|
|
93
|
-
|
|
75
|
+
mapHook.map.addSource(
|
|
94
76
|
layerId.current,
|
|
95
77
|
{
|
|
96
78
|
type: "raster",
|
|
@@ -99,35 +81,35 @@ const MlWmsLayer = (props) => {
|
|
|
99
81
|
attribution: props.attribution,
|
|
100
82
|
...props.sourceOptions,
|
|
101
83
|
},
|
|
102
|
-
componentId
|
|
84
|
+
mapHook.componentId
|
|
103
85
|
);
|
|
104
86
|
|
|
105
|
-
|
|
87
|
+
mapHook.map.addLayer(
|
|
106
88
|
{
|
|
107
89
|
id: layerId.current,
|
|
108
90
|
type: "raster",
|
|
109
|
-
source:
|
|
91
|
+
source: layerId.current,
|
|
110
92
|
...props.layerOptions,
|
|
111
93
|
},
|
|
112
94
|
props.insertBeforeLayer,
|
|
113
|
-
componentId
|
|
95
|
+
mapHook.componentId
|
|
114
96
|
);
|
|
115
97
|
|
|
116
98
|
if (!props.visible) {
|
|
117
|
-
|
|
99
|
+
mapHook.map.setLayoutProperty(layerId.current, "visibility", "none");
|
|
118
100
|
}
|
|
119
|
-
}, [
|
|
101
|
+
}, [mapHook.map, props]);
|
|
120
102
|
|
|
121
103
|
useEffect(() => {
|
|
122
|
-
if (!
|
|
104
|
+
if (!mapHook.map || !initializedRef.current) return;
|
|
123
105
|
|
|
124
106
|
// toggle layer visibility by changing the layout object's visibility property
|
|
125
107
|
if (props.visible) {
|
|
126
|
-
|
|
108
|
+
mapHook.map.setLayoutProperty(layerId.current, "visibility", "visible");
|
|
127
109
|
} else {
|
|
128
|
-
|
|
110
|
+
mapHook.map.setLayoutProperty(layerId.current, "visibility", "none");
|
|
129
111
|
}
|
|
130
|
-
}, [props.visible]);
|
|
112
|
+
}, [props.visible, mapHook.map]);
|
|
131
113
|
|
|
132
114
|
return <></>;
|
|
133
115
|
};
|
package/src/hooks/useMap.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useContext, useState, useEffect, useRef } from "react";
|
|
1
|
+
import React, { useContext, useState, useEffect, useRef } from "react";
|
|
2
2
|
import { v4 as uuidv4 } from "uuid";
|
|
3
3
|
import { MapContext } from "@mapcomponents/react-core";
|
|
4
4
|
import useMapState from "./useMapState";
|