@mapcomponents/react-maplibre 0.1.59 → 0.1.61
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/.eslintignore +2 -1
- package/CHANGELOG.md +15 -0
- package/coverage/clover.xml +142 -47
- package/coverage/coverage-final.json +5 -4
- package/coverage/lcov-report/index.html +36 -21
- package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MapLibreMap/index.html +1 -1
- package/coverage/lcov-report/src/components/MlCenterPosition/MlCenterPosition.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlCenterPosition/index.html +1 -1
- 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/MlCreatePdfForm/MlCreatePdfForm.tsx.html +2 -2
- package/coverage/lcov-report/src/components/MlCreatePdfForm/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/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/index.html +1 -1
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx.html +1 -1
- package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +1 -1
- 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 +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.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 +1 -1
- package/coverage/lcov-report/src/components/MlMeasureTool/index.html +1 -1
- 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 +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/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 +92 -146
- package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +21 -21
- 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 +1 -1
- package/coverage/lcov-report/src/components/MlWmsLayer/index.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/hooks/useCameraFollowPath/index.html +116 -0
- package/coverage/lcov-report/src/hooks/useCameraFollowPath/useCameraFollowPath.tsx.html +661 -0
- package/coverage/lcov-report/src/hooks/{exportMap → useExportMap}/index.html +3 -3
- package/coverage/lcov-report/src/hooks/{exportMap → useExportMap}/index.ts.html +4 -4
- package/coverage/lcov-report/src/hooks/{exportMap → useExportMap}/lib.ts.html +4 -4
- package/coverage/lcov-report/src/hooks/useLayer.ts.html +1 -1
- package/coverage/lcov-report/src/hooks/useLayerEvent.js.html +1 -1
- package/coverage/lcov-report/src/hooks/useMap.ts.html +4 -4
- package/coverage/lcov-report/src/hooks/useMapState.ts.html +1 -1
- package/coverage/lcov-report/src/hooks/useSource.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 +6 -3
- package/coverage/lcov.info +270 -76
- package/dist/components/MlCreatePdfForm/MlCreatePdfForm.d.ts +1 -1
- package/dist/components/MlCreatePdfForm/lib/PdfForm.d.ts +1 -1
- package/dist/components/MlVectorTileLayer/MlVectorTileLayer.d.ts +5 -24
- package/dist/hooks/useCameraFollowPath/useCameraFollowPath.d.ts +35 -0
- package/dist/hooks/useCameraFollowPath/useCameraFollowPath.stories.d.ts +17 -0
- package/dist/hooks/useExportMap/index.d.ts +11 -0
- package/dist/hooks/useExportMap/lib.d.ts +36 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.esm.js +209 -63
- package/dist/index.esm.js.map +1 -1
- package/package.json +2 -1
- package/scripts/build-catalogue-meta.js +1 -1
- package/src/components/MlCreatePdfForm/MlCreatePdfForm.tsx +1 -1
- package/src/components/MlCreatePdfForm/lib/PdfForm.tsx +5 -5
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.stories.js +15 -9
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.test.js +7 -6
- package/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx +59 -77
- package/src/hooks/useCameraFollowPath/useCameraFollowPath.doc.de.md +4 -0
- package/src/hooks/useCameraFollowPath/useCameraFollowPath.doc.en.md +1 -0
- package/src/hooks/useCameraFollowPath/useCameraFollowPath.meta.json +15 -0
- package/src/hooks/useCameraFollowPath/useCameraFollowPath.stories.tsx +198 -0
- package/src/hooks/useCameraFollowPath/useCameraFollowPath.tsx +192 -0
- package/src/hooks/{exportMap → useExportMap}/index.ts +1 -1
- package/src/hooks/{exportMap → useExportMap}/lib.ts +1 -1
- package/src/index.ts +2 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
interface useCameraFollowPathProps {
|
|
2
|
+
/**
|
|
3
|
+
* Id of the target MapLibre instance in mapContext
|
|
4
|
+
*/
|
|
5
|
+
mapId?: string;
|
|
6
|
+
/**
|
|
7
|
+
* Id of an existing layer in the mapLibre instance to help specify the layer order
|
|
8
|
+
* This layer will be visually beneath the layer with the "insertBeforeLayer" id.
|
|
9
|
+
*/
|
|
10
|
+
insertBeforeLayer?: string;
|
|
11
|
+
pause?: boolean;
|
|
12
|
+
zoom?: number;
|
|
13
|
+
pitch?: number;
|
|
14
|
+
speed?: number;
|
|
15
|
+
kmPerStep?: number;
|
|
16
|
+
route?: any;
|
|
17
|
+
stepDuration?: number;
|
|
18
|
+
timeoutId?: number;
|
|
19
|
+
}
|
|
20
|
+
export type { useCameraFollowPathProps };
|
|
21
|
+
/**
|
|
22
|
+
* Component template
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
declare const useCameraFollowPath: {
|
|
26
|
+
(props: useCameraFollowPathProps): {
|
|
27
|
+
play: () => void;
|
|
28
|
+
reset: () => void;
|
|
29
|
+
};
|
|
30
|
+
defaultProps: {
|
|
31
|
+
mapId: undefined;
|
|
32
|
+
zoom: number;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export default useCameraFollowPath;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare const storyoptions: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: {
|
|
4
|
+
(props: import("./useCameraFollowPath").useCameraFollowPathProps): {
|
|
5
|
+
play: () => void;
|
|
6
|
+
reset: () => void;
|
|
7
|
+
};
|
|
8
|
+
defaultProps: {
|
|
9
|
+
mapId: undefined;
|
|
10
|
+
zoom: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
argTypes: {};
|
|
14
|
+
decorators: ((Story: any) => JSX.Element)[];
|
|
15
|
+
};
|
|
16
|
+
export default storyoptions;
|
|
17
|
+
export declare const ExampleConfig: any;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createExportOptions } from './lib';
|
|
2
|
+
interface exportMapProps {
|
|
3
|
+
/**
|
|
4
|
+
* Id of the target MapLibre instance in mapContext
|
|
5
|
+
*/
|
|
6
|
+
mapId?: string;
|
|
7
|
+
}
|
|
8
|
+
export default function useExportMap(props: exportMapProps): {
|
|
9
|
+
createExport: ((options: Omit<createExportOptions, 'map'> & Partial<Pick<createExportOptions, 'map'>>) => Promise<import("./lib").createExportResolverParams>) | undefined;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Map } from '!maplibre-gl';
|
|
2
|
+
import jsPDF from 'jspdf';
|
|
3
|
+
import MapLibreGlWrapper from '../../components/MapLibreMap/lib/MapLibreGlWrapper';
|
|
4
|
+
import { BBox } from '@turf/turf';
|
|
5
|
+
interface createExportOptions {
|
|
6
|
+
map: MapLibreGlWrapper;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
bbox: BBox;
|
|
10
|
+
bboxUnrotated: BBox;
|
|
11
|
+
bearing: number;
|
|
12
|
+
format: string;
|
|
13
|
+
orientation: string;
|
|
14
|
+
}
|
|
15
|
+
export type { createExportOptions };
|
|
16
|
+
declare const createExport: (options: createExportOptions) => Promise<createExportResolverParams>;
|
|
17
|
+
interface createExportResolverParams extends createExportOptions {
|
|
18
|
+
createPdf: (_options?: createJsPdfOptions) => Promise<createPdfResolverParams>;
|
|
19
|
+
renderMap: Map;
|
|
20
|
+
hiddenContainer: HTMLDivElement;
|
|
21
|
+
}
|
|
22
|
+
export type { createExportResolverParams };
|
|
23
|
+
interface createJsPdfOptions extends createExportOptions {
|
|
24
|
+
renderMap: Map;
|
|
25
|
+
hiddenContainer: HTMLDivElement;
|
|
26
|
+
}
|
|
27
|
+
export type { createJsPdfOptions };
|
|
28
|
+
interface createPdfResolverParams extends createJsPdfOptions {
|
|
29
|
+
pdf: jsPDF;
|
|
30
|
+
downloadPdf: (_options?: downloadPdfOptions) => Promise<downloadPdfOptions>;
|
|
31
|
+
}
|
|
32
|
+
export type { createPdfResolverParams };
|
|
33
|
+
interface downloadPdfOptions extends createJsPdfOptions {
|
|
34
|
+
pdf: jsPDF;
|
|
35
|
+
}
|
|
36
|
+
export { createExport };
|
package/dist/index.d.ts
CHANGED
|
@@ -29,7 +29,8 @@ export { default as useMapState } from "./hooks/useMapState";
|
|
|
29
29
|
export { default as useMap } from "./hooks/useMap";
|
|
30
30
|
export { default as useWms } from "./hooks/useWms.js";
|
|
31
31
|
export { default as useSource } from "./hooks/useSource";
|
|
32
|
-
export { default as useExportMap } from "./hooks/
|
|
32
|
+
export { default as useExportMap } from "./hooks/useExportMap";
|
|
33
|
+
export { default as useCameraFollowPath } from "./hooks/useCameraFollowPath/useCameraFollowPath";
|
|
33
34
|
export { MapComponentsProvider } from "./contexts/MapContext";
|
|
34
35
|
export { default as MapContext } from "./contexts/MapContext";
|
|
35
36
|
export { default as SimpleDataProvider } from "./contexts/SimpleDataProvider";
|
package/dist/index.esm.js
CHANGED
|
@@ -10621,7 +10621,7 @@ var createExport = function (options) {
|
|
|
10621
10621
|
_loop_1(name_1);
|
|
10622
10622
|
}
|
|
10623
10623
|
// Create a new MapLibre-gl instance
|
|
10624
|
-
var renderMap = new Map$
|
|
10624
|
+
var renderMap = new Map$1({
|
|
10625
10625
|
container: container,
|
|
10626
10626
|
center: options.map.map.getCenter(),
|
|
10627
10627
|
zoom: options.map.map.getZoom(),
|
|
@@ -10698,7 +10698,7 @@ function downloadPdf(options) {
|
|
|
10698
10698
|
});
|
|
10699
10699
|
}
|
|
10700
10700
|
|
|
10701
|
-
function
|
|
10701
|
+
function useExportMap(props) {
|
|
10702
10702
|
var mapHook = useMap({ mapId: props.mapId });
|
|
10703
10703
|
var _createExport = useMemo(function () {
|
|
10704
10704
|
if (mapHook.map) {
|
|
@@ -10733,7 +10733,7 @@ function PdfForm(props) {
|
|
|
10733
10733
|
// eslint-disable-next-line react/prop-types
|
|
10734
10734
|
mapId: props.mapId,
|
|
10735
10735
|
});
|
|
10736
|
-
var mapExporter =
|
|
10736
|
+
var mapExporter = useExportMap({ mapId: props.mapId });
|
|
10737
10737
|
var createPdfHandler = useCallback(function () {
|
|
10738
10738
|
var _a, _b, _c, _d, _e;
|
|
10739
10739
|
if (mapHook.map &&
|
|
@@ -14269,89 +14269,84 @@ var MlVectorTileLayer = function (props) {
|
|
|
14269
14269
|
mapId: props.mapId,
|
|
14270
14270
|
waitForLayer: props.insertBeforeLayer,
|
|
14271
14271
|
});
|
|
14272
|
-
var
|
|
14273
|
-
var layerId = useRef(props.layerId || "MlVectorTileLayer-" + mapHook.componentId);
|
|
14272
|
+
var layerId = useRef(props.layerId || 'MlVectorTileLayer-' + mapHook.componentId);
|
|
14274
14273
|
var layerPaintConfsRef = useRef({});
|
|
14275
14274
|
var layerLayoutConfsRef = useRef({});
|
|
14276
14275
|
var initializedRef = useRef(false);
|
|
14277
|
-
var
|
|
14276
|
+
var createLayers = useCallback(function () {
|
|
14278
14277
|
if (!mapHook.map)
|
|
14279
14278
|
return;
|
|
14280
14279
|
initializedRef.current = true;
|
|
14281
|
-
if (mapHook.map.map.
|
|
14280
|
+
if (mapHook.map.map.getSource(layerId.current)) {
|
|
14282
14281
|
mapHook.cleanup();
|
|
14283
14282
|
}
|
|
14284
|
-
// Add the new layer to the
|
|
14285
|
-
mapHook.map.addSource(layerId.current, __assign({ type:
|
|
14286
|
-
|
|
14287
|
-
|
|
14288
|
-
|
|
14289
|
-
mapHook.map.addLayer(__assign({
|
|
14290
|
-
|
|
14291
|
-
|
|
14292
|
-
|
|
14293
|
-
} },
|
|
14294
|
-
layerPaintConfsRef.current[
|
|
14295
|
-
layerLayoutConfsRef.current[
|
|
14283
|
+
// Add the new layer to the maplibre instance once it is available
|
|
14284
|
+
mapHook.map.addSource(layerId.current, __assign({ type: 'vector', tiles: [props.url], tileSize: 512, attribution: '' }, props.sourceOptions), mapHook.componentId);
|
|
14285
|
+
props.layers.forEach(function (layer) {
|
|
14286
|
+
if (!mapHook.map)
|
|
14287
|
+
return;
|
|
14288
|
+
mapHook.map.addLayer(__assign({ source: layerId.current, minzoom: 0, maxzoom: 22, layout: {}, paint: {
|
|
14289
|
+
'line-opacity': 0.5,
|
|
14290
|
+
'line-color': 'rgb(80, 80, 80)',
|
|
14291
|
+
'line-width': 2,
|
|
14292
|
+
} }, layer), props.insertBeforeLayer, mapHook.componentId);
|
|
14293
|
+
layerPaintConfsRef.current[layer.id] = JSON.stringify(layer.paint);
|
|
14294
|
+
layerLayoutConfsRef.current[layer.id] = JSON.stringify(layer.layout);
|
|
14296
14295
|
// recreate layer if style has changed
|
|
14297
|
-
mapHook.map.on(
|
|
14296
|
+
mapHook.map.on('styledata', function () {
|
|
14298
14297
|
var _a;
|
|
14299
14298
|
if (initializedRef.current && !((_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getSource(layerId.current))) {
|
|
14300
|
-
console.log(
|
|
14301
|
-
|
|
14299
|
+
console.log('Recreate Layer ' + layerId.current);
|
|
14300
|
+
createLayers();
|
|
14302
14301
|
}
|
|
14303
14302
|
}, mapHook.componentId);
|
|
14304
|
-
}
|
|
14303
|
+
});
|
|
14305
14304
|
}, [mapHook.map, props]);
|
|
14306
|
-
|
|
14307
|
-
if (initializedRef.current)
|
|
14308
|
-
return;
|
|
14309
|
-
createLayer();
|
|
14310
|
-
}, [createLayer]);
|
|
14311
|
-
useEffect(function () {
|
|
14312
|
-
if (!mapHook.map || !initializedRef.current)
|
|
14305
|
+
var updateLayers = useCallback(function () {
|
|
14306
|
+
if (!initializedRef.current)
|
|
14313
14307
|
return;
|
|
14314
|
-
|
|
14315
|
-
|
|
14316
|
-
|
|
14308
|
+
props.layers.forEach(function (layer) {
|
|
14309
|
+
if (!mapHook.map)
|
|
14310
|
+
return;
|
|
14311
|
+
if (mapHook.map.map.getLayer(layer.id)) {
|
|
14317
14312
|
// update changed paint property
|
|
14318
|
-
var layerPaintConfString = JSON.stringify(
|
|
14319
|
-
if (layerPaintConfString !== layerPaintConfsRef.current[
|
|
14320
|
-
for (var paintKey in
|
|
14321
|
-
mapHook.map.map.setPaintProperty(
|
|
14313
|
+
var layerPaintConfString = JSON.stringify(layer.paint);
|
|
14314
|
+
if (layerPaintConfString !== layerPaintConfsRef.current[layer.id]) {
|
|
14315
|
+
for (var paintKey in layer.paint) {
|
|
14316
|
+
mapHook.map.map.setPaintProperty(layer.id, paintKey, layer.paint[paintKey]);
|
|
14322
14317
|
}
|
|
14323
14318
|
}
|
|
14324
|
-
layerPaintConfsRef.current[
|
|
14319
|
+
layerPaintConfsRef.current[layer.id] = layerPaintConfString;
|
|
14325
14320
|
// update changed layout property
|
|
14326
|
-
var layerLayoutConfString = JSON.stringify(
|
|
14327
|
-
if (layerLayoutConfString !== layerLayoutConfsRef.current[
|
|
14328
|
-
for (var layoutKey in
|
|
14329
|
-
mapHook.map.map.setLayoutProperty(
|
|
14321
|
+
var layerLayoutConfString = JSON.stringify(layer.layout);
|
|
14322
|
+
if (layerLayoutConfString !== layerLayoutConfsRef.current[layer.id]) {
|
|
14323
|
+
for (var layoutKey in layer.layout) {
|
|
14324
|
+
mapHook.map.map.setLayoutProperty(layer.id, layoutKey, layer.layout[layoutKey]);
|
|
14330
14325
|
}
|
|
14331
14326
|
}
|
|
14332
|
-
layerLayoutConfsRef.current[
|
|
14327
|
+
layerLayoutConfsRef.current[layer.id] = layerLayoutConfString;
|
|
14333
14328
|
}
|
|
14334
|
-
}
|
|
14329
|
+
});
|
|
14330
|
+
}, [mapHook.map, props.layers]);
|
|
14331
|
+
// initial layer creation
|
|
14332
|
+
useEffect(function () {
|
|
14333
|
+
if (initializedRef.current)
|
|
14334
|
+
return;
|
|
14335
|
+
createLayers();
|
|
14336
|
+
}, [createLayers]);
|
|
14337
|
+
// if layers get removed or added
|
|
14338
|
+
useEffect(function () {
|
|
14339
|
+
if (!mapHook.map || !initializedRef.current)
|
|
14340
|
+
return;
|
|
14341
|
+
createLayers();
|
|
14342
|
+
}, [props.layers.length, mapHook.map]);
|
|
14343
|
+
// on layout/paint update
|
|
14344
|
+
useEffect(function () {
|
|
14345
|
+
if (!mapHook.map || !initializedRef.current)
|
|
14346
|
+
return;
|
|
14347
|
+
updateLayers();
|
|
14335
14348
|
}, [props.layers, mapHook.map]);
|
|
14336
14349
|
return React__default.createElement(React__default.Fragment, null);
|
|
14337
|
-
};
|
|
14338
|
-
MlVectorTileLayer.propTypes = {
|
|
14339
|
-
/**
|
|
14340
|
-
* Id of the target MapLibre instance in mapContext
|
|
14341
|
-
*/
|
|
14342
|
-
mapId: PropTypes.string,
|
|
14343
|
-
/**
|
|
14344
|
-
* Options object that will be used as first parameter on the MapLibreGl.addSource call see MapLibre source options documentation.
|
|
14345
|
-
*/
|
|
14346
|
-
sourceOptions: PropTypes.object,
|
|
14347
|
-
/**
|
|
14348
|
-
* Object that hold layers
|
|
14349
|
-
*/
|
|
14350
|
-
layers: PropTypes.object,
|
|
14351
|
-
/**
|
|
14352
|
-
* String of the URL of a wms layer
|
|
14353
|
-
*/
|
|
14354
|
-
url: PropTypes.string,
|
|
14355
14350
|
};
|
|
14356
14351
|
|
|
14357
14352
|
var defaultProps = {
|
|
@@ -19683,6 +19678,157 @@ function useSource(props) {
|
|
|
19683
19678
|
};
|
|
19684
19679
|
}
|
|
19685
19680
|
|
|
19681
|
+
/**
|
|
19682
|
+
* Component template
|
|
19683
|
+
*
|
|
19684
|
+
*/
|
|
19685
|
+
var useCameraFollowPath = function (props) {
|
|
19686
|
+
// Use a useRef hook to reference the layer object to be able to access it later inside useEffect hooks
|
|
19687
|
+
// without the requirement of adding it to the dependency list (ignore the false eslint exhaustive deps warning)
|
|
19688
|
+
var initializedRef = useRef(false);
|
|
19689
|
+
var pause = useRef(props.pause);
|
|
19690
|
+
var zoom = useRef(props.zoom);
|
|
19691
|
+
var pitch = useRef(props.pitch);
|
|
19692
|
+
var step = useRef(1);
|
|
19693
|
+
var speed = useRef(props.speed);
|
|
19694
|
+
var timeoutId = useRef();
|
|
19695
|
+
var kmPerStep = props.kmPerStep || 0.01;
|
|
19696
|
+
var routeDistance = turf.lineDistance(props.route);
|
|
19697
|
+
var stepDuration = props.stepDuration || 70;
|
|
19698
|
+
var mapHook = useMap({
|
|
19699
|
+
mapId: props.mapId,
|
|
19700
|
+
waitForLayer: props.insertBeforeLayer,
|
|
19701
|
+
});
|
|
19702
|
+
useEffect(function () {
|
|
19703
|
+
pause.current = props.pause;
|
|
19704
|
+
if (!pause.current) {
|
|
19705
|
+
play();
|
|
19706
|
+
}
|
|
19707
|
+
}, [props.pause]);
|
|
19708
|
+
useEffect(function () {
|
|
19709
|
+
if (!mapHook.map)
|
|
19710
|
+
return;
|
|
19711
|
+
zoom.current = props.zoom;
|
|
19712
|
+
if (typeof zoom.current !== 'undefined' && mapHook.map.map.getZoom() !== zoom.current) {
|
|
19713
|
+
mapHook.map.map.setZoom(zoom.current);
|
|
19714
|
+
}
|
|
19715
|
+
}, [mapHook.map, props.zoom]);
|
|
19716
|
+
useEffect(function () {
|
|
19717
|
+
if (!mapHook.map)
|
|
19718
|
+
return;
|
|
19719
|
+
pitch.current = props.pitch;
|
|
19720
|
+
if (typeof pitch.current !== 'undefined' && pitch.current !== mapHook.map.map.getPitch()) {
|
|
19721
|
+
mapHook.map.map.setPitch(pitch.current);
|
|
19722
|
+
}
|
|
19723
|
+
}, [mapHook.map, props.pitch]);
|
|
19724
|
+
useEffect(function () {
|
|
19725
|
+
speed.current = props.speed;
|
|
19726
|
+
}, [props.speed]);
|
|
19727
|
+
var disableInteractivity = useCallback(function () {
|
|
19728
|
+
if (!mapHook.map)
|
|
19729
|
+
return;
|
|
19730
|
+
mapHook.map.map['scrollZoom'].disable();
|
|
19731
|
+
mapHook.map.map['boxZoom'].disable();
|
|
19732
|
+
mapHook.map.map['dragRotate'].disable();
|
|
19733
|
+
mapHook.map.map['dragPan'].disable();
|
|
19734
|
+
mapHook.map.map['keyboard'].disable();
|
|
19735
|
+
mapHook.map.map['doubleClickZoom'].disable();
|
|
19736
|
+
mapHook.map.map['touchZoomRotate'].disable();
|
|
19737
|
+
}, [mapHook.map]);
|
|
19738
|
+
var enableInteractivity = useCallback(function () {
|
|
19739
|
+
if (!mapHook.map)
|
|
19740
|
+
return;
|
|
19741
|
+
mapHook.map.map['scrollZoom'].enable();
|
|
19742
|
+
mapHook.map.map['boxZoom'].enable();
|
|
19743
|
+
mapHook.map.map['dragRotate'].enable();
|
|
19744
|
+
mapHook.map.map['dragPan'].enable();
|
|
19745
|
+
mapHook.map.map['keyboard'].enable();
|
|
19746
|
+
mapHook.map.map['doubleClickZoom'].enable();
|
|
19747
|
+
mapHook.map.map['touchZoomRotate'].enable();
|
|
19748
|
+
}, [mapHook.map]);
|
|
19749
|
+
function centerRoute() {
|
|
19750
|
+
if (!mapHook.map || !props.route)
|
|
19751
|
+
return;
|
|
19752
|
+
var bbox = turf.bbox(props.route);
|
|
19753
|
+
var bounds;
|
|
19754
|
+
if (bbox && bbox.length > 3) {
|
|
19755
|
+
bounds = [
|
|
19756
|
+
[bbox[0], bbox[1]],
|
|
19757
|
+
[bbox[2], bbox[3]],
|
|
19758
|
+
];
|
|
19759
|
+
mapHook.map.map.fitBounds(bounds, { padding: 100 });
|
|
19760
|
+
}
|
|
19761
|
+
}
|
|
19762
|
+
function play() {
|
|
19763
|
+
if (!mapHook.map)
|
|
19764
|
+
return;
|
|
19765
|
+
if (!pause.current) {
|
|
19766
|
+
disableInteractivity();
|
|
19767
|
+
if (typeof zoom.current !== 'undefined' && mapHook.map.map.getZoom() !== zoom.current) {
|
|
19768
|
+
mapHook.map.map.setZoom(zoom.current);
|
|
19769
|
+
}
|
|
19770
|
+
var alongRoutelati = turf.along(props.route, step.current * kmPerStep).geometry
|
|
19771
|
+
.coordinates;
|
|
19772
|
+
if (step.current * kmPerStep < routeDistance) {
|
|
19773
|
+
mapHook.map.map.easeTo({
|
|
19774
|
+
center: alongRoutelati,
|
|
19775
|
+
bearing: turf.bearing(turf.point([mapHook.map.map.getCenter().lng, mapHook.map.map.getCenter().lat]), turf.point(alongRoutelati)),
|
|
19776
|
+
duration: stepDuration,
|
|
19777
|
+
essential: true,
|
|
19778
|
+
});
|
|
19779
|
+
if (typeof speed.current !== 'undefined') {
|
|
19780
|
+
step.current = step.current + speed.current;
|
|
19781
|
+
}
|
|
19782
|
+
else {
|
|
19783
|
+
step.current++;
|
|
19784
|
+
}
|
|
19785
|
+
console.log('PAN MOVE');
|
|
19786
|
+
setTimeout(function () {
|
|
19787
|
+
play();
|
|
19788
|
+
}, 100);
|
|
19789
|
+
}
|
|
19790
|
+
else {
|
|
19791
|
+
mapHook.map.map.setPitch(0);
|
|
19792
|
+
centerRoute();
|
|
19793
|
+
enableInteractivity();
|
|
19794
|
+
console.log('ENABLE CONTROLS');
|
|
19795
|
+
step.current = 1;
|
|
19796
|
+
}
|
|
19797
|
+
}
|
|
19798
|
+
else {
|
|
19799
|
+
enableInteractivity();
|
|
19800
|
+
}
|
|
19801
|
+
}
|
|
19802
|
+
function reset() {
|
|
19803
|
+
if (!mapHook.map)
|
|
19804
|
+
return;
|
|
19805
|
+
centerRoute();
|
|
19806
|
+
enableInteractivity();
|
|
19807
|
+
step.current = 1;
|
|
19808
|
+
}
|
|
19809
|
+
useEffect(function () {
|
|
19810
|
+
if (!mapHook.map || initializedRef.current)
|
|
19811
|
+
return;
|
|
19812
|
+
initializedRef.current = true;
|
|
19813
|
+
centerRoute();
|
|
19814
|
+
}, [mapHook.map]);
|
|
19815
|
+
useEffect(function () {
|
|
19816
|
+
return function () {
|
|
19817
|
+
if (timeoutId.current) {
|
|
19818
|
+
clearTimeout(timeoutId.current);
|
|
19819
|
+
}
|
|
19820
|
+
};
|
|
19821
|
+
}, []);
|
|
19822
|
+
return {
|
|
19823
|
+
play: play,
|
|
19824
|
+
reset: reset,
|
|
19825
|
+
};
|
|
19826
|
+
};
|
|
19827
|
+
useCameraFollowPath.defaultProps = {
|
|
19828
|
+
mapId: undefined,
|
|
19829
|
+
zoom: 18,
|
|
19830
|
+
};
|
|
19831
|
+
|
|
19686
19832
|
var SimpleDataContext = /*#__PURE__*/React__default.createContext({});
|
|
19687
19833
|
var SimpleDataContextProvider = SimpleDataContext.Provider;
|
|
19688
19834
|
|
|
@@ -19745,5 +19891,5 @@ SimpleDataProvider.propTypes = {
|
|
|
19745
19891
|
children: PropTypes.node.isRequired
|
|
19746
19892
|
};
|
|
19747
19893
|
|
|
19748
|
-
export { GeoJsonContext, GeoJsonProvider, MapComponentsProvider, MapContext, MapLibreMap, MlBasicComponent, MlComponentTemplate, MlCreatePdfButton, MlCreatePdfForm, MlFeatureEditor, MlFillExtrusionLayer, MlFollowGps, MlGPXViewer, MlGeoJsonLayer, MlImageMarkerLayer, MlLayer, MlLayerMagnify, MlLayerSwipe, MlMarker, MlMeasureTool, MlNavigationCompass, MlNavigationTools, MlOsmLayer, MlScaleReference, MlSpatialElevationProfile, MlTransitionGeoJsonLayer, MlVectorTileLayer, MlWmsLayer, SimpleDataContext, SimpleDataProvider,
|
|
19894
|
+
export { GeoJsonContext, GeoJsonProvider, MapComponentsProvider, MapContext, MapLibreMap, MlBasicComponent, MlComponentTemplate, MlCreatePdfButton, MlCreatePdfForm, MlFeatureEditor, MlFillExtrusionLayer, MlFollowGps, MlGPXViewer, MlGeoJsonLayer, MlImageMarkerLayer, MlLayer, MlLayerMagnify, MlLayerSwipe, MlMarker, MlMeasureTool, MlNavigationCompass, MlNavigationTools, MlOsmLayer, MlScaleReference, MlSpatialElevationProfile, MlTransitionGeoJsonLayer, MlVectorTileLayer, MlWmsLayer, SimpleDataContext, SimpleDataProvider, useCameraFollowPath, useExportMap, useLayer, useMap, useMapState, useSource, useWms };
|
|
19749
19895
|
//# sourceMappingURL=index.esm.js.map
|