@mapcomponents/react-maplibre 0.1.46 → 0.1.48

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.
Files changed (157) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/coverage/clover.xml +14 -10
  3. package/coverage/coverage-final.json +1 -1
  4. package/coverage/lcov-report/index.html +17 -17
  5. package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.tsx.html +1 -1
  6. package/coverage/lcov-report/src/components/MapLibreMap/index.html +1 -1
  7. package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx.html +1 -1
  8. package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +1 -1
  9. package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.tsx.html +4 -4
  10. package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +1 -1
  11. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx.html +1 -1
  12. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +1 -1
  13. package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.tsx.html +1 -1
  14. package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
  15. package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.tsx.html +1 -1
  16. package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +1 -1
  17. package/coverage/lcov-report/src/components/MlGPXViewer/index.html +1 -1
  18. package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx.html +1 -1
  19. package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +1 -1
  20. package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx.html +1 -1
  21. package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +1 -1
  22. package/coverage/lcov-report/src/components/MlLayer/MlLayer.tsx.html +1 -1
  23. package/coverage/lcov-report/src/components/MlLayer/index.html +1 -1
  24. package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.tsx.html +1 -1
  25. package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +1 -1
  26. package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.tsx.html +1 -1
  27. package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +1 -1
  28. package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +1 -1
  29. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +1 -1
  30. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +1 -1
  31. package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +1 -1
  32. package/coverage/lcov-report/src/components/MlMarker/MlMarker.tsx.html +1 -1
  33. package/coverage/lcov-report/src/components/MlMarker/index.html +1 -1
  34. package/coverage/lcov-report/src/components/MlMeasureTool/MlMeasureTool.tsx.html +103 -22
  35. package/coverage/lcov-report/src/components/MlMeasureTool/index.html +15 -15
  36. package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.tsx.html +1 -1
  37. package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +1 -1
  38. package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.tsx.html +1 -1
  39. package/coverage/lcov-report/src/components/MlNavigationTools/index.html +1 -1
  40. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +1 -1
  41. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.stories_.js.html +1 -1
  42. package/coverage/lcov-report/src/components/MlOsmLayer/index.html +1 -1
  43. package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +1 -1
  44. package/coverage/lcov-report/src/components/MlScaleReference/index.html +1 -1
  45. package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +1 -1
  46. package/coverage/lcov-report/src/components/MlShareMapState/index.html +1 -1
  47. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +1 -1
  48. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +1 -1
  49. package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +1 -1
  50. package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +1 -1
  51. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx.html +1 -1
  52. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/index.html +1 -1
  53. package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +1 -1
  54. package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
  55. package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx.html +1 -1
  56. package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +1 -1
  57. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +1 -1
  58. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +1 -1
  59. package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.tsx.html +1 -1
  60. package/coverage/lcov-report/src/components/MlWmsLayer/index.html +1 -1
  61. package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.tsx.html +2 -2
  62. package/coverage/lcov-report/src/components/MlWmsLoader/index.html +1 -1
  63. package/coverage/lcov-report/src/contexts/MapContext.tsx.html +1 -1
  64. package/coverage/lcov-report/src/contexts/SimpleDataContext.js.html +1 -1
  65. package/coverage/lcov-report/src/contexts/SimpleDataProvider.js.html +1 -1
  66. package/coverage/lcov-report/src/contexts/index.html +1 -1
  67. package/coverage/lcov-report/src/hooks/index.html +1 -1
  68. package/coverage/lcov-report/src/hooks/useLayer.ts.html +1 -1
  69. package/coverage/lcov-report/src/hooks/useMap.ts.html +1 -1
  70. package/coverage/lcov-report/src/hooks/useMapState.ts.html +1 -1
  71. package/coverage/lcov-report/src/hooks/useWms.js.html +2 -2
  72. package/coverage/lcov-report/src/index.html +1 -1
  73. package/coverage/lcov-report/src/index.ts.html +5 -2
  74. package/coverage/lcov.info +35 -23
  75. package/dist/index.esm.js +37 -2
  76. package/dist/index.esm.js.map +1 -1
  77. package/docs-build/{0.0ee4f98c.iframe.bundle.js → 0.968bdc5f.iframe.bundle.js} +2 -2
  78. package/docs-build/0.968bdc5f.iframe.bundle.js.map +1 -0
  79. package/docs-build/{1.bb3cf738.iframe.bundle.js → 1.3530bc86.iframe.bundle.js} +3 -3
  80. package/docs-build/1.3530bc86.iframe.bundle.js.map +1 -0
  81. package/docs-build/{17.97db5b3f.iframe.bundle.js → 17.c96fb6bc.iframe.bundle.js} +2 -2
  82. package/docs-build/17.c96fb6bc.iframe.bundle.js.map +1 -0
  83. package/docs-build/{18.f8d843df.iframe.bundle.js → 18.0947f810.iframe.bundle.js} +3 -3
  84. package/docs-build/18.0947f810.iframe.bundle.js.map +1 -0
  85. package/docs-build/{19.c45e6b08.iframe.bundle.js → 19.44204e5a.iframe.bundle.js} +2 -2
  86. package/docs-build/19.44204e5a.iframe.bundle.js.map +1 -0
  87. package/docs-build/{2.42c790e4.iframe.bundle.js → 2.c62e9630.iframe.bundle.js} +2 -2
  88. package/docs-build/2.c62e9630.iframe.bundle.js.map +1 -0
  89. package/docs-build/{20.120bbcfb.iframe.bundle.js → 20.50a2ad76.iframe.bundle.js} +2 -2
  90. package/docs-build/20.50a2ad76.iframe.bundle.js.map +1 -0
  91. package/docs-build/{21.37c885f1.iframe.bundle.js → 21.ce55b70e.iframe.bundle.js} +2 -2
  92. package/docs-build/21.ce55b70e.iframe.bundle.js.map +1 -0
  93. package/docs-build/{22.7fbc99f4.iframe.bundle.js → 22.639c6bb4.iframe.bundle.js} +2 -2
  94. package/docs-build/22.639c6bb4.iframe.bundle.js.map +1 -0
  95. package/docs-build/{3.1a37a83e.iframe.bundle.js → 3.afb0e0a5.iframe.bundle.js} +2 -2
  96. package/docs-build/3.afb0e0a5.iframe.bundle.js.map +1 -0
  97. package/docs-build/catalogue/mc_meta.json +1 -1
  98. package/docs-build/iframe.html +1 -1
  99. package/docs-build/main~24120820.e956ad2c.iframe.bundle.js +2 -0
  100. package/docs-build/main~24120820.e956ad2c.iframe.bundle.js.map +1 -0
  101. package/docs-build/{vendors~main~0ad7406a.93aea1be.iframe.bundle.js → vendors~main~0ad7406a.834c9ace.iframe.bundle.js} +3 -3
  102. package/docs-build/vendors~main~0ad7406a.834c9ace.iframe.bundle.js.map +1 -0
  103. package/docs-build/vendors~main~0f485567.7297d057.iframe.bundle.js +2 -0
  104. package/docs-build/vendors~main~0f485567.7297d057.iframe.bundle.js.map +1 -0
  105. package/docs-build/{vendors~main~41a6ab2c.da377733.iframe.bundle.js → vendors~main~41a6ab2c.19d97527.iframe.bundle.js} +2 -2
  106. package/docs-build/vendors~main~41a6ab2c.19d97527.iframe.bundle.js.map +1 -0
  107. package/docs-build/{vendors~main~57c1f6cb.86178471.iframe.bundle.js → vendors~main~57c1f6cb.8a8dd47e.iframe.bundle.js} +2 -2
  108. package/docs-build/vendors~main~57c1f6cb.8a8dd47e.iframe.bundle.js.map +1 -0
  109. package/docs-build/{vendors~main~73914085.e2f34f8e.iframe.bundle.js → vendors~main~73914085.2e61c0dc.iframe.bundle.js} +13 -13
  110. package/docs-build/vendors~main~73914085.2e61c0dc.iframe.bundle.js.map +1 -0
  111. package/docs-build/{vendors~main~9c5b28f6.eefa7445.iframe.bundle.js → vendors~main~9c5b28f6.32356887.iframe.bundle.js} +3 -3
  112. package/docs-build/vendors~main~9c5b28f6.32356887.iframe.bundle.js.map +1 -0
  113. package/docs-build/vendors~main~b5906859.94dc520a.iframe.bundle.js +21 -0
  114. package/docs-build/vendors~main~b5906859.94dc520a.iframe.bundle.js.map +1 -0
  115. package/docs-build/{vendors~main~b8f44717.7b869975.iframe.bundle.js → vendors~main~b8f44717.8669cfb8.iframe.bundle.js} +2 -2
  116. package/docs-build/vendors~main~b8f44717.8669cfb8.iframe.bundle.js.map +1 -0
  117. package/docs-build/{vendors~main~b9cf3951.62d39717.iframe.bundle.js → vendors~main~b9cf3951.2a2025c3.iframe.bundle.js} +11 -11
  118. package/docs-build/vendors~main~b9cf3951.2a2025c3.iframe.bundle.js.map +1 -0
  119. package/docs-build/vendors~main~d939e436.bb2b0303.iframe.bundle.js +2 -0
  120. package/docs-build/vendors~main~d939e436.bb2b0303.iframe.bundle.js.map +1 -0
  121. package/docs-build/vendors~main~f420d588.3481b43e.iframe.bundle.js +107 -0
  122. package/docs-build/vendors~main~f420d588.3481b43e.iframe.bundle.js.map +1 -0
  123. package/package.json +1 -1
  124. package/public/catalogue/mc_meta.json +1 -0
  125. package/src/components/MlFeatureEditor/MlFeatureEditor.tsx +3 -3
  126. package/src/components/MlMeasureTool/MlMeasureTool.stories.js +68 -39
  127. package/src/components/MlMeasureTool/MlMeasureTool.tsx +38 -11
  128. package/src/components/MlWmsLoader/MlWmsLoader.tsx +1 -1
  129. package/src/hooks/useWms.js +1 -1
  130. package/src/index.ts +1 -0
  131. package/docs-build/0.0ee4f98c.iframe.bundle.js.map +0 -1
  132. package/docs-build/1.bb3cf738.iframe.bundle.js.map +0 -1
  133. package/docs-build/17.97db5b3f.iframe.bundle.js.map +0 -1
  134. package/docs-build/18.f8d843df.iframe.bundle.js.map +0 -1
  135. package/docs-build/19.c45e6b08.iframe.bundle.js.map +0 -1
  136. package/docs-build/2.42c790e4.iframe.bundle.js.map +0 -1
  137. package/docs-build/20.120bbcfb.iframe.bundle.js.map +0 -1
  138. package/docs-build/21.37c885f1.iframe.bundle.js.map +0 -1
  139. package/docs-build/22.7fbc99f4.iframe.bundle.js.map +0 -1
  140. package/docs-build/3.1a37a83e.iframe.bundle.js.map +0 -1
  141. package/docs-build/main~24120820.905c51c8.iframe.bundle.js +0 -2
  142. package/docs-build/main~24120820.905c51c8.iframe.bundle.js.map +0 -1
  143. package/docs-build/vendors~main~0ad7406a.93aea1be.iframe.bundle.js.map +0 -1
  144. package/docs-build/vendors~main~0f485567.6e7163ef.iframe.bundle.js +0 -2
  145. package/docs-build/vendors~main~0f485567.6e7163ef.iframe.bundle.js.map +0 -1
  146. package/docs-build/vendors~main~41a6ab2c.da377733.iframe.bundle.js.map +0 -1
  147. package/docs-build/vendors~main~57c1f6cb.86178471.iframe.bundle.js.map +0 -1
  148. package/docs-build/vendors~main~73914085.e2f34f8e.iframe.bundle.js.map +0 -1
  149. package/docs-build/vendors~main~9c5b28f6.eefa7445.iframe.bundle.js.map +0 -1
  150. package/docs-build/vendors~main~b5906859.210afc21.iframe.bundle.js +0 -21
  151. package/docs-build/vendors~main~b5906859.210afc21.iframe.bundle.js.map +0 -1
  152. package/docs-build/vendors~main~b8f44717.7b869975.iframe.bundle.js.map +0 -1
  153. package/docs-build/vendors~main~b9cf3951.62d39717.iframe.bundle.js.map +0 -1
  154. package/docs-build/vendors~main~d939e436.394e3bc7.iframe.bundle.js +0 -2
  155. package/docs-build/vendors~main~d939e436.394e3bc7.iframe.bundle.js.map +0 -1
  156. package/docs-build/vendors~main~f420d588.88814a6a.iframe.bundle.js +0 -107
  157. package/docs-build/vendors~main~f420d588.88814a6a.iframe.bundle.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"MlCreatePdfButton":{"name":"MlCreatePdfButton","title":"Export PDF","description":"Creates a PDF file with the current map view.","i18n":{"de":{"title":"PDF Export","description":"Erzeugt eine PDF Datei aus der aktuellen Kartenansicht."}},"tags":["Map add-on"],"category":"add-ons","type":"component","price":5000},"MlFeatureEditor":{"name":"MlFeatureEditor","title":"Sketch tools","description":"Enables the editing of Point, Linestring and Polygon GeoJSON Files.","i18n":{"de":{"title":"Skizzen Werkzeug","description":"Erzeugen und Bearbeiten von Objekten."}},"tags":["Map add-on"],"category":"add-ons","type":"component","price":0},"MlFillExtrusionLayer":{"name":"MlFillExtrusionLayer","title":"Simple 3D buildings","description":"Draws a level, out of the building outline and the height, extrudes 3D Objects as buildings.","i18n":{"de":{"title":"3D Gebäude","description":"Zeichnet eine Ebene mit einfach, aus den Gebäudeumrissen und anhand der Höhen, extrudierten 3D Objekten als Gebäude."}},"tags":["Map add-on"],"category":"add-ons","type":"component","price":5000},"MlFollowGps":{"name":"MlFollowGps","title":"GPS tracker","description":"","i18n":{"de":{"title":"GPS-Tracker","description":""}},"tags":[],"category":"","type":"component","price":0},"MlGeoJsonLayer":{"name":"MlGeoJsonLayer","title":"GeoJSON layer","description":"","i18n":{"de":{"title":"GeoJSON Darstellung","description":""}},"tags":[],"category":"","type":"component","price":0},"MlGPXViewer":{"name":"MlGPXViewer","title":"GPX viewer","description":"","i18n":{"de":{"title":"GPX Darstellung","description":""}},"tags":["Map add-on"],"category":"add-ons","type":"component","price":5000},"MlLayerMagnify":{"name":"MlLayerMagnify","title":"Map magnifier","description":"Hides a part of a map that is superimposed on another MapLibre map.","i18n":{"de":{"title":"Kartenlupe","description":"Kartenlupe blendet einen Teil einer, von zwei übereinanderliegenden, MapLibre Karten aus."}},"tags":["Map add-on"],"category":"add-ons","type":"component","price":5000},"MlLayerSwipe":{"name":"MlLayerSwipe","title":"Map curtain","description":"Map curtain hides an area of the top one of two overlaying MapLibre maps.","i18n":{"de":{"title":"Kartenvorhang","description":"Kartenvorhangs blendet einen Teil einer, von zwei übereinanderliegenden, MapLibre Karten aus."}},"tags":["Map add-on"],"category":"add-ons","type":"component","price":5000},"MlMeasureTool":{"name":"MlMeasureTool","title":"Measure tool","description":"","i18n":{"de":{"title":"Messwerkzeug","description":""}},"tags":[],"category":"","type":"component","price":0},"MlNavigationCompass":{"name":"MlNavigationCompass","title":"Compass","description":"","i18n":{"de":{"title":"Kompass","description":""}},"tags":[],"category":"","type":"component","price":0},"MlNavigationTools":{"name":"MlNavigationTools","title":"Navigation tools","description":"","i18n":{"de":{"title":"Navigationswerkzeuge","description":""}},"tags":[],"category":"","type":"component","price":0},"MlScaleReference":{"name":"MlScaleReference","title":"Reference scale","description":"","i18n":{"de":{"title":"Maßstabsreferenz","description":""}},"tags":[],"category":"","type":"component","price":0},"MlSpatialElevationProfile":{"name":"MlSpatialElevationProfile","title":"3D height profile","description":"Draws a level, out of the building outline and the height, extrudes 3D Objects as buildings.","i18n":{"de":{"title":"3D Höhenprofil","description":"Zeichnet eine Ebene mit einfach, aus den Gebäudeumrissen und anhand der Höhen, extrudierten 3D Objekten als Gebäude."}},"tags":["Map add-on"],"category":"add-ons","type":"component","price":5000},"MlThreeJsLayer":{"name":"MlThreeJsLayer","title":"3D Model","description":"Layer Component, that makes it possible to show 3D Models on the map.","i18n":{"de":{"title":"3D Modelle","description":"Layer Component, das es ermöglicht 3D Modelle auf der Karte darzustellen."}},"tags":["Map layer"],"category":"layer","type":"component","price":5000},"MlTransitionGeoJsonLayer":{"name":"MlTransitionGeoJsonLayer","title":"GeoJSON layer","description":"","i18n":{"de":{"title":"GeoJSON Ebene","description":""}},"tags":[],"category":"","type":"component","price":0},"MlVectorTileLayer":{"name":"MlVectorTileLayer","title":"Vector tile layer","description":"Adds a vector tile layer to the map","i18n":{"de":{"title":"Vector Tiles","description":"Baustein: Vektorenkacheln/Vector Tiles (der Anwendung/Karte hinzufügen)"}},"tags":["Map layer"],"category":"layer","type":"component","price":5000},"MlWmsLoader":{"name":"MlWmsLoader","title":"WMS loader","description":"","i18n":{"de":{"title":"WMS Feature Info","description":""}},"tags":[],"category":"","type":"component","price":0}}
