@open-pioneer/measurement 0.3.0 → 0.4.0
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 +29 -0
- package/MeasurementController.js +3 -2
- package/MeasurementController.js.map +1 -1
- package/package.json +15 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# @open-pioneer/measurement
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9334e81: Update to OpenLayers 9
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 1a8ad89: Update package.json metadata
|
|
12
|
+
- a0d8882: hide help texts during map export
|
|
13
|
+
- 6162979: Update versions of core packages
|
|
14
|
+
- Updated dependencies [1a8ad89]
|
|
15
|
+
- Updated dependencies [a11bf72]
|
|
16
|
+
- Updated dependencies [fc6bf82]
|
|
17
|
+
- Updated dependencies [a0d8882]
|
|
18
|
+
- Updated dependencies [6162979]
|
|
19
|
+
- Updated dependencies [9334e81]
|
|
20
|
+
- Updated dependencies [ac7fdd1]
|
|
21
|
+
- Updated dependencies [13ea342]
|
|
22
|
+
- @open-pioneer/react-utils@0.2.2
|
|
23
|
+
- @open-pioneer/map@0.4.0
|
|
24
|
+
|
|
25
|
+
## 0.3.1
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- Updated dependencies [611ddb9]
|
|
30
|
+
- @open-pioneer/map@0.3.1
|
|
31
|
+
|
|
3
32
|
## 0.3.0
|
|
4
33
|
|
|
5
34
|
### Minor Changes
|
package/MeasurementController.js
CHANGED
|
@@ -157,6 +157,7 @@ class MeasurementController {
|
|
|
157
157
|
if (measureTooltip) {
|
|
158
158
|
const classes = measureTooltip.element.classList;
|
|
159
159
|
classes.remove("measurement-active-tooltip");
|
|
160
|
+
classes.remove("printing-hide");
|
|
160
161
|
classes.add("measurement-finished-tooltip");
|
|
161
162
|
measureTooltip.overlay.setOffset([0, -7]);
|
|
162
163
|
this.overlayTooltips.push(measureTooltip);
|
|
@@ -192,7 +193,7 @@ class MeasurementController {
|
|
|
192
193
|
}
|
|
193
194
|
createMeasureTooltip() {
|
|
194
195
|
const element = document.createElement("div");
|
|
195
|
-
element.className = "measurement-tooltip measurement-active-tooltip";
|
|
196
|
+
element.className = "measurement-tooltip measurement-active-tooltip printing-hide";
|
|
196
197
|
const overlay = new Overlay({
|
|
197
198
|
element,
|
|
198
199
|
offset: [0, -15],
|
|
@@ -212,7 +213,7 @@ class MeasurementController {
|
|
|
212
213
|
}
|
|
213
214
|
createHelpTooltip() {
|
|
214
215
|
const element = document.createElement("div");
|
|
215
|
-
element.className = "measurement-tooltip hidden";
|
|
216
|
+
element.className = "measurement-tooltip printing-hide hidden";
|
|
216
217
|
const overlay = new Overlay({
|
|
217
218
|
element,
|
|
218
219
|
offset: [15, 0],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeasurementController.js","sources":["MeasurementController.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { Resource } from \"@open-pioneer/core\";\nimport Feature from \"ol/Feature\";\nimport OlMap from \"ol/Map\";\nimport MapBrowserEvent from \"ol/MapBrowserEvent\";\nimport { unByKey } from \"ol/Observable\";\nimport Overlay from \"ol/Overlay\";\nimport { Coordinate } from \"ol/coordinate\";\nimport { EventsKey } from \"ol/events\";\nimport { LineString, Polygon } from \"ol/geom\";\nimport Draw from \"ol/interaction/Draw\";\nimport { Vector as VectorLayer } from \"ol/layer\";\nimport { Vector as VectorSource } from \"ol/source\";\nimport { getArea, getLength } from \"ol/sphere\";\nimport { Projection } from \"ol/proj\";\nimport { StyleFunction, StyleLike, toFunction as toStyleFunction } from \"ol/style/Style\";\nimport { TOPMOST_LAYER_Z } from \"@open-pioneer/map\";\n\nexport type MeasurementType = \"area\" | \"distance\";\n\nexport interface Messages {\n getContinueMessage(): string;\n getHelpMessage(): string;\n formatNumber(value: number): string;\n}\n\nexport class MeasurementController {\n private olMap: OlMap;\n private messages: Messages;\n private activeFeatureStyle: StyleFunction | undefined;\n\n /**\n * The layer rendering the measurement \"features\".\n */\n private layer: VectorLayer<VectorSource>;\n\n /**\n * Source of {@link layer}.\n */\n private source: VectorSource;\n\n /**\n * Stores the current `Draw` interaction.\n */\n private draw: Draw | undefined = undefined;\n\n /**\n * Currently drawn feature.\n */\n private sketch: Feature | undefined = undefined;\n\n /**\n * The help tooltip element.\n */\n private helpTooltip: Tooltip;\n\n /**\n * The current measurement tooltip (if any).\n */\n private measureTooltip: Tooltip | undefined;\n\n /**\n * Overlays/Tooltip containing the tooltip for finished drawings.\n */\n private overlayTooltips: Tooltip[] = [];\n\n /**\n * Keeps track of registered event handlers.\n */\n private resources: Resource[] = [];\n\n constructor(olMap: OlMap, messages: Messages) {\n this.olMap = olMap;\n this.messages = messages;\n const source = (this.source = new VectorSource());\n this.layer = new VectorLayer({\n source\n });\n this.layer.setZIndex(TOPMOST_LAYER_Z);\n olMap.addLayer(this.layer);\n\n const pointerMoveKey = olMap.on(\"pointermove\", this.handlePointerMove.bind(this));\n this.resources.push({\n destroy() {\n unByKey(pointerMoveKey);\n }\n });\n\n const mouseOutHandler = () => {\n this.helpTooltip.element.classList.add(\"hidden\");\n };\n olMap.getViewport().addEventListener(\"mouseout\", mouseOutHandler);\n this.resources.push({\n destroy() {\n olMap.getViewport().removeEventListener(\"mouseout\", mouseOutHandler);\n }\n });\n\n this.helpTooltip = this.createHelpTooltip();\n }\n\n destroy() {\n this.stopMeasurement();\n\n // Cleanup registered event handlers etc.\n for (const resource of this.resources) {\n resource.destroy();\n }\n this.resources = [];\n\n // Cleanup tooltips\n this.helpTooltip.destroy();\n this.measureTooltip?.destroy();\n for (const tooltip of this.overlayTooltips) {\n tooltip.destroy();\n }\n this.overlayTooltips = [];\n\n // Cleanup layer\n this.olMap.removeLayer(this.layer);\n this.layer.dispose();\n this.source.dispose();\n }\n\n /** Returns the vector layer used for finished features. */\n getVectorLayer() {\n return this.layer;\n }\n\n /** Updates the style used for finished features. */\n setFinishedFeatureStyle(style: StyleLike) {\n this.layer.setStyle(style);\n }\n\n /** Updates the style used for active measurements. */\n setActiveFeatureStyle(style: StyleLike) {\n const styleFunction = toStyleFunction(style);\n this.activeFeatureStyle = (feature, ...args) => {\n const ft = feature?.getGeometry()?.getType();\n if (ft === \"Polygon\" || ft === \"LineString\" || ft === \"Point\") {\n return styleFunction(feature, ...args);\n }\n };\n // Update style on current draw instance (if any)\n this.draw?.getOverlay().setStyle(this.activeFeatureStyle);\n }\n\n /** Removes all finished measurements. */\n clearMeasurements() {\n this.source.clear();\n for (const tooltip of this.overlayTooltips) {\n tooltip.destroy();\n }\n this.overlayTooltips = [];\n }\n\n /** Starts measuring using the provided type. */\n startMeasurement(type: MeasurementType) {\n if (this.draw) {\n throw new Error(\"Internal error: another measurement interaction is still active.\");\n }\n\n const geometryType = type === \"area\" ? \"Polygon\" : \"LineString\";\n const draw = (this.draw = new Draw({\n source: this.source,\n type: geometryType,\n style: this.activeFeatureStyle\n }));\n this.olMap.addInteraction(draw);\n\n let measureTooltip: Tooltip | undefined;\n let changeListenerKey: EventsKey | undefined = undefined;\n draw.on(\"drawstart\", (evt) => {\n measureTooltip = this.measureTooltip = this.createMeasureTooltip();\n\n // set sketch\n const sketch = (this.sketch = evt.feature);\n if (!sketch) {\n return;\n }\n\n let tooltipCoord: Coordinate | undefined;\n changeListenerKey = sketch.getGeometry()?.on(\"change\", (evt) => {\n const geom = evt.target;\n const projection = this.olMap.getView().getProjection();\n\n let output = \"\";\n if (geom instanceof Polygon) {\n output = formatArea(geom, projection, this.messages);\n tooltipCoord = geom.getInteriorPoint().getCoordinates() || null;\n } else if (geom instanceof LineString) {\n output = formatLength(geom, projection, this.messages);\n tooltipCoord = geom.getLastCoordinate() || null;\n }\n\n if (measureTooltip) {\n measureTooltip.element.innerHTML = output;\n if (tooltipCoord) {\n measureTooltip?.overlay.setPosition(tooltipCoord);\n }\n }\n });\n });\n\n draw.on(\"drawend\", () => {\n if (measureTooltip) {\n // Make the tooltip (which was previously following the mouse)\n // static instead, next to the feature (last known overlay coordinate).\n const classes = measureTooltip.element.classList;\n classes.remove(\"measurement-active-tooltip\");\n classes.add(\"measurement-finished-tooltip\");\n measureTooltip.overlay.setOffset([0, -7]);\n\n this.overlayTooltips.push(measureTooltip);\n this.measureTooltip = measureTooltip = undefined;\n }\n\n // unset sketch\n this.sketch = undefined;\n if (changeListenerKey) {\n unByKey(changeListenerKey);\n }\n });\n\n draw.on(\"drawabort\", () => {\n if (measureTooltip) {\n measureTooltip.destroy();\n this.measureTooltip = measureTooltip = undefined;\n }\n\n this.sketch = undefined;\n if (changeListenerKey) {\n unByKey(changeListenerKey);\n }\n });\n }\n\n /** Stops the current measuring started by `startMeasurement`. */\n stopMeasurement() {\n if (this.draw) {\n this.olMap.removeInteraction(this.draw);\n this.draw.abortDrawing();\n this.draw.dispose();\n this.draw = undefined;\n }\n\n this.sketch = undefined;\n this.measureTooltip?.destroy();\n this.measureTooltip = undefined;\n }\n\n private createMeasureTooltip(): Tooltip {\n const element = document.createElement(\"div\");\n element.className = \"measurement-tooltip measurement-active-tooltip\";\n\n const overlay = new Overlay({\n element: element,\n offset: [0, -15],\n positioning: \"bottom-center\",\n stopEvent: false,\n insertFirst: false\n });\n\n const olMap = this.olMap;\n olMap.addOverlay(overlay);\n return {\n overlay,\n element,\n destroy() {\n olMap.removeOverlay(overlay);\n }\n };\n }\n\n private createHelpTooltip(): Tooltip {\n const element = document.createElement(\"div\");\n element.className = \"measurement-tooltip hidden\";\n\n const overlay = new Overlay({\n element: element,\n offset: [15, 0],\n positioning: \"center-left\"\n });\n\n const olMap = this.olMap;\n olMap.addOverlay(overlay);\n return {\n overlay,\n element,\n destroy() {\n olMap.removeOverlay(overlay);\n }\n };\n }\n\n private handlePointerMove(evt: MapBrowserEvent<UIEvent>) {\n if (evt.dragging) {\n return;\n }\n\n const tooltip = this.helpTooltip;\n const helpMessage = getHelpMessage(this.messages, this.sketch);\n tooltip.element.textContent = helpMessage;\n tooltip.overlay.setPosition(evt.coordinate);\n tooltip.element.classList.remove(\"hidden\");\n }\n}\n\n/** Represents a tooltip rendered on the OpenLayers map. */\ninterface Tooltip extends Resource {\n overlay: Overlay;\n element: HTMLDivElement;\n}\n\nfunction getHelpMessage(messages: Messages, sketch: Feature | undefined) {\n if (sketch) {\n const geom = sketch.getGeometry();\n if (geom instanceof Polygon || geom instanceof LineString) {\n return messages.getContinueMessage();\n }\n }\n return messages.getHelpMessage();\n}\n\nfunction formatArea(polygon: Polygon, projection: Projection, messages: Messages) {\n const area = getArea(polygon, { projection });\n let output;\n if (area >= 1000000) {\n output = `${messages.formatNumber(area / 1000000)} km<sup>2</sup>`;\n } else {\n output = `${messages.formatNumber(area)} m<sup>2</sup>`;\n }\n return output;\n}\n\nfunction formatLength(line: LineString, projection: Projection, messages: Messages) {\n const length = getLength(line, { projection });\n let output;\n if (length >= 1000) {\n output = `${messages.formatNumber(length / 1000)} km`;\n } else {\n output = `${messages.formatNumber(length)} m`;\n }\n return output;\n}\n"],"names":["VectorSource","VectorLayer","toStyleFunction","evt"],"mappings":";;;;;;;;;;AA2BO,MAAM,qBAAsB,CAAA;AAAA,EACvB,KAAA,CAAA;AAAA,EACA,QAAA,CAAA;AAAA,EACA,kBAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAyB,GAAA,KAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAKzB,MAA8B,GAAA,KAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,WAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAKA,cAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAKA,kBAA6B,EAAC,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,YAAwB,EAAC,CAAA;AAAA,EAEjC,WAAA,CAAY,OAAc,QAAoB,EAAA;AAC1C,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AACb,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA,CAAA;AAChB,IAAA,MAAM,MAAU,GAAA,IAAA,CAAK,MAAS,GAAA,IAAIA,MAAa,EAAA,CAAA;AAC/C,IAAK,IAAA,CAAA,KAAA,GAAQ,IAAIC,QAAY,CAAA;AAAA,MACzB,MAAA;AAAA,KACH,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,KAAA,CAAM,UAAU,eAAe,CAAA,CAAA;AACpC,IAAM,KAAA,CAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAEzB,IAAM,MAAA,cAAA,GAAiB,MAAM,EAAG,CAAA,aAAA,EAAe,KAAK,iBAAkB,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAChF,IAAA,IAAA,CAAK,UAAU,IAAK,CAAA;AAAA,MAChB,OAAU,GAAA;AACN,QAAA,OAAA,CAAQ,cAAc,CAAA,CAAA;AAAA,OAC1B;AAAA,KACH,CAAA,CAAA;AAED,IAAA,MAAM,kBAAkB,MAAM;AAC1B,MAAA,IAAA,CAAK,WAAY,CAAA,OAAA,CAAQ,SAAU,CAAA,GAAA,CAAI,QAAQ,CAAA,CAAA;AAAA,KACnD,CAAA;AACA,IAAA,KAAA,CAAM,WAAY,EAAA,CAAE,gBAAiB,CAAA,UAAA,EAAY,eAAe,CAAA,CAAA;AAChE,IAAA,IAAA,CAAK,UAAU,IAAK,CAAA;AAAA,MAChB,OAAU,GAAA;AACN,QAAA,KAAA,CAAM,WAAY,EAAA,CAAE,mBAAoB,CAAA,UAAA,EAAY,eAAe,CAAA,CAAA;AAAA,OACvE;AAAA,KACH,CAAA,CAAA;AAED,IAAK,IAAA,CAAA,WAAA,GAAc,KAAK,iBAAkB,EAAA,CAAA;AAAA,GAC9C;AAAA,EAEA,OAAU,GAAA;AACN,IAAA,IAAA,CAAK,eAAgB,EAAA,CAAA;AAGrB,IAAW,KAAA,MAAA,QAAA,IAAY,KAAK,SAAW,EAAA;AACnC,MAAA,QAAA,CAAS,OAAQ,EAAA,CAAA;AAAA,KACrB;AACA,IAAA,IAAA,CAAK,YAAY,EAAC,CAAA;AAGlB,IAAA,IAAA,CAAK,YAAY,OAAQ,EAAA,CAAA;AACzB,IAAA,IAAA,CAAK,gBAAgB,OAAQ,EAAA,CAAA;AAC7B,IAAW,KAAA,MAAA,OAAA,IAAW,KAAK,eAAiB,EAAA;AACxC,MAAA,OAAA,CAAQ,OAAQ,EAAA,CAAA;AAAA,KACpB;AACA,IAAA,IAAA,CAAK,kBAAkB,EAAC,CAAA;AAGxB,IAAK,IAAA,CAAA,KAAA,CAAM,WAAY,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,MAAM,OAAQ,EAAA,CAAA;AACnB,IAAA,IAAA,CAAK,OAAO,OAAQ,EAAA,CAAA;AAAA,GACxB;AAAA;AAAA,EAGA,cAAiB,GAAA;AACb,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA;AAAA,GAChB;AAAA;AAAA,EAGA,wBAAwB,KAAkB,EAAA;AACtC,IAAK,IAAA,CAAA,KAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AAAA,GAC7B;AAAA;AAAA,EAGA,sBAAsB,KAAkB,EAAA;AACpC,IAAM,MAAA,aAAA,GAAgBC,WAAgB,KAAK,CAAA,CAAA;AAC3C,IAAK,IAAA,CAAA,kBAAA,GAAqB,CAAC,OAAA,EAAA,GAAY,IAAS,KAAA;AAC5C,MAAA,MAAM,EAAK,GAAA,OAAA,EAAS,WAAY,EAAA,EAAG,OAAQ,EAAA,CAAA;AAC3C,MAAA,IAAI,EAAO,KAAA,SAAA,IAAa,EAAO,KAAA,YAAA,IAAgB,OAAO,OAAS,EAAA;AAC3D,QAAO,OAAA,aAAA,CAAc,OAAS,EAAA,GAAG,IAAI,CAAA,CAAA;AAAA,OACzC;AAAA,KACJ,CAAA;AAEA,IAAA,IAAA,CAAK,IAAM,EAAA,UAAA,EAAa,CAAA,QAAA,CAAS,KAAK,kBAAkB,CAAA,CAAA;AAAA,GAC5D;AAAA;AAAA,EAGA,iBAAoB,GAAA;AAChB,IAAA,IAAA,CAAK,OAAO,KAAM,EAAA,CAAA;AAClB,IAAW,KAAA,MAAA,OAAA,IAAW,KAAK,eAAiB,EAAA;AACxC,MAAA,OAAA,CAAQ,OAAQ,EAAA,CAAA;AAAA,KACpB;AACA,IAAA,IAAA,CAAK,kBAAkB,EAAC,CAAA;AAAA,GAC5B;AAAA;AAAA,EAGA,iBAAiB,IAAuB,EAAA;AACpC,IAAA,IAAI,KAAK,IAAM,EAAA;AACX,MAAM,MAAA,IAAI,MAAM,kEAAkE,CAAA,CAAA;AAAA,KACtF;AAEA,IAAM,MAAA,YAAA,GAAe,IAAS,KAAA,MAAA,GAAS,SAAY,GAAA,YAAA,CAAA;AACnD,IAAA,MAAM,IAAQ,GAAA,IAAA,CAAK,IAAO,GAAA,IAAI,IAAK,CAAA;AAAA,MAC/B,QAAQ,IAAK,CAAA,MAAA;AAAA,MACb,IAAM,EAAA,YAAA;AAAA,MACN,OAAO,IAAK,CAAA,kBAAA;AAAA,KACf,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,KAAA,CAAM,eAAe,IAAI,CAAA,CAAA;AAE9B,IAAI,IAAA,cAAA,CAAA;AACJ,IAAA,IAAI,iBAA2C,GAAA,KAAA,CAAA,CAAA;AAC/C,IAAK,IAAA,CAAA,EAAA,CAAG,WAAa,EAAA,CAAC,GAAQ,KAAA;AAC1B,MAAiB,cAAA,GAAA,IAAA,CAAK,cAAiB,GAAA,IAAA,CAAK,oBAAqB,EAAA,CAAA;AAGjE,MAAM,MAAA,MAAA,GAAU,IAAK,CAAA,MAAA,GAAS,GAAI,CAAA,OAAA,CAAA;AAClC,MAAA,IAAI,CAAC,MAAQ,EAAA;AACT,QAAA,OAAA;AAAA,OACJ;AAEA,MAAI,IAAA,YAAA,CAAA;AACJ,MAAA,iBAAA,GAAoB,OAAO,WAAY,EAAA,EAAG,EAAG,CAAA,QAAA,EAAU,CAACC,IAAQ,KAAA;AAC5D,QAAA,MAAM,OAAOA,IAAI,CAAA,MAAA,CAAA;AACjB,QAAA,MAAM,UAAa,GAAA,IAAA,CAAK,KAAM,CAAA,OAAA,GAAU,aAAc,EAAA,CAAA;AAEtD,QAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,QAAA,IAAI,gBAAgB,OAAS,EAAA;AACzB,UAAA,MAAA,GAAS,UAAW,CAAA,IAAA,EAAM,UAAY,EAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AACnD,UAAA,YAAA,GAAe,IAAK,CAAA,gBAAA,EAAmB,CAAA,cAAA,EAAoB,IAAA,IAAA,CAAA;AAAA,SAC/D,MAAA,IAAW,gBAAgB,UAAY,EAAA;AACnC,UAAA,MAAA,GAAS,YAAa,CAAA,IAAA,EAAM,UAAY,EAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AACrD,UAAe,YAAA,GAAA,IAAA,CAAK,mBAAuB,IAAA,IAAA,CAAA;AAAA,SAC/C;AAEA,QAAA,IAAI,cAAgB,EAAA;AAChB,UAAA,cAAA,CAAe,QAAQ,SAAY,GAAA,MAAA,CAAA;AACnC,UAAA,IAAI,YAAc,EAAA;AACd,YAAgB,cAAA,EAAA,OAAA,CAAQ,YAAY,YAAY,CAAA,CAAA;AAAA,WACpD;AAAA,SACJ;AAAA,OACH,CAAA,CAAA;AAAA,KACJ,CAAA,CAAA;AAED,IAAK,IAAA,CAAA,EAAA,CAAG,WAAW,MAAM;AACrB,MAAA,IAAI,cAAgB,EAAA;AAGhB,QAAM,MAAA,OAAA,GAAU,eAAe,OAAQ,CAAA,SAAA,CAAA;AACvC,QAAA,OAAA,CAAQ,OAAO,4BAA4B,CAAA,CAAA;AAC3C,QAAA,OAAA,CAAQ,IAAI,8BAA8B,CAAA,CAAA;AAC1C,QAAA,cAAA,CAAe,OAAQ,CAAA,SAAA,CAAU,CAAC,CAAA,EAAG,EAAE,CAAC,CAAA,CAAA;AAExC,QAAK,IAAA,CAAA,eAAA,CAAgB,KAAK,cAAc,CAAA,CAAA;AACxC,QAAA,IAAA,CAAK,iBAAiB,cAAiB,GAAA,KAAA,CAAA,CAAA;AAAA,OAC3C;AAGA,MAAA,IAAA,CAAK,MAAS,GAAA,KAAA,CAAA,CAAA;AACd,MAAA,IAAI,iBAAmB,EAAA;AACnB,QAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AAAA,OAC7B;AAAA,KACH,CAAA,CAAA;AAED,IAAK,IAAA,CAAA,EAAA,CAAG,aAAa,MAAM;AACvB,MAAA,IAAI,cAAgB,EAAA;AAChB,QAAA,cAAA,CAAe,OAAQ,EAAA,CAAA;AACvB,QAAA,IAAA,CAAK,iBAAiB,cAAiB,GAAA,KAAA,CAAA,CAAA;AAAA,OAC3C;AAEA,MAAA,IAAA,CAAK,MAAS,GAAA,KAAA,CAAA,CAAA;AACd,MAAA,IAAI,iBAAmB,EAAA;AACnB,QAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AAAA,OAC7B;AAAA,KACH,CAAA,CAAA;AAAA,GACL;AAAA;AAAA,EAGA,eAAkB,GAAA;AACd,IAAA,IAAI,KAAK,IAAM,EAAA;AACX,MAAK,IAAA,CAAA,KAAA,CAAM,iBAAkB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AACtC,MAAA,IAAA,CAAK,KAAK,YAAa,EAAA,CAAA;AACvB,MAAA,IAAA,CAAK,KAAK,OAAQ,EAAA,CAAA;AAClB,MAAA,IAAA,CAAK,IAAO,GAAA,KAAA,CAAA,CAAA;AAAA,KAChB;AAEA,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA,CAAA,CAAA;AACd,IAAA,IAAA,CAAK,gBAAgB,OAAQ,EAAA,CAAA;AAC7B,IAAA,IAAA,CAAK,cAAiB,GAAA,KAAA,CAAA,CAAA;AAAA,GAC1B;AAAA,EAEQ,oBAAgC,GAAA;AACpC,IAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAC5C,IAAA,OAAA,CAAQ,SAAY,GAAA,gDAAA,CAAA;AAEpB,IAAM,MAAA,OAAA,GAAU,IAAI,OAAQ,CAAA;AAAA,MACxB,OAAA;AAAA,MACA,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA;AAAA,MACf,WAAa,EAAA,eAAA;AAAA,MACb,SAAW,EAAA,KAAA;AAAA,MACX,WAAa,EAAA,KAAA;AAAA,KAChB,CAAA,CAAA;AAED,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA,CAAA;AACnB,IAAA,KAAA,CAAM,WAAW,OAAO,CAAA,CAAA;AACxB,IAAO,OAAA;AAAA,MACH,OAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAU,GAAA;AACN,QAAA,KAAA,CAAM,cAAc,OAAO,CAAA,CAAA;AAAA,OAC/B;AAAA,KACJ,CAAA;AAAA,GACJ;AAAA,EAEQ,iBAA6B,GAAA;AACjC,IAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAC5C,IAAA,OAAA,CAAQ,SAAY,GAAA,4BAAA,CAAA;AAEpB,IAAM,MAAA,OAAA,GAAU,IAAI,OAAQ,CAAA;AAAA,MACxB,OAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAA,EAAI,CAAC,CAAA;AAAA,MACd,WAAa,EAAA,aAAA;AAAA,KAChB,CAAA,CAAA;AAED,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA,CAAA;AACnB,IAAA,KAAA,CAAM,WAAW,OAAO,CAAA,CAAA;AACxB,IAAO,OAAA;AAAA,MACH,OAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAU,GAAA;AACN,QAAA,KAAA,CAAM,cAAc,OAAO,CAAA,CAAA;AAAA,OAC/B;AAAA,KACJ,CAAA;AAAA,GACJ;AAAA,EAEQ,kBAAkB,GAA+B,EAAA;AACrD,IAAA,IAAI,IAAI,QAAU,EAAA;AACd,MAAA,OAAA;AAAA,KACJ;AAEA,IAAA,MAAM,UAAU,IAAK,CAAA,WAAA,CAAA;AACrB,IAAA,MAAM,WAAc,GAAA,cAAA,CAAe,IAAK,CAAA,QAAA,EAAU,KAAK,MAAM,CAAA,CAAA;AAC7D,IAAA,OAAA,CAAQ,QAAQ,WAAc,GAAA,WAAA,CAAA;AAC9B,IAAQ,OAAA,CAAA,OAAA,CAAQ,WAAY,CAAA,GAAA,CAAI,UAAU,CAAA,CAAA;AAC1C,IAAQ,OAAA,CAAA,OAAA,CAAQ,SAAU,CAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAAA,GAC7C;AACJ,CAAA;AAQA,SAAS,cAAA,CAAe,UAAoB,MAA6B,EAAA;AACrE,EAAA,IAAI,MAAQ,EAAA;AACR,IAAM,MAAA,IAAA,GAAO,OAAO,WAAY,EAAA,CAAA;AAChC,IAAI,IAAA,IAAA,YAAgB,OAAW,IAAA,IAAA,YAAgB,UAAY,EAAA;AACvD,MAAA,OAAO,SAAS,kBAAmB,EAAA,CAAA;AAAA,KACvC;AAAA,GACJ;AACA,EAAA,OAAO,SAAS,cAAe,EAAA,CAAA;AACnC,CAAA;AAEA,SAAS,UAAA,CAAW,OAAkB,EAAA,UAAA,EAAwB,QAAoB,EAAA;AAC9E,EAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,OAAS,EAAA,EAAE,YAAY,CAAA,CAAA;AAC5C,EAAI,IAAA,MAAA,CAAA;AACJ,EAAA,IAAI,QAAQ,GAAS,EAAA;AACjB,IAAA,MAAA,GAAS,CAAG,EAAA,QAAA,CAAS,YAAa,CAAA,IAAA,GAAO,GAAO,CAAC,CAAA,eAAA,CAAA,CAAA;AAAA,GAC9C,MAAA;AACH,IAAA,MAAA,GAAS,CAAG,EAAA,QAAA,CAAS,YAAa,CAAA,IAAI,CAAC,CAAA,cAAA,CAAA,CAAA;AAAA,GAC3C;AACA,EAAO,OAAA,MAAA,CAAA;AACX,CAAA;AAEA,SAAS,YAAA,CAAa,IAAkB,EAAA,UAAA,EAAwB,QAAoB,EAAA;AAChF,EAAA,MAAM,MAAS,GAAA,SAAA,CAAU,IAAM,EAAA,EAAE,YAAY,CAAA,CAAA;AAC7C,EAAI,IAAA,MAAA,CAAA;AACJ,EAAA,IAAI,UAAU,GAAM,EAAA;AAChB,IAAA,MAAA,GAAS,CAAG,EAAA,QAAA,CAAS,YAAa,CAAA,MAAA,GAAS,GAAI,CAAC,CAAA,GAAA,CAAA,CAAA;AAAA,GAC7C,MAAA;AACH,IAAA,MAAA,GAAS,CAAG,EAAA,QAAA,CAAS,YAAa,CAAA,MAAM,CAAC,CAAA,EAAA,CAAA,CAAA;AAAA,GAC7C;AACA,EAAO,OAAA,MAAA,CAAA;AACX;;;;"}
|
|
1
|
+
{"version":3,"file":"MeasurementController.js","sources":["MeasurementController.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { Resource } from \"@open-pioneer/core\";\nimport Feature from \"ol/Feature\";\nimport OlMap from \"ol/Map\";\nimport MapBrowserEvent from \"ol/MapBrowserEvent\";\nimport { unByKey } from \"ol/Observable\";\nimport Overlay from \"ol/Overlay\";\nimport { Coordinate } from \"ol/coordinate\";\nimport { EventsKey } from \"ol/events\";\nimport { LineString, Polygon } from \"ol/geom\";\nimport Draw from \"ol/interaction/Draw\";\nimport { Vector as VectorLayer } from \"ol/layer\";\nimport { Vector as VectorSource } from \"ol/source\";\nimport { getArea, getLength } from \"ol/sphere\";\nimport { Projection } from \"ol/proj\";\nimport { StyleFunction, StyleLike, toFunction as toStyleFunction } from \"ol/style/Style\";\nimport { TOPMOST_LAYER_Z } from \"@open-pioneer/map\";\n\nexport type MeasurementType = \"area\" | \"distance\";\n\nexport interface Messages {\n getContinueMessage(): string;\n getHelpMessage(): string;\n formatNumber(value: number): string;\n}\n\nexport class MeasurementController {\n private olMap: OlMap;\n private messages: Messages;\n private activeFeatureStyle: StyleFunction | undefined;\n\n /**\n * The layer rendering the measurement \"features\".\n */\n private layer: VectorLayer<VectorSource>;\n\n /**\n * Source of {@link layer}.\n */\n private source: VectorSource;\n\n /**\n * Stores the current `Draw` interaction.\n */\n private draw: Draw | undefined = undefined;\n\n /**\n * Currently drawn feature.\n */\n private sketch: Feature | undefined = undefined;\n\n /**\n * The help tooltip element.\n */\n private helpTooltip: Tooltip;\n\n /**\n * The current measurement tooltip (if any).\n */\n private measureTooltip: Tooltip | undefined;\n\n /**\n * Overlays/Tooltip containing the tooltip for finished drawings.\n */\n private overlayTooltips: Tooltip[] = [];\n\n /**\n * Keeps track of registered event handlers.\n */\n private resources: Resource[] = [];\n\n constructor(olMap: OlMap, messages: Messages) {\n this.olMap = olMap;\n this.messages = messages;\n const source = (this.source = new VectorSource());\n this.layer = new VectorLayer({\n source\n });\n this.layer.setZIndex(TOPMOST_LAYER_Z);\n olMap.addLayer(this.layer);\n\n const pointerMoveKey = olMap.on(\"pointermove\", this.handlePointerMove.bind(this));\n this.resources.push({\n destroy() {\n unByKey(pointerMoveKey);\n }\n });\n\n const mouseOutHandler = () => {\n this.helpTooltip.element.classList.add(\"hidden\");\n };\n olMap.getViewport().addEventListener(\"mouseout\", mouseOutHandler);\n this.resources.push({\n destroy() {\n olMap.getViewport().removeEventListener(\"mouseout\", mouseOutHandler);\n }\n });\n\n this.helpTooltip = this.createHelpTooltip();\n }\n\n destroy() {\n this.stopMeasurement();\n\n // Cleanup registered event handlers etc.\n for (const resource of this.resources) {\n resource.destroy();\n }\n this.resources = [];\n\n // Cleanup tooltips\n this.helpTooltip.destroy();\n this.measureTooltip?.destroy();\n for (const tooltip of this.overlayTooltips) {\n tooltip.destroy();\n }\n this.overlayTooltips = [];\n\n // Cleanup layer\n this.olMap.removeLayer(this.layer);\n this.layer.dispose();\n this.source.dispose();\n }\n\n /** Returns the vector layer used for finished features. */\n getVectorLayer() {\n return this.layer;\n }\n\n /** Updates the style used for finished features. */\n setFinishedFeatureStyle(style: StyleLike) {\n this.layer.setStyle(style);\n }\n\n /** Updates the style used for active measurements. */\n setActiveFeatureStyle(style: StyleLike) {\n const styleFunction = toStyleFunction(style);\n this.activeFeatureStyle = (feature, ...args) => {\n const ft = feature?.getGeometry()?.getType();\n if (ft === \"Polygon\" || ft === \"LineString\" || ft === \"Point\") {\n return styleFunction(feature, ...args);\n }\n };\n // Update style on current draw instance (if any)\n this.draw?.getOverlay().setStyle(this.activeFeatureStyle);\n }\n\n /** Removes all finished measurements. */\n clearMeasurements() {\n this.source.clear();\n for (const tooltip of this.overlayTooltips) {\n tooltip.destroy();\n }\n this.overlayTooltips = [];\n }\n\n /** Starts measuring using the provided type. */\n startMeasurement(type: MeasurementType) {\n if (this.draw) {\n throw new Error(\"Internal error: another measurement interaction is still active.\");\n }\n\n const geometryType = type === \"area\" ? \"Polygon\" : \"LineString\";\n const draw = (this.draw = new Draw({\n source: this.source,\n type: geometryType,\n style: this.activeFeatureStyle\n }));\n this.olMap.addInteraction(draw);\n\n let measureTooltip: Tooltip | undefined;\n let changeListenerKey: EventsKey | undefined = undefined;\n draw.on(\"drawstart\", (evt) => {\n measureTooltip = this.measureTooltip = this.createMeasureTooltip();\n\n // set sketch\n const sketch = (this.sketch = evt.feature);\n if (!sketch) {\n return;\n }\n\n let tooltipCoord: Coordinate | undefined;\n changeListenerKey = sketch.getGeometry()?.on(\"change\", (evt) => {\n const geom = evt.target;\n const projection = this.olMap.getView().getProjection();\n\n let output = \"\";\n if (geom instanceof Polygon) {\n output = formatArea(geom, projection, this.messages);\n tooltipCoord = geom.getInteriorPoint().getCoordinates() || null;\n } else if (geom instanceof LineString) {\n output = formatLength(geom, projection, this.messages);\n tooltipCoord = geom.getLastCoordinate() || null;\n }\n\n if (measureTooltip) {\n measureTooltip.element.innerHTML = output;\n if (tooltipCoord) {\n measureTooltip?.overlay.setPosition(tooltipCoord);\n }\n }\n });\n });\n\n draw.on(\"drawend\", () => {\n if (measureTooltip) {\n // Make the tooltip (which was previously following the mouse)\n // static instead, next to the feature (last known overlay coordinate).\n const classes = measureTooltip.element.classList;\n classes.remove(\"measurement-active-tooltip\");\n classes.remove(\"printing-hide\");\n classes.add(\"measurement-finished-tooltip\");\n measureTooltip.overlay.setOffset([0, -7]);\n\n this.overlayTooltips.push(measureTooltip);\n this.measureTooltip = measureTooltip = undefined;\n }\n\n // unset sketch\n this.sketch = undefined;\n if (changeListenerKey) {\n unByKey(changeListenerKey);\n }\n });\n\n draw.on(\"drawabort\", () => {\n if (measureTooltip) {\n measureTooltip.destroy();\n this.measureTooltip = measureTooltip = undefined;\n }\n\n this.sketch = undefined;\n if (changeListenerKey) {\n unByKey(changeListenerKey);\n }\n });\n }\n\n /** Stops the current measuring started by `startMeasurement`. */\n stopMeasurement() {\n if (this.draw) {\n this.olMap.removeInteraction(this.draw);\n this.draw.abortDrawing();\n this.draw.dispose();\n this.draw = undefined;\n }\n\n this.sketch = undefined;\n this.measureTooltip?.destroy();\n this.measureTooltip = undefined;\n }\n\n private createMeasureTooltip(): Tooltip {\n const element = document.createElement(\"div\");\n element.className = \"measurement-tooltip measurement-active-tooltip printing-hide\";\n\n const overlay = new Overlay({\n element: element,\n offset: [0, -15],\n positioning: \"bottom-center\",\n stopEvent: false,\n insertFirst: false\n });\n\n const olMap = this.olMap;\n olMap.addOverlay(overlay);\n return {\n overlay,\n element,\n destroy() {\n olMap.removeOverlay(overlay);\n }\n };\n }\n\n private createHelpTooltip(): Tooltip {\n const element = document.createElement(\"div\");\n element.className = \"measurement-tooltip printing-hide hidden\";\n\n const overlay = new Overlay({\n element: element,\n offset: [15, 0],\n positioning: \"center-left\"\n });\n\n const olMap = this.olMap;\n olMap.addOverlay(overlay);\n return {\n overlay,\n element,\n destroy() {\n olMap.removeOverlay(overlay);\n }\n };\n }\n\n private handlePointerMove(evt: MapBrowserEvent<UIEvent>) {\n if (evt.dragging) {\n return;\n }\n\n const tooltip = this.helpTooltip;\n const helpMessage = getHelpMessage(this.messages, this.sketch);\n tooltip.element.textContent = helpMessage;\n tooltip.overlay.setPosition(evt.coordinate);\n tooltip.element.classList.remove(\"hidden\");\n }\n}\n\n/** Represents a tooltip rendered on the OpenLayers map. */\ninterface Tooltip extends Resource {\n overlay: Overlay;\n element: HTMLDivElement;\n}\n\nfunction getHelpMessage(messages: Messages, sketch: Feature | undefined) {\n if (sketch) {\n const geom = sketch.getGeometry();\n if (geom instanceof Polygon || geom instanceof LineString) {\n return messages.getContinueMessage();\n }\n }\n return messages.getHelpMessage();\n}\n\nfunction formatArea(polygon: Polygon, projection: Projection, messages: Messages) {\n const area = getArea(polygon, { projection });\n let output;\n if (area >= 1000000) {\n output = `${messages.formatNumber(area / 1000000)} km<sup>2</sup>`;\n } else {\n output = `${messages.formatNumber(area)} m<sup>2</sup>`;\n }\n return output;\n}\n\nfunction formatLength(line: LineString, projection: Projection, messages: Messages) {\n const length = getLength(line, { projection });\n let output;\n if (length >= 1000) {\n output = `${messages.formatNumber(length / 1000)} km`;\n } else {\n output = `${messages.formatNumber(length)} m`;\n }\n return output;\n}\n"],"names":["VectorSource","VectorLayer","toStyleFunction","evt"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@open-pioneer/measurement",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
|
+
"description": "This package provides a UI component that allows the user to perform area and distance measurements on the map.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"open-pioneer-trails"
|
|
8
|
+
],
|
|
9
|
+
"homepage": "https://github.com/open-pioneer",
|
|
5
10
|
"license": "Apache-2.0",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/open-pioneer/trails-openlayers-base-packages",
|
|
14
|
+
"directory": "src/packages/measurement"
|
|
15
|
+
},
|
|
6
16
|
"peerDependencies": {
|
|
7
17
|
"@open-pioneer/chakra-integration": "^1.1.1",
|
|
8
|
-
"@open-pioneer/runtime": "^2.1.
|
|
9
|
-
"ol": "^
|
|
18
|
+
"@open-pioneer/runtime": "^2.1.2",
|
|
19
|
+
"ol": "^9.0.0",
|
|
10
20
|
"react": "^18.2.0",
|
|
11
21
|
"classnames": "^2.3.2",
|
|
12
|
-
"@open-pioneer/map": "^0.
|
|
13
|
-
"@open-pioneer/react-utils": "^0.2.
|
|
22
|
+
"@open-pioneer/map": "^0.4.0",
|
|
23
|
+
"@open-pioneer/react-utils": "^0.2.2"
|
|
14
24
|
},
|
|
15
25
|
"exports": {
|
|
16
26
|
"./package.json": "./package.json",
|