diff --git a/langs/en.json b/langs/en.json index ac1e53187..ddb288373 100644 --- a/langs/en.json +++ b/langs/en.json @@ -674,6 +674,7 @@ }, "input_helpers": { "distance": { + "measureAgain": "Start new measurement from current location", "setFirst": "Measure from current location" } }, diff --git a/src/UI/InputElement/Helpers/DistanceInput.svelte b/src/UI/InputElement/Helpers/DistanceInput.svelte index e501d210a..0a4750979 100644 --- a/src/UI/InputElement/Helpers/DistanceInput.svelte +++ b/src/UI/InputElement/Helpers/DistanceInput.svelte @@ -7,7 +7,7 @@ import { UIEventSource, Store } from "../../../Logic/UIEventSource" import type { MapProperties } from "../../../Models/MapProperties" import ThemeViewState from "../../../Models/ThemeViewState" - import type { Feature } from "geojson" + import type { Feature, LineString } from "geojson" import type { RasterLayerPolygon } from "../../../Models/RasterLayers" import { RasterLayerUtils } from "../../../Models/RasterLayers" import { eliCategory } from "../../../Models/RasterLayerProperties" @@ -22,13 +22,16 @@ import Tr from "../../Base/Tr.svelte" import { onDestroy } from "svelte" - export let value: UIEventSource + export let value: UIEventSource export let feature: Feature export let args: { background?: string; zoom?: number } export let state: ThemeViewState = undefined export let map: UIEventSource = new UIEventSource(undefined) let center = GeoOperations.centerpointCoordinates(feature) + if (feature.geometry.type === "LineString") { + center = <[number, number]>GeoOperations.nearestPoint(>feature, center).geometry.coordinates + } export let initialCoordinate: { lon: number; lat: number } = { lon: center[0], lat: center[1] } let mapLocation: UIEventSource<{ lon: number; lat: number }> = new UIEventSource( initialCoordinate @@ -66,7 +69,7 @@ // A bit of a double task: calculate the actual value _and_ the map rendering const end = mapLocation.data const distance = GeoOperations.distanceBetween([start.lon, start.lat], [end.lon, end.lat]) - value.set(distance.toFixed(2)) + value.set(distance.toFixed(1)) return [ { @@ -93,6 +96,7 @@ layer: new LayerConfig(conflation), features: new StaticFeatureSource(lengthFeature), }) + const t = Translations.t.input_helpers.distance
@@ -102,6 +106,6 @@
-