@@ -14,16 +14,16 @@ interface MlFeatureEditorProps {
14
14
  /**
15
15
  * Id of the target MapLibre instance in mapContext
16
16
  */
17
- mapId: string;
17
+ mapId?: string;
18
18
  /**
19
19
  * Id of an existing layer in the mapLibre instance to help specify the layer order
20
20
  * This layer will be visually beneath the layer with the "insertBeforeLayer" id.
21
21
  */
22
- insertBeforeLayer: string;
22
+ insertBeforeLayer?: string;
23
23
  /**
24
24
  * Input GeoJson data at initialization
25
25
  */
26
- geojson: any;
26
+ geojson?: any;
27
27
  /**
28
28
  * Callback function that is called each time the GeoJson data within has changed within MlFeatureEditor.
29
29
  * First parameter is the new GeoJson feature.
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React, { useRef, useState } from "react";
2
2
 
3
3
  import MlMeasureTool from "./MlMeasureTool";
4
4
 
@@ -7,61 +7,90 @@ import StraightenOutlinedIcon from "@mui/icons-material/StraightenOutlined";
7
7
  import SquareFootOutlinedIcon from "@mui/icons-material/SquareFootOutlined";
8
8
  import Grid from "@mui/material/Grid";
9
9
  import Box from "@mui/material/Box";
10
+ import { MenuItem, Select } from "@mui/material";
10
11
 
11
12
  const storyoptions = {
12
13
  title: "MapComponents/MlMeasureTool",
13
14
  component: MlMeasureTool,
14
- argTypes: {
15
- },
15
+ argTypes: {},
16
16
  decorators: mapContextDecorator,
17
17
  };
18
18
  export default storyoptions;
19
19
 
20
- const Template = (args) => (
21
- <div style={{ width: "200px", position: "absolute", zIndex:105 }}>
22
- <Grid
23
- container
24
- style={{
25
- textAlign: "left",
26
- alignItems: "center",
27
- }}
28
- >
29
- <SquareFootOutlinedIcon />
20
+ const Template = (args) => {
21
+ const [unit, setUnit] = useState("kilometers");
22
+ const handleChange = (event) => {
23
+ setUnit(event.target.value);
24
+ };
30
25
 
31
- <h4 style={{ margin: "0px" }}>Measure Polygon</h4>
32
- </Grid>
26
+ return (
27
+ <div style={{ width: "200px", position: "absolute", zIndex: 105 }}>
28
+ <Select
29
+ name={"units"}
30
+ onChange={handleChange}
31
+ label={"Unit for measurement"}
32
+ defaultValue={"kilometers"}
33
+ >
34
+ <MenuItem value={"kilometers"}>Kilometers</MenuItem>
35
+ <MenuItem value={"miles"}>Miles</MenuItem>
36
+ </Select>
37
+ <Grid
38
+ container
39
+ style={{
40
+ textAlign: "left",
41
+ alignItems: "center",
42
+ }}
43
+ >
44
+ <SquareFootOutlinedIcon />
45
+ <h4 style={{ margin: "0px" }}>Measure Polygon</h4>
46
+ </Grid>
33
47
 
34
- <Box m={2} style={{ textAlign: "left" }}>
35
- <MlMeasureTool measureType={"polygon"} />
36
- </Box>
37
- </div>
38
- )
48
+ <Box m={2} style={{ textAlign: "left" }}>
49
+ Area: <MlMeasureTool measureType={"polygon"} unit={unit} />
50
+ </Box>
51
+ </div>
52
+ );
53
+ };
39
54
 
40
- const LineTemplate = (args) => (
41
- <div style={{ width: "200px", position: "absolute", zIndex:105, }}>
42
- <Grid
43
- container
44
- style={{
45
- textAlign: "left",
46
- alignItems: "center",
47
- }}
48
- >
49
- <StraightenOutlinedIcon />
55
+ const LineTemplate = (args) => {
56
+ const [unit, setUnit] = useState("kilometers");
57
+ const handleChange = (event) => {
58
+ setUnit(event.target.value);
59
+ };
50
60
 
51
- <h4 style={{ margin: "0px" }}>Measure Line</h4>
52
- </Grid>
61
+ return (
62
+ <div style={{ width: "200px", position: "absolute", zIndex: 105 }}>
63
+ <Select
64
+ name={"units"}
65
+ onChange={handleChange}
66
+ label={"Unit for measurement"}
67
+ defaultValue={"kilometers"}
68
+ >
69
+ <MenuItem value={"kilometers"}> Kilometers</MenuItem>
70
+ <MenuItem value={"miles"}> Miles</MenuItem>
71
+ </Select>
72
+ <Grid
73
+ container
74
+ style={{
75
+ textAlign: "left",
76
+ alignItems: "center",
77
+ }}
78
+ >
79
+ <StraightenOutlinedIcon />
80
+ <h4 style={{ margin: "0px" }}>Measure Line</h4>
81
+ </Grid>
53
82
 
54
- <Box m={2} style={{ textAlign: "left" }}>
55
- <MlMeasureTool measureType={"line"} />
56
- </Box>
57
- </div>
58
- )
83
+ <Box m={2} style={{ textAlign: "left" }}>
84
+ Length: <MlMeasureTool measureType={"line"} unit={unit} />
85
+ </Box>
86
+ </div>
87
+ );
88
+ };
59
89
 
60
- export const MeasureLine = LineTemplate.bind( {});
90
+ export const MeasureLine = LineTemplate.bind({});
61
91
  MeasureLine.parameters = {};
62
92
  MeasureLine.args = {};
63
93
 
64
94
  export const MeasurePolygon = Template.bind({});
65
95
  MeasurePolygon.parameters = {};
66
96
  MeasurePolygon.args = {};
67
-
@@ -1,4 +1,4 @@
1
- import React, { useState } from "react";
1
+ import React, { useEffect, useState } from "react";
2
2
  import MlFeatureEditor from "../MlFeatureEditor/MlFeatureEditor";
3
3
  import * as turf from "@turf/turf";
4
4
 
@@ -6,28 +6,55 @@ interface MlMeasureToolProps {
6
6
  /**
7
7
  * String that specify if the Tool measures an area ("polygon") or length ("line")
8
8
  */
9
- measureType: string;
9
+ measureType?: string;
10
+ /**
11
+ * String that dictates which unit of measurement is used
12
+ */
13
+ unit?: turf.Units;
14
+ }
15
+
16
+ //const unitSquareConvert = {
17
+ // kilometers: 1,
18
+ // miles: 1 / 2.58998811,
19
+ //};
20
+ function getUnitSquareMultiplier(measureType:string | undefined) {
21
+ return measureType === "miles" ? 1 / 2.58998811 : 1;
22
+ }
23
+ function getUnitLabel(measureType:string | undefined) {
24
+ return measureType === "miles" ? 'mi' : 'km';
10
25
  }
