@mapcomponents/react-maplibre 0.1.22 → 0.1.23
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/coverage/clover.xml +90 -109
- package/coverage/coverage-final.json +3 -3
- package/coverage/lcov-report/index.html +18 -18
- 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 +1 -1
- 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 +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/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 +74 -194
- package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +17 -17
- 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 +1 -1
- package/coverage/lcov-report/src/components/MlWmsLayer/index.html +1 -1
- 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 +22 -22
- 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 +132 -167
- package/dist/index.esm.js +23 -60
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.js +51 -91
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.test.js +6 -6
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import
|
|
1
|
+
import React, { useRef, useEffect } from "react";
|
|
2
|
+
import useMap from "../../hooks/useMap";
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -9,90 +9,75 @@ import PropTypes from "prop-types";
|
|
|
9
9
|
* @component
|
|
10
10
|
*/
|
|
11
11
|
const MlVectorTileLayer = (props) => {
|
|
12
|
-
const
|
|
12
|
+
const mapHook = useMap({ mapId: props.mapId, waitForLayer: props.insertBeforeLayer });
|
|
13
13
|
|
|
14
|
-
const layerName = "vector-tile-layer-";
|
|
15
|
-
const sourceName = "vector-tile-source-";
|
|
16
|
-
const idSuffixRef = useRef(new Date().getTime());
|
|
17
14
|
const layerIdsRef = useRef({});
|
|
15
|
+
const layerId = useRef(props.layerId || "MlVectorTileLayer-" + mapHook.componentId);
|
|
18
16
|
const layerPaintConfsRef = useRef({});
|
|
19
17
|
const layerLayoutConfsRef = useRef({});
|
|
20
18
|
const initializedRef = useRef(false);
|
|
21
|
-
const mapRef = useRef(null);
|
|
22
|
-
|
|
23
|
-
const cleanup = () => {
|
|
24
|
-
if (mapRef.current && mapRef.current.style) {
|
|
25
|
-
for (let key in layerIdsRef.current) {
|
|
26
|
-
if (mapRef.current.getLayer(layerIdsRef.current[key])) {
|
|
27
|
-
mapRef.current.removeLayer(layerIdsRef.current[key]);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if (mapRef.current.getSource(sourceName + idSuffixRef.current)) {
|
|
31
|
-
mapRef.current.removeSource(sourceName + idSuffixRef.current);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
19
|
|
|
36
20
|
useEffect(() => {
|
|
37
|
-
return
|
|
38
|
-
}, []);
|
|
39
|
-
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
if (!mapContext.mapExists(props.mapId) || initializedRef.current) return;
|
|
21
|
+
if (!mapHook.map || initializedRef.current) return;
|
|
42
22
|
|
|
43
23
|
initializedRef.current = true;
|
|
44
|
-
mapRef.current = mapContext.getMap(props.mapId);
|
|
45
24
|
|
|
46
25
|
// Add the new layer to the openlayers instance once it is available
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
26
|
+
mapHook.map.addSource(
|
|
27
|
+
layerId,
|
|
28
|
+
{
|
|
29
|
+
type: "vector",
|
|
30
|
+
tiles: [props.url],
|
|
31
|
+
tileSize: 512,
|
|
32
|
+
attribution: "",
|
|
33
|
+
...props.sourceOptions,
|
|
34
|
+
},
|
|
35
|
+
mapHook.componentId
|
|
36
|
+
);
|
|
54
37
|
|
|
55
38
|
for (let key in props.layers) {
|
|
56
|
-
let
|
|
57
|
-
layerIdsRef.current[key] =
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
39
|
+
let _layerId = layerId.current + "_" + key;
|
|
40
|
+
layerIdsRef.current[key] = _layerId;
|
|
41
|
+
|
|
42
|
+
console.log(_layerId);
|
|
43
|
+
mapHook.map.addLayer(
|
|
44
|
+
{
|
|
45
|
+
id: _layerId,
|
|
46
|
+
source: layerId.current,
|
|
47
|
+
type: "line",
|
|
48
|
+
minzoom: 0,
|
|
49
|
+
maxzoom: 22,
|
|
50
|
+
layout: {},
|
|
51
|
+
paint: {
|
|
52
|
+
"line-opacity": 0.5,
|
|
53
|
+
"line-color": "rgb(80, 80, 80)",
|
|
54
|
+
"line-width": 2,
|
|
55
|
+
},
|
|
56
|
+
...props.layers[key],
|
|
70
57
|
},
|
|
71
|
-
|
|
72
|
-
|
|
58
|
+
props.insertBeforeLayer,
|
|
59
|
+
mapHook.componentId
|
|
60
|
+
);
|
|
73
61
|
layerPaintConfsRef.current[key] = JSON.stringify(props.layers[key].paint);
|
|
74
62
|
layerLayoutConfsRef.current[key] = JSON.stringify(props.layers[key].layout);
|
|
75
63
|
}
|
|
76
|
-
}, [
|
|
64
|
+
}, [mapHook.map, props]);
|
|
77
65
|
|
|
78
66
|
useEffect(() => {
|
|
79
|
-
if (!
|
|
80
|
-
// the MapLibre-gl instance (mapContext.map) is accessible here
|
|
67
|
+
if (!mapHook.map || !initializedRef.current) return;
|
|
81
68
|
// initialize the layer and add it to the MapLibre-gl instance or do something else with it
|
|
82
69
|
for (var key in props.layers) {
|
|
83
|
-
if (
|
|
70
|
+
if (mapHook.map.getLayer(layerIdsRef.current[key])) {
|
|
84
71
|
// update changed paint property
|
|
85
72
|
let layerPaintConfString = JSON.stringify(props.layers[key].paint);
|
|
86
73
|
|
|
87
74
|
if (layerPaintConfString !== layerPaintConfsRef.current[key]) {
|
|
88
75
|
for (let paintKey in props.layers[key].paint) {
|
|
89
|
-
|
|
90
|
-
.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
props.layers[key].paint[paintKey]
|
|
95
|
-
);
|
|
76
|
+
mapHook.map.setPaintProperty(
|
|
77
|
+
layerIdsRef.current[key],
|
|
78
|
+
paintKey,
|
|
79
|
+
props.layers[key].paint[paintKey]
|
|
80
|
+
);
|
|
96
81
|
}
|
|
97
82
|
}
|
|
98
83
|
layerPaintConfsRef.current[key] = layerPaintConfString;
|
|
@@ -102,38 +87,17 @@ const MlVectorTileLayer = (props) => {
|
|
|
102
87
|
|
|
103
88
|
if (layerLayoutConfString !== layerLayoutConfsRef.current[key]) {
|
|
104
89
|
for (let layoutKey in props.layers[key].layout) {
|
|
105
|
-
|
|
106
|
-
.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
props.layers[key].layout[layoutKey]
|
|
111
|
-
);
|
|
90
|
+
mapHook.map.setLayoutProperty(
|
|
91
|
+
layerIdsRef.current[key],
|
|
92
|
+
layoutKey,
|
|
93
|
+
props.layers[key].layout[layoutKey]
|
|
94
|
+
);
|
|
112
95
|
}
|
|
113
96
|
}
|
|
114
97
|
layerLayoutConfsRef.current[key] = layerLayoutConfString;
|
|
115
98
|
}
|
|
116
99
|
}
|
|
117
|
-
}, [props.layers,
|
|
118
|
-
|
|
119
|
-
useEffect(() => {
|
|
120
|
-
if (!mapRef.current) return;
|
|
121
|
-
|
|
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
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}, [props.visible]);
|
|
100
|
+
}, [props.layers, mapHook.map]);
|
|
137
101
|
|
|
138
102
|
return <></>;
|
|
139
103
|
};
|
|
@@ -151,10 +115,6 @@ MlVectorTileLayer.propTypes = {
|
|
|
151
115
|
* Object that hold layers
|
|
152
116
|
*/
|
|
153
117
|
layers: PropTypes.object,
|
|
154
|
-
/**
|
|
155
|
-
* Boolean value to control the visibility of this layer
|
|
156
|
-
*/
|
|
157
|
-
visible: PropTypes.bool,
|
|
158
118
|
/**
|
|
159
119
|
* String of the URL of a wms layer
|
|
160
120
|
*/
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { layerRemovalTest, sourceRemovalTest } from "../../util";
|
|
2
2
|
|
|
3
3
|
import MlVectorTileLayer from "./MlVectorTileLayer";
|
|
4
|
+
import { uuid_regex } from "../../setupTests";
|
|
4
5
|
|
|
5
6
|
const testComponent = (
|
|
6
7
|
<MlVectorTileLayer
|
|
7
8
|
{...{
|
|
8
|
-
url:
|
|
9
|
-
"https://wms.wheregroup.com/tileserver/tile/tileserver.php?/europe-0-14/index.json?/europe-0-14/{z}/{x}/{y}.pbf",
|
|
9
|
+
url: "https://wms.wheregroup.com/tileserver/tile/tileserver.php?/europe-0-14/index.json?/europe-0-14/{z}/{x}/{y}.pbf",
|
|
10
10
|
layers: {
|
|
11
11
|
landuseLine: {
|
|
12
12
|
"source-layer": "landuse",
|
|
@@ -28,12 +28,12 @@ const testComponent = (
|
|
|
28
28
|
layerRemovalTest(
|
|
29
29
|
"<MlVectorTileLayer />",
|
|
30
30
|
testComponent,
|
|
31
|
-
|
|
32
|
-
"
|
|
31
|
+
new RegExp('^.*"MlVectorTileLayer-' + uuid_regex + '_landuseLine".*$'),
|
|
32
|
+
"MlVectorTileLayer-{uuid}_landuseLine"
|
|
33
33
|
);
|
|
34
34
|
sourceRemovalTest(
|
|
35
35
|
"<MlVectorTileLayer />",
|
|
36
36
|
testComponent,
|
|
37
|
-
|
|
38
|
-
"
|
|
37
|
+
new RegExp('^.*"MlVectorTileLayer-' + uuid_regex + '".*$'),
|
|
38
|
+
"MlVectorTileLayer-{uuid}"
|
|
39
39
|
);
|