@open-pioneer/measurement 0.4.2 → 0.4.3
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 +11 -0
- package/Measurement.js +1 -1
- package/MeasurementController.d.ts +1 -2
- package/MeasurementController.js +28 -10
- package/MeasurementController.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @open-pioneer/measurement
|
|
2
2
|
|
|
3
|
+
## 0.4.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 28e092a: Update dependencies
|
|
8
|
+
- 484ad86: Add tooltip role to tooltip divs (See https://github.com/open-pioneer/trails-openlayers-base-packages/issues/309).
|
|
9
|
+
- Updated dependencies [28e092a]
|
|
10
|
+
- Updated dependencies [0d51d2f]
|
|
11
|
+
- Updated dependencies [76f8863]
|
|
12
|
+
- @open-pioneer/map@0.6.0
|
|
13
|
+
|
|
3
14
|
## 0.4.2
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
package/Measurement.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { Box, Text, FormControl, HStack, FormLabel, Select, Button } from '@open-pioneer/chakra-integration';
|
|
3
3
|
import { useMapModel } from '@open-pioneer/map';
|
|
4
4
|
import { useCommonComponentProps } from '@open-pioneer/react-utils';
|
|
5
|
-
import { Style, Stroke, Fill, Circle } from 'ol/style';
|
|
5
|
+
import { Style, Stroke, Fill, Circle } from 'ol/style.js';
|
|
6
6
|
import { useIntl } from './_virtual/_virtual-pioneer-module_react-hooks.js';
|
|
7
7
|
import { useState, useEffect } from 'react';
|
|
8
8
|
import { MeasurementController } from './MeasurementController.js';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import Feature from "ol/Feature";
|
|
2
2
|
import OlMap from "ol/Map";
|
|
3
3
|
import { Vector as VectorLayer } from "ol/layer";
|
|
4
|
-
import { Vector as VectorSource } from "ol/source";
|
|
5
4
|
import { StyleLike } from "ol/style/Style";
|
|
6
5
|
export type MeasurementType = "area" | "distance";
|
|
7
6
|
export interface Messages {
|
|
@@ -48,7 +47,7 @@ export declare class MeasurementController {
|
|
|
48
47
|
constructor(olMap: OlMap, messages: Messages);
|
|
49
48
|
destroy(): void;
|
|
50
49
|
/** Returns the vector layer used for finished features. */
|
|
51
|
-
getVectorLayer(): VectorLayer<
|
|
50
|
+
getVectorLayer(): VectorLayer<Feature<import("ol/geom").Geometry>>;
|
|
52
51
|
/** Updates the style used for finished features. */
|
|
53
52
|
setFinishedFeatureStyle(style: StyleLike): void;
|
|
54
53
|
/** Updates the style used for active measurements. */
|
package/MeasurementController.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { unByKey } from 'ol/Observable';
|
|
2
|
-
import Overlay from 'ol/Overlay';
|
|
3
|
-
import { Polygon, LineString } from 'ol/geom';
|
|
4
|
-
import Draw from 'ol/interaction/Draw';
|
|
5
|
-
import { Vector as Vector$1 } from 'ol/layer';
|
|
6
|
-
import { Vector } from 'ol/source';
|
|
7
|
-
import { getArea, getLength } from 'ol/sphere';
|
|
8
|
-
import { toFunction } from 'ol/style/Style';
|
|
1
|
+
import { unByKey } from 'ol/Observable.js';
|
|
2
|
+
import Overlay from 'ol/Overlay.js';
|
|
3
|
+
import { Polygon, LineString } from 'ol/geom.js';
|
|
4
|
+
import Draw from 'ol/interaction/Draw.js';
|
|
5
|
+
import { Vector as Vector$1 } from 'ol/layer.js';
|
|
6
|
+
import { Vector } from 'ol/source.js';
|
|
7
|
+
import { getArea, getLength } from 'ol/sphere.js';
|
|
8
|
+
import { toFunction } from 'ol/style/Style.js';
|
|
9
9
|
import { TOPMOST_LAYER_Z } from '@open-pioneer/map';
|
|
10
10
|
|
|
11
11
|
class MeasurementController {
|
|
@@ -146,7 +146,7 @@ class MeasurementController {
|
|
|
146
146
|
tooltipCoord = geom.getLastCoordinate() || null;
|
|
147
147
|
}
|
|
148
148
|
if (measureTooltip) {
|
|
149
|
-
measureTooltip.
|
|
149
|
+
measureTooltip.setHtml(output);
|
|
150
150
|
if (tooltipCoord) {
|
|
151
151
|
measureTooltip?.overlay.setPosition(tooltipCoord);
|
|
152
152
|
}
|
|
@@ -194,6 +194,9 @@ class MeasurementController {
|
|
|
194
194
|
createMeasureTooltip() {
|
|
195
195
|
const element = document.createElement("div");
|
|
196
196
|
element.className = "measurement-tooltip measurement-active-tooltip printing-hide";
|
|
197
|
+
element.role = "tooltip";
|
|
198
|
+
const content = document.createElement("span");
|
|
199
|
+
element.appendChild(content);
|
|
197
200
|
const overlay = new Overlay({
|
|
198
201
|
element,
|
|
199
202
|
offset: [0, -15],
|
|
@@ -208,12 +211,21 @@ class MeasurementController {
|
|
|
208
211
|
element,
|
|
209
212
|
destroy() {
|
|
210
213
|
olMap.removeOverlay(overlay);
|
|
214
|
+
},
|
|
215
|
+
setText(value) {
|
|
216
|
+
content.textContent = value;
|
|
217
|
+
},
|
|
218
|
+
setHtml(value) {
|
|
219
|
+
content.innerHTML = value;
|
|
211
220
|
}
|
|
212
221
|
};
|
|
213
222
|
}
|
|
214
223
|
createHelpTooltip() {
|
|
215
224
|
const element = document.createElement("div");
|
|
216
225
|
element.className = "measurement-tooltip printing-hide hidden";
|
|
226
|
+
element.role = "tooltip";
|
|
227
|
+
const content = document.createElement("span");
|
|
228
|
+
element.appendChild(content);
|
|
217
229
|
const overlay = new Overlay({
|
|
218
230
|
element,
|
|
219
231
|
offset: [15, 0],
|
|
@@ -226,6 +238,12 @@ class MeasurementController {
|
|
|
226
238
|
element,
|
|
227
239
|
destroy() {
|
|
228
240
|
olMap.removeOverlay(overlay);
|
|
241
|
+
},
|
|
242
|
+
setText(value) {
|
|
243
|
+
content.textContent = value;
|
|
244
|
+
},
|
|
245
|
+
setHtml(value) {
|
|
246
|
+
content.innerHTML = value;
|
|
229
247
|
}
|
|
230
248
|
};
|
|
231
249
|
}
|
|
@@ -235,7 +253,7 @@ class MeasurementController {
|
|
|
235
253
|
}
|
|
236
254
|
const tooltip = this.helpTooltip;
|
|
237
255
|
const helpMessage = getHelpMessage(this.messages, this.sketch);
|
|
238
|
-
tooltip.
|
|
256
|
+
tooltip.setText(helpMessage);
|
|
239
257
|
tooltip.overlay.setPosition(evt.coordinate);
|
|
240
258
|
tooltip.element.classList.remove("hidden");
|
|
241
259
|
}
|
|
@@ -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.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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"}
|
|
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<Feature>;\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.setHtml(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 element.role = \"tooltip\";\n\n const content = document.createElement(\"span\");\n element.appendChild(content);\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 setText(value) {\n content.textContent = value;\n },\n setHtml(value) {\n content.innerHTML = value;\n }\n };\n }\n\n private createHelpTooltip(): Tooltip {\n const element = document.createElement(\"div\");\n element.className = \"measurement-tooltip printing-hide hidden\";\n element.role = \"tooltip\";\n\n const content = document.createElement(\"span\");\n element.appendChild(content);\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 setText(value) {\n content.textContent = value;\n },\n setHtml(value) {\n content.innerHTML = value;\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.setText(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 setText(value: string): void;\n setHtml(value: string): void;\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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@open-pioneer/measurement",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.3",
|
|
5
5
|
"description": "This package provides a UI component that allows the user to perform area and distance measurements on the map.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"open-pioneer-trails"
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@open-pioneer/chakra-integration": "^1.1.3",
|
|
18
|
-
"@open-pioneer/runtime": "^2.1.
|
|
19
|
-
"
|
|
18
|
+
"@open-pioneer/runtime": "^2.1.6",
|
|
19
|
+
"@open-pioneer/react-utils": "^1.0.0",
|
|
20
|
+
"ol": "^9.2.4",
|
|
20
21
|
"react": "^18.3.1",
|
|
21
22
|
"classnames": "^2.3.2",
|
|
22
|
-
"@open-pioneer/map": "^0.
|
|
23
|
-
"@open-pioneer/react-utils": "^0.2.3"
|
|
23
|
+
"@open-pioneer/map": "^0.6.0"
|
|
24
24
|
},
|
|
25
25
|
"exports": {
|
|
26
26
|
"./package.json": "./package.json",
|