11
26
 
12
27
  const MlMeasureTool = (props: MlMeasureToolProps) => {
13
- const [length, setLength] = useState(0)
28
+ const [length, setLength] = useState(0);
29
+ const [currentFeatures, setCurrentFeatures] = useState([undefined]);
30
+
31
+ useEffect(() => {
32
+ if (currentFeatures[0]) {
33
+ setLength(
34
+ props.measureType === "polygon"
35
+ ? (turf.area(currentFeatures[0]) / 1000000) * getUnitSquareMultiplier(props.unit)
36
+ : turf.length(currentFeatures[0], { units: props.unit })
37
+ );
38
+ }
39
+ }, [props.unit, currentFeatures]);
14
40
 
15
41
  return (
16
42
  <>
17
43
  <MlFeatureEditor
18
- onChange={(features) => {
19
- console.log(features);
20
- if(features[0]) {
21
- setLength(props.measureType === "polygon" ? turf.area(features[0]) / 1000000 : turf.length(features[0]));
22
- }}}
23
- mode = {props.measureType === "polygon" ? "custom_polygon" : "draw_line_string"}
44
+ onChange={(features:any) => {
45
+ setCurrentFeatures(features);
46
+ }}
47
+ mode={props.measureType === "polygon" ? "custom_polygon" : "draw_line_string"}
24
48
  />
25
- {props.measureType === "polygon" ? "Area" : "Length"}: {length.toFixed(2)} {props.measureType === "polygon" ? "km²" : "km"}
26
- </>);
49
+ {length.toFixed(2)} {getUnitLabel(props.unit)}
50
+ {props.measureType === "polygon" ? "²" : ""}
51
+ </>
52
+ );
27
53
  };
28
54
 
29
55
  MlMeasureTool.defaultProps = {
30
56
  mapId: undefined,
31
57
  measureType: "line",
58
+ unit: "kilometers",
32
59
  };
33
60
  export default MlMeasureTool;
@@ -307,7 +307,7 @@ MlWmsLoader.defaultProps = {
307
307
  urlParameters: {
308
308
  SERVICE: "WMS",
309
309
  VERSION: "1.3.0",
310
- REQUEST: "getCapabilities",
310
+ REQUEST: "GetCapabilities",
311
311
  },
312
312
  wmsUrlParameters: {
313
313
  TRANSPARENT: "TRUE",
@@ -84,7 +84,7 @@ useWms.defaultProps = {
84
84
  urlParameters: {
85
85
  SERVICE: "WMS",
86
86
  VERSION: "1.3.0",
87
- REQUEST: "getCapabilities",
87
+ REQUEST: "GetCapabilities",
88
88
  },
89
89
  };
90
90
 
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ export { default as MlFillExtrusionLayer } from "./components/MlFillExtrusionLay
6
6
  export { default as MlFollowGps } from "./components/MlFollowGps/MlFollowGps";
7
7
  export { default as MlGeoJsonLayer } from "./components/MlGeoJsonLayer/MlGeoJsonLayer";
8
8
  export { default as MlImageMarkerLayer } from "./components/MlImageMarkerLayer/MlImageMarkerLayer";
9
+ export { default as MlMeasureTool } from "./components/MlMeasureTool/MlMeasureTool";
9
10
  export { default as MlNavigationTools } from "./components/MlNavigationTools/MlNavigationTools";
10
11
  export { default as MlNavigationCompass } from "./components/MlNavigationCompass/MlNavigationCompass";
11
12
  export { default as MlLayer } from "./components/MlLayer/MlLayer";
@@ -1 +0,0 @@
1
- {"version":3,"file":"0.0ee4f98c.iframe.bundle.js","sources":["webpack:///0.0ee4f98c.iframe.bundle.js"],"mappings":"AAAA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"1.bb3cf738.iframe.bundle.js","sources":["webpack:///1.bb3cf738.iframe.bundle.js"],"mappings":"AAAA;;;;;;;;AAixHA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"17.97db5b3f.iframe.bundle.js","sources":["webpack:///17.97db5b3f.iframe.bundle.js"],"mappings":"AAAA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"18.f8d843df.iframe.bundle.js","sources":["webpack:///18.f8d843df.iframe.bundle.js"],"mappings":"AAAA;;;;;;;;;;;;;;;AA6pOA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"19.c45e6b08.iframe.bundle.js","sources":["webpack:///19.c45e6b08.iframe.bundle.js"],"mappings":"AAAA;;;;;;;;;;;;AA6JA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"2.42c790e4.iframe.bundle.js","sources":["webpack:///2.42c790e4.iframe.bundle.js"],"mappings":"AAAA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"20.120bbcfb.iframe.bundle.js","sources":["webpack:///20.120bbcfb.iframe.bundle.js"],"mappings":"AAAA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"21.37c885f1.iframe.bundle.js","sources":["webpack:///21.37c885f1.iframe.bundle.js"],"mappings":"AAAA;;AAQA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"22.7fbc99f4.iframe.bundle.js","sources":["webpack:///22.7fbc99f4.iframe.bundle.js"],"mappings":"AAAA;;;;;;AAWA;;;;;;;;;;;;;;AAoBA","sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"3.1a37a83e.iframe.bundle.js","sources":["webpack:///3.1a37a83e.iframe.bundle.js"],"mappings":"AAAA","sourceRoot":""}