@open-pioneer/geolocation 1.2.0-dev.20260121105545 → 1.3.0-dev-map-loading.20260202141334
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
CHANGED
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
# @open-pioneer/geolocation
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1.3.0-dev-map-loading.20260202141334
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
+
- Updated dependencies [f5030cc]
|
|
8
|
+
- Updated dependencies [f5030cc]
|
|
9
|
+
- @open-pioneer/map@1.3.0-dev-map-loading.20260202141334
|
|
10
|
+
- @open-pioneer/map-ui-components@1.3.0-dev-map-loading.20260202141334
|
|
11
|
+
|
|
12
|
+
## 1.2.0
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 9c29256: Update to core packages 4.4.0
|
|
7
17
|
- 279ca67: Use `workspace:*` instead of `workspace:^` for local package references as default. This ensures that trails packages from this repository are always referenced with their exact version to avoid potential issues with version mismatches. If a project specifically wants to use other versions for some trails packages, a pnpm override can be used to force other versions.
|
|
8
18
|
- 9580bb4: Update various dependencies.
|
|
9
19
|
- 9580bb4: Update to Chakra 3.31.0
|
|
20
|
+
- Updated dependencies [597584b]
|
|
21
|
+
- Updated dependencies [9c29256]
|
|
10
22
|
- Updated dependencies [279ca67]
|
|
23
|
+
- Updated dependencies [597584b]
|
|
11
24
|
- Updated dependencies [9580bb4]
|
|
12
25
|
- Updated dependencies [9580bb4]
|
|
13
|
-
- @open-pioneer/map@1.2.0
|
|
14
|
-
- @open-pioneer/map-ui-components@1.2.0
|
|
26
|
+
- @open-pioneer/map@1.2.0
|
|
27
|
+
- @open-pioneer/map-ui-components@1.2.0
|
|
15
28
|
|
|
16
29
|
## 1.1.0
|
|
17
30
|
|
package/GeolocationController.js
CHANGED
|
@@ -8,8 +8,9 @@ import Point from 'ol/geom/Point.js';
|
|
|
8
8
|
import VectorLayer from 'ol/layer/Vector.js';
|
|
9
9
|
import VectorSource from 'ol/source/Vector.js';
|
|
10
10
|
import { Style, Fill, Stroke, Circle } from 'ol/style.js';
|
|
11
|
+
import { sourceId } from './_virtual/source-info.js';
|
|
11
12
|
|
|
12
|
-
const LOG = createLogger(
|
|
13
|
+
const LOG = createLogger(sourceId);
|
|
13
14
|
const DEFAULT_MAX_ZOOM = 17;
|
|
14
15
|
class GeolocationController {
|
|
15
16
|
/** True if location tracking is supported by the browser. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeolocationController.js","sources":["GeolocationController.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { reactive } from \"@conterra/reactivity-core\";\nimport { createLogger } from \"@open-pioneer/core\";\nimport { calculateBufferedExtent, LayerFactory, MapModel, SimpleLayer } from \"@open-pioneer/map\";\nimport Feature from \"ol/Feature\";\nimport olGeolocation, { GeolocationError } from \"ol/Geolocation\";\nimport { unByKey } from \"ol/Observable\";\nimport { Coordinate } from \"ol/coordinate\";\nimport type { EventsKey } from \"ol/events\";\nimport { Extent } from \"ol/extent\";\nimport { Polygon } from \"ol/geom\";\nimport Point from \"ol/geom/Point\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport VectorSource from \"ol/source/Vector\";\nimport { Circle as CircleStyle, Fill, Stroke, Style } from \"ol/style\";\nimport { StyleLike } from \"ol/style/Style\";\n\nconst LOG = createLogger(\"geolocation:GeolocationController\");\nconst DEFAULT_MAX_ZOOM = 17;\n\nexport type ErrorEvent = \"permission-denied\" | \"position-unavailable\" | \"timeout\" | \"unknown\";\n\nexport type OnErrorCallback = (errorEvent: ErrorEvent) => void;\n\nexport class GeolocationController {\n /** True if location tracking is supported by the browser. */\n public readonly supported = !!navigator.geolocation;\n\n private readonly map: MapModel;\n private readonly positionHighlightLayer: SimpleLayer;\n private readonly geolocation: olGeolocation;\n private readonly onError: OnErrorCallback;\n\n private maxZoom: number = DEFAULT_MAX_ZOOM;\n private accuracyFeature: Feature | undefined;\n private positionFeature: Feature | undefined;\n private changeHandlers: EventsKey[] = [];\n private setMapToPosition: boolean = true;\n private trackingOptions: PositionOptions = {};\n private isInitialZoom: boolean = true;\n\n #loading = reactive(false);\n #active = reactive(false);\n\n constructor(\n map: MapModel,\n layerFactory: LayerFactory,\n onError: OnErrorCallback,\n trackingOptions?: PositionOptions\n ) {\n this.map = map;\n this.onError = onError;\n this.isInitialZoom = true;\n\n this.accuracyFeature = new Feature();\n this.accuracyFeature.setStyle(getDefaultAccuracyStyle());\n\n this.positionFeature = new Feature();\n this.positionFeature.setStyle(getDefaultPositionStyle());\n\n const olLayer = new VectorLayer({\n source: new VectorSource({\n features: [this.accuracyFeature, this.positionFeature]\n })\n });\n this.positionHighlightLayer = layerFactory.create({\n type: SimpleLayer,\n title: \"geolocation-highlight-layer\",\n internal: true,\n olLayer: olLayer\n });\n\n const geolocationTrackingOptions: PositionOptions =\n trackingOptions || getDefaultTrackingOptions();\n\n this.geolocation = new olGeolocation({\n tracking: false,\n trackingOptions: geolocationTrackingOptions,\n projection: map.olView?.getProjection()\n });\n\n this.trackingOptions = geolocationTrackingOptions;\n this.geolocation.on(\"error\", (event) => this.handleGeolocationError(event));\n }\n\n destroy() {\n this.stopGeolocation();\n this.geolocation?.setTracking(false);\n this.geolocation.dispose();\n this.positionHighlightLayer.destroy();\n this.accuracyFeature = undefined;\n this.positionFeature = undefined;\n }\n\n startGeolocation() {\n if (this.#active.value) {\n return;\n }\n\n const geolocationPromise = new Promise<void>((resolve) => {\n this.#active.value = true;\n this.#loading.value = true;\n\n this.geolocation?.setProjection(this.map.olView?.getProjection());\n this.geolocation?.setTracking(true);\n\n const accuracyChangeHandler: EventsKey = this.geolocation.on(\n \"change:accuracyGeometry\",\n () => {\n const accuracyGeometry: Polygon | undefined =\n this.geolocation.getAccuracyGeometry() || undefined;\n this.accuracyFeature?.setGeometry(accuracyGeometry);\n if (this.accuracyFeature?.getGeometry() !== undefined) {\n resolve();\n }\n if (this.isInitialZoom) {\n const accuracyGeometryExtent: Extent | undefined = this?.accuracyFeature\n ?.getGeometry()\n ?.getExtent();\n if (accuracyGeometryExtent) {\n const bufferedExtent = calculateBufferedExtent(accuracyGeometryExtent);\n if (!bufferedExtent) {\n return;\n }\n this.map.olView.fit(bufferedExtent, {\n maxZoom: this.maxZoom\n });\n this.isInitialZoom = false;\n }\n }\n }\n );\n\n const positionChangeHandler: EventsKey = this.geolocation.on(\"change:position\", () => {\n const coordinates: Coordinate | undefined = this.geolocation.getPosition();\n if (coordinates && (coordinates[0] || coordinates[1]) !== undefined) {\n this.positionFeature?.setGeometry(new Point(coordinates));\n if (this.setMapToPosition) {\n this.map.olView.setCenter(coordinates);\n }\n if (this.positionFeature?.getGeometry() !== undefined) {\n resolve();\n }\n }\n });\n\n // zoom changes\n const resolutionChangeHandler: EventsKey = this.map.olView.on(\n \"change:resolution\",\n () => {\n this.setMapToPosition = this.isInitialZoom;\n }\n );\n\n // pointermove is triggered when a pointer is moved.\n // Note that on touch devices this is triggered when the map is panned,\n // so is not the same as mousemove.\n const draggingHandler: EventsKey = this.map.olMap.on(\"pointermove\", (evt) => {\n if (evt.dragging) {\n this.setMapToPosition = false;\n }\n });\n\n this.changeHandlers.push(\n accuracyChangeHandler,\n positionChangeHandler,\n resolutionChangeHandler,\n draggingHandler\n );\n\n this.map.layers.addLayer(this.positionHighlightLayer, { at: \"topmost\" });\n });\n\n geolocationPromise\n .then(() => {\n // Promise resolves once we have a position\n this.#loading.value = false;\n })\n .catch((error: Error) => {\n LOG.error(\"Failed to determine location\", error);\n });\n }\n\n stopGeolocation() {\n this.geolocation?.setTracking(false);\n this.#active.value = false;\n this.#loading.value = false;\n this.trackingOptions = {};\n this.setMapToPosition = true;\n this.isInitialZoom = true;\n\n this.changeHandlers.forEach((handler) => {\n unByKey(handler);\n });\n this.changeHandlers = [];\n this.accuracyFeature?.setGeometry(undefined);\n this.positionFeature?.setGeometry(undefined);\n this.map.layers.removeLayer(this.positionHighlightLayer);\n }\n\n /** True if the position is being tracked. */\n get active(): boolean {\n return this.#active.value;\n }\n\n /**\n * True if loading (active but no position available yet).\n * Use this to show a progress indicator.\n */\n get loading(): boolean {\n return this.#loading.value;\n }\n\n setPositionFeatureStyle(styleLike: StyleLike | undefined) {\n this.positionFeature?.setStyle(styleLike ?? getDefaultPositionStyle());\n }\n\n setAccuracyFeatureStyle(styleLike: StyleLike | undefined) {\n this.accuracyFeature?.setStyle(styleLike ?? getDefaultAccuracyStyle());\n }\n\n setMaxZoom(maxZoom: number | undefined) {\n this.maxZoom = maxZoom ?? DEFAULT_MAX_ZOOM;\n }\n\n getMaxZoom() {\n return this.maxZoom;\n }\n\n getPositionFeature() {\n return this.positionFeature;\n }\n\n getAccuracyFeature() {\n return this.accuracyFeature;\n }\n\n getTrackingOptions() {\n return this.trackingOptions;\n }\n\n getGeolocation() {\n return this.geolocation;\n }\n\n private handleGeolocationError(event: GeolocationError) {\n LOG.error(\"Error from geolocation API:\", event.message);\n\n this.stopGeolocation();\n const error: ErrorEvent = (() => {\n switch (event.code) {\n case 1:\n return \"permission-denied\";\n case 2:\n return \"position-unavailable\";\n case 3:\n return \"timeout\";\n default:\n return \"unknown\";\n }\n })();\n this.onError(error);\n }\n}\n\nexport const getDefaultPositionStyle = () => {\n return new Style({\n image: new CircleStyle({\n radius: 6,\n fill: new Fill({\n color: \"#3399CC\"\n }),\n stroke: new Stroke({\n color: \"#fff\",\n width: 2\n })\n })\n });\n};\n\nexport const getDefaultAccuracyStyle = () => {\n return new Style({\n stroke: new Stroke({\n color: \"#3399CC\",\n width: 3\n }),\n fill: new Fill({\n color: \"rgba(0, 0, 255, 0.05)\"\n })\n });\n};\n\nexport const getDefaultTrackingOptions = (): PositionOptions => {\n return {\n \"enableHighAccuracy\": true,\n \"timeout\": 60000,\n \"maximumAge\": 600000\n };\n};\n"],"names":["CircleStyle"],"mappings":";;;;;;;;;;;AAkBA,MAAM,GAAA,GAAM,aAAa,mCAAmC,CAAA;AAC5D,MAAM,gBAAA,GAAmB,EAAA;AAMlB,MAAM,qBAAA,CAAsB;AAAA;AAAA,EAEf,SAAA,GAAY,CAAC,CAAC,SAAA,CAAU,WAAA;AAAA,EAEvB,GAAA;AAAA,EACA,sBAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EAET,OAAA,GAAkB,gBAAA;AAAA,EAClB,eAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAA8B,EAAC;AAAA,EAC/B,gBAAA,GAA4B,IAAA;AAAA,EAC5B,kBAAmC,EAAC;AAAA,EACpC,aAAA,GAAyB,IAAA;AAAA,EAEjC,QAAA,GAAW,SAAS,KAAK,CAAA;AAAA,EACzB,OAAA,GAAU,SAAS,KAAK,CAAA;AAAA,EAExB,WAAA,CACI,GAAA,EACA,YAAA,EACA,OAAA,EACA,eAAA,EACF;AACE,IAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAErB,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAI,OAAA,EAAQ;AACnC,IAAA,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,uBAAA,EAAyB,CAAA;AAEvD,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAI,OAAA,EAAQ;AACnC,IAAA,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,uBAAA,EAAyB,CAAA;AAEvD,IAAA,MAAM,OAAA,GAAU,IAAI,WAAA,CAAY;AAAA,MAC5B,MAAA,EAAQ,IAAI,YAAA,CAAa;AAAA,QACrB,QAAA,EAAU,CAAC,IAAA,CAAK,eAAA,EAAiB,KAAK,eAAe;AAAA,OACxD;AAAA,KACJ,CAAA;AACD,IAAA,IAAA,CAAK,sBAAA,GAAyB,aAAa,MAAA,CAAO;AAAA,MAC9C,IAAA,EAAM,WAAA;AAAA,MACN,KAAA,EAAO,6BAAA;AAAA,MACP,QAAA,EAAU,IAAA;AAAA,MACV;AAAA,KACH,CAAA;AAED,IAAA,MAAM,0BAAA,GACF,mBAAmB,yBAAA,EAA0B;AAEjD,IAAA,IAAA,CAAK,WAAA,GAAc,IAAI,aAAA,CAAc;AAAA,MACjC,QAAA,EAAU,KAAA;AAAA,MACV,eAAA,EAAiB,0BAAA;AAAA,MACjB,UAAA,EAAY,GAAA,CAAI,MAAA,EAAQ,aAAA;AAAc,KACzC,CAAA;AAED,IAAA,IAAA,CAAK,eAAA,GAAkB,0BAAA;AACvB,IAAA,IAAA,CAAK,WAAA,CAAY,GAAG,OAAA,EAAS,CAAC,UAAU,IAAA,CAAK,sBAAA,CAAuB,KAAK,CAAC,CAAA;AAAA,EAC9E;AAAA,EAEA,OAAA,GAAU;AACN,IAAA,IAAA,CAAK,eAAA,EAAgB;AACrB,IAAA,IAAA,CAAK,WAAA,EAAa,YAAY,KAAK,CAAA;AACnC,IAAA,IAAA,CAAK,YAAY,OAAA,EAAQ;AACzB,IAAA,IAAA,CAAK,uBAAuB,OAAA,EAAQ;AACpC,IAAA,IAAA,CAAK,eAAA,GAAkB,MAAA;AACvB,IAAA,IAAA,CAAK,eAAA,GAAkB,MAAA;AAAA,EAC3B;AAAA,EAEA,gBAAA,GAAmB;AACf,IAAA,IAAI,IAAA,CAAK,QAAQ,KAAA,EAAO;AACpB,MAAA;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAA,GAAqB,IAAI,OAAA,CAAc,CAAC,OAAA,KAAY;AACtD,MAAA,IAAA,CAAK,QAAQ,KAAA,GAAQ,IAAA;AACrB,MAAA,IAAA,CAAK,SAAS,KAAA,GAAQ,IAAA;AAEtB,MAAA,IAAA,CAAK,aAAa,aAAA,CAAc,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,eAAe,CAAA;AAChE,MAAA,IAAA,CAAK,WAAA,EAAa,YAAY,IAAI,CAAA;AAElC,MAAA,MAAM,qBAAA,GAAmC,KAAK,WAAA,CAAY,EAAA;AAAA,QACtD,yBAAA;AAAA,QACA,MAAM;AACF,UAAA,MAAM,gBAAA,GACF,IAAA,CAAK,WAAA,CAAY,mBAAA,EAAoB,IAAK,MAAA;AAC9C,UAAA,IAAA,CAAK,eAAA,EAAiB,YAAY,gBAAgB,CAAA;AAClD,UAAA,IAAI,IAAA,CAAK,eAAA,EAAiB,WAAA,EAAY,KAAM,MAAA,EAAW;AACnD,YAAA,OAAA,EAAQ;AAAA,UACZ;AACA,UAAA,IAAI,KAAK,aAAA,EAAe;AACpB,YAAA,MAAM,sBAAA,GAA6C,IAAA,EAAM,eAAA,EACnD,WAAA,IACA,SAAA,EAAU;AAChB,YAAA,IAAI,sBAAA,EAAwB;AACxB,cAAA,MAAM,cAAA,GAAiB,wBAAwB,sBAAsB,CAAA;AACrE,cAAA,IAAI,CAAC,cAAA,EAAgB;AACjB,gBAAA;AAAA,cACJ;AACA,cAAA,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,cAAA,EAAgB;AAAA,gBAChC,SAAS,IAAA,CAAK;AAAA,eACjB,CAAA;AACD,cAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AAAA,YACzB;AAAA,UACJ;AAAA,QACJ;AAAA,OACJ;AAEA,MAAA,MAAM,qBAAA,GAAmC,IAAA,CAAK,WAAA,CAAY,EAAA,CAAG,mBAAmB,MAAM;AAClF,QAAA,MAAM,WAAA,GAAsC,IAAA,CAAK,WAAA,CAAY,WAAA,EAAY;AACzE,QAAA,IAAI,gBAAgB,WAAA,CAAY,CAAC,KAAK,WAAA,CAAY,CAAC,OAAO,MAAA,EAAW;AACjE,UAAA,IAAA,CAAK,eAAA,EAAiB,WAAA,CAAY,IAAI,KAAA,CAAM,WAAW,CAAC,CAAA;AACxD,UAAA,IAAI,KAAK,gBAAA,EAAkB;AACvB,YAAA,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,SAAA,CAAU,WAAW,CAAA;AAAA,UACzC;AACA,UAAA,IAAI,IAAA,CAAK,eAAA,EAAiB,WAAA,EAAY,KAAM,MAAA,EAAW;AACnD,YAAA,OAAA,EAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,MACJ,CAAC,CAAA;AAGD,MAAA,MAAM,uBAAA,GAAqC,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,EAAA;AAAA,QACvD,mBAAA;AAAA,QACA,MAAM;AACF,UAAA,IAAA,CAAK,mBAAmB,IAAA,CAAK,aAAA;AAAA,QACjC;AAAA,OACJ;AAKA,MAAA,MAAM,kBAA6B,IAAA,CAAK,GAAA,CAAI,MAAM,EAAA,CAAG,aAAA,EAAe,CAAC,GAAA,KAAQ;AACzE,QAAA,IAAI,IAAI,QAAA,EAAU;AACd,UAAA,IAAA,CAAK,gBAAA,GAAmB,KAAA;AAAA,QAC5B;AAAA,MACJ,CAAC,CAAA;AAED,MAAA,IAAA,CAAK,cAAA,CAAe,IAAA;AAAA,QAChB,qBAAA;AAAA,QACA,qBAAA;AAAA,QACA,uBAAA;AAAA,QACA;AAAA,OACJ;AAEA,MAAA,IAAA,CAAK,GAAA,CAAI,OAAO,QAAA,CAAS,IAAA,CAAK,wBAAwB,EAAE,EAAA,EAAI,WAAW,CAAA;AAAA,IAC3E,CAAC,CAAA;AAED,IAAA,kBAAA,CACK,KAAK,MAAM;AAER,MAAA,IAAA,CAAK,SAAS,KAAA,GAAQ,KAAA;AAAA,IAC1B,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KAAiB;AACrB,MAAA,GAAA,CAAI,KAAA,CAAM,gCAAgC,KAAK,CAAA;AAAA,IACnD,CAAC,CAAA;AAAA,EACT;AAAA,EAEA,eAAA,GAAkB;AACd,IAAA,IAAA,CAAK,WAAA,EAAa,YAAY,KAAK,CAAA;AACnC,IAAA,IAAA,CAAK,QAAQ,KAAA,GAAQ,KAAA;AACrB,IAAA,IAAA,CAAK,SAAS,KAAA,GAAQ,KAAA;AACtB,IAAA,IAAA,CAAK,kBAAkB,EAAC;AACxB,IAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA;AACxB,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAErB,IAAA,IAAA,CAAK,cAAA,CAAe,OAAA,CAAQ,CAAC,OAAA,KAAY;AACrC,MAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,IACnB,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,iBAAiB,EAAC;AACvB,IAAA,IAAA,CAAK,eAAA,EAAiB,YAAY,MAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,eAAA,EAAiB,YAAY,MAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,sBAAsB,CAAA;AAAA,EAC3D;AAAA;AAAA,EAGA,IAAI,MAAA,GAAkB;AAClB,IAAA,OAAO,KAAK,OAAA,CAAQ,KAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,OAAA,GAAmB;AACnB,IAAA,OAAO,KAAK,QAAA,CAAS,KAAA;AAAA,EACzB;AAAA,EAEA,wBAAwB,SAAA,EAAkC;AACtD,IAAA,IAAA,CAAK,eAAA,EAAiB,QAAA,CAAS,SAAA,IAAa,uBAAA,EAAyB,CAAA;AAAA,EACzE;AAAA,EAEA,wBAAwB,SAAA,EAAkC;AACtD,IAAA,IAAA,CAAK,eAAA,EAAiB,QAAA,CAAS,SAAA,IAAa,uBAAA,EAAyB,CAAA;AAAA,EACzE;AAAA,EAEA,WAAW,OAAA,EAA6B;AACpC,IAAA,IAAA,CAAK,UAAU,OAAA,IAAW,gBAAA;AAAA,EAC9B;AAAA,EAEA,UAAA,GAAa;AACT,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EAChB;AAAA,EAEA,kBAAA,GAAqB;AACjB,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EAChB;AAAA,EAEA,kBAAA,GAAqB;AACjB,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EAChB;AAAA,EAEA,kBAAA,GAAqB;AACjB,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EAChB;AAAA,EAEA,cAAA,GAAiB;AACb,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EAChB;AAAA,EAEQ,uBAAuB,KAAA,EAAyB;AACpD,IAAA,GAAA,CAAI,KAAA,CAAM,6BAAA,EAA+B,KAAA,CAAM,OAAO,CAAA;AAEtD,IAAA,IAAA,CAAK,eAAA,EAAgB;AACrB,IAAA,MAAM,SAAqB,MAAM;AAC7B,MAAA,QAAQ,MAAM,IAAA;AAAM,QAChB,KAAK,CAAA;AACD,UAAA,OAAO,mBAAA;AAAA,QACX,KAAK,CAAA;AACD,UAAA,OAAO,sBAAA;AAAA,QACX,KAAK,CAAA;AACD,UAAA,OAAO,SAAA;AAAA,QACX;AACI,UAAA,OAAO,SAAA;AAAA;AACf,IACJ,CAAA,GAAG;AACH,IAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,EACtB;AACJ;AAEO,MAAM,0BAA0B,MAAM;AACzC,EAAA,OAAO,IAAI,KAAA,CAAM;AAAA,IACb,KAAA,EAAO,IAAIA,MAAA,CAAY;AAAA,MACnB,MAAA,EAAQ,CAAA;AAAA,MACR,IAAA,EAAM,IAAI,IAAA,CAAK;AAAA,QACX,KAAA,EAAO;AAAA,OACV,CAAA;AAAA,MACD,MAAA,EAAQ,IAAI,MAAA,CAAO;AAAA,QACf,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO;AAAA,OACV;AAAA,KACJ;AAAA,GACJ,CAAA;AACL,CAAA;AAEO,MAAM,0BAA0B,MAAM;AACzC,EAAA,OAAO,IAAI,KAAA,CAAM;AAAA,IACb,MAAA,EAAQ,IAAI,MAAA,CAAO;AAAA,MACf,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACV,CAAA;AAAA,IACD,IAAA,EAAM,IAAI,IAAA,CAAK;AAAA,MACX,KAAA,EAAO;AAAA,KACV;AAAA,GACJ,CAAA;AACL,CAAA;AAEO,MAAM,4BAA4B,MAAuB;AAC5D,EAAA,OAAO;AAAA,IACH,oBAAA,EAAsB,IAAA;AAAA,IACtB,SAAA,EAAW,GAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAClB;AACJ,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"GeolocationController.js","sources":["GeolocationController.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { reactive } from \"@conterra/reactivity-core\";\nimport { createLogger } from \"@open-pioneer/core\";\nimport { calculateBufferedExtent, LayerFactory, MapModel, SimpleLayer } from \"@open-pioneer/map\";\nimport Feature from \"ol/Feature\";\nimport olGeolocation, { GeolocationError } from \"ol/Geolocation\";\nimport { unByKey } from \"ol/Observable\";\nimport { Coordinate } from \"ol/coordinate\";\nimport type { EventsKey } from \"ol/events\";\nimport { Extent } from \"ol/extent\";\nimport { Polygon } from \"ol/geom\";\nimport Point from \"ol/geom/Point\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport VectorSource from \"ol/source/Vector\";\nimport { Circle as CircleStyle, Fill, Stroke, Style } from \"ol/style\";\nimport { StyleLike } from \"ol/style/Style\";\nimport { sourceId } from \"open-pioneer:source-info\";\n\nconst LOG = createLogger(sourceId);\nconst DEFAULT_MAX_ZOOM = 17;\n\nexport type ErrorEvent = \"permission-denied\" | \"position-unavailable\" | \"timeout\" | \"unknown\";\n\nexport type OnErrorCallback = (errorEvent: ErrorEvent) => void;\n\nexport class GeolocationController {\n /** True if location tracking is supported by the browser. */\n public readonly supported = !!navigator.geolocation;\n\n private readonly map: MapModel;\n private readonly positionHighlightLayer: SimpleLayer;\n private readonly geolocation: olGeolocation;\n private readonly onError: OnErrorCallback;\n\n private maxZoom: number = DEFAULT_MAX_ZOOM;\n private accuracyFeature: Feature | undefined;\n private positionFeature: Feature | undefined;\n private changeHandlers: EventsKey[] = [];\n private setMapToPosition: boolean = true;\n private trackingOptions: PositionOptions = {};\n private isInitialZoom: boolean = true;\n\n #loading = reactive(false);\n #active = reactive(false);\n\n constructor(\n map: MapModel,\n layerFactory: LayerFactory,\n onError: OnErrorCallback,\n trackingOptions?: PositionOptions\n ) {\n this.map = map;\n this.onError = onError;\n this.isInitialZoom = true;\n\n this.accuracyFeature = new Feature();\n this.accuracyFeature.setStyle(getDefaultAccuracyStyle());\n\n this.positionFeature = new Feature();\n this.positionFeature.setStyle(getDefaultPositionStyle());\n\n const olLayer = new VectorLayer({\n source: new VectorSource({\n features: [this.accuracyFeature, this.positionFeature]\n })\n });\n this.positionHighlightLayer = layerFactory.create({\n type: SimpleLayer,\n title: \"geolocation-highlight-layer\",\n internal: true,\n olLayer: olLayer\n });\n\n const geolocationTrackingOptions: PositionOptions =\n trackingOptions || getDefaultTrackingOptions();\n\n this.geolocation = new olGeolocation({\n tracking: false,\n trackingOptions: geolocationTrackingOptions,\n projection: map.olView?.getProjection()\n });\n\n this.trackingOptions = geolocationTrackingOptions;\n this.geolocation.on(\"error\", (event) => this.handleGeolocationError(event));\n }\n\n destroy() {\n this.stopGeolocation();\n this.geolocation?.setTracking(false);\n this.geolocation.dispose();\n this.positionHighlightLayer.destroy();\n this.accuracyFeature = undefined;\n this.positionFeature = undefined;\n }\n\n startGeolocation() {\n if (this.#active.value) {\n return;\n }\n\n const geolocationPromise = new Promise<void>((resolve) => {\n this.#active.value = true;\n this.#loading.value = true;\n\n this.geolocation?.setProjection(this.map.olView?.getProjection());\n this.geolocation?.setTracking(true);\n\n const accuracyChangeHandler: EventsKey = this.geolocation.on(\n \"change:accuracyGeometry\",\n () => {\n const accuracyGeometry: Polygon | undefined =\n this.geolocation.getAccuracyGeometry() || undefined;\n this.accuracyFeature?.setGeometry(accuracyGeometry);\n if (this.accuracyFeature?.getGeometry() !== undefined) {\n resolve();\n }\n if (this.isInitialZoom) {\n const accuracyGeometryExtent: Extent | undefined = this?.accuracyFeature\n ?.getGeometry()\n ?.getExtent();\n if (accuracyGeometryExtent) {\n const bufferedExtent = calculateBufferedExtent(accuracyGeometryExtent);\n if (!bufferedExtent) {\n return;\n }\n this.map.olView.fit(bufferedExtent, {\n maxZoom: this.maxZoom\n });\n this.isInitialZoom = false;\n }\n }\n }\n );\n\n const positionChangeHandler: EventsKey = this.geolocation.on(\"change:position\", () => {\n const coordinates: Coordinate | undefined = this.geolocation.getPosition();\n if (coordinates && (coordinates[0] || coordinates[1]) !== undefined) {\n this.positionFeature?.setGeometry(new Point(coordinates));\n if (this.setMapToPosition) {\n this.map.olView.setCenter(coordinates);\n }\n if (this.positionFeature?.getGeometry() !== undefined) {\n resolve();\n }\n }\n });\n\n // zoom changes\n const resolutionChangeHandler: EventsKey = this.map.olView.on(\n \"change:resolution\",\n () => {\n this.setMapToPosition = this.isInitialZoom;\n }\n );\n\n // pointermove is triggered when a pointer is moved.\n // Note that on touch devices this is triggered when the map is panned,\n // so is not the same as mousemove.\n const draggingHandler: EventsKey = this.map.olMap.on(\"pointermove\", (evt) => {\n if (evt.dragging) {\n this.setMapToPosition = false;\n }\n });\n\n this.changeHandlers.push(\n accuracyChangeHandler,\n positionChangeHandler,\n resolutionChangeHandler,\n draggingHandler\n );\n\n this.map.layers.addLayer(this.positionHighlightLayer, { at: \"topmost\" });\n });\n\n geolocationPromise\n .then(() => {\n // Promise resolves once we have a position\n this.#loading.value = false;\n })\n .catch((error: Error) => {\n LOG.error(\"Failed to determine location\", error);\n });\n }\n\n stopGeolocation() {\n this.geolocation?.setTracking(false);\n this.#active.value = false;\n this.#loading.value = false;\n this.trackingOptions = {};\n this.setMapToPosition = true;\n this.isInitialZoom = true;\n\n this.changeHandlers.forEach((handler) => {\n unByKey(handler);\n });\n this.changeHandlers = [];\n this.accuracyFeature?.setGeometry(undefined);\n this.positionFeature?.setGeometry(undefined);\n this.map.layers.removeLayer(this.positionHighlightLayer);\n }\n\n /** True if the position is being tracked. */\n get active(): boolean {\n return this.#active.value;\n }\n\n /**\n * True if loading (active but no position available yet).\n * Use this to show a progress indicator.\n */\n get loading(): boolean {\n return this.#loading.value;\n }\n\n setPositionFeatureStyle(styleLike: StyleLike | undefined) {\n this.positionFeature?.setStyle(styleLike ?? getDefaultPositionStyle());\n }\n\n setAccuracyFeatureStyle(styleLike: StyleLike | undefined) {\n this.accuracyFeature?.setStyle(styleLike ?? getDefaultAccuracyStyle());\n }\n\n setMaxZoom(maxZoom: number | undefined) {\n this.maxZoom = maxZoom ?? DEFAULT_MAX_ZOOM;\n }\n\n getMaxZoom() {\n return this.maxZoom;\n }\n\n getPositionFeature() {\n return this.positionFeature;\n }\n\n getAccuracyFeature() {\n return this.accuracyFeature;\n }\n\n getTrackingOptions() {\n return this.trackingOptions;\n }\n\n getGeolocation() {\n return this.geolocation;\n }\n\n private handleGeolocationError(event: GeolocationError) {\n LOG.error(\"Error from geolocation API:\", event.message);\n\n this.stopGeolocation();\n const error: ErrorEvent = (() => {\n switch (event.code) {\n case 1:\n return \"permission-denied\";\n case 2:\n return \"position-unavailable\";\n case 3:\n return \"timeout\";\n default:\n return \"unknown\";\n }\n })();\n this.onError(error);\n }\n}\n\nexport const getDefaultPositionStyle = () => {\n return new Style({\n image: new CircleStyle({\n radius: 6,\n fill: new Fill({\n color: \"#3399CC\"\n }),\n stroke: new Stroke({\n color: \"#fff\",\n width: 2\n })\n })\n });\n};\n\nexport const getDefaultAccuracyStyle = () => {\n return new Style({\n stroke: new Stroke({\n color: \"#3399CC\",\n width: 3\n }),\n fill: new Fill({\n color: \"rgba(0, 0, 255, 0.05)\"\n })\n });\n};\n\nexport const getDefaultTrackingOptions = (): PositionOptions => {\n return {\n \"enableHighAccuracy\": true,\n \"timeout\": 60000,\n \"maximumAge\": 600000\n };\n};\n"],"names":["CircleStyle"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-info.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@open-pioneer/geolocation",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.3.0-dev-map-loading.20260202141334",
|
|
5
5
|
"description": "This package provides a component to locate a user's position.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"open-pioneer-trails"
|
|
@@ -16,16 +16,16 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@conterra/reactivity-core": "^0.8.1",
|
|
18
18
|
"@chakra-ui/react": "^3.31.0",
|
|
19
|
-
"@open-pioneer/core": "4.4.0
|
|
20
|
-
"@open-pioneer/notifier": "4.4.0
|
|
21
|
-
"@open-pioneer/react-utils": "4.4.0
|
|
22
|
-
"@open-pioneer/reactivity": "4.4.0
|
|
23
|
-
"@open-pioneer/runtime": "4.4.0
|
|
19
|
+
"@open-pioneer/core": "^4.4.0",
|
|
20
|
+
"@open-pioneer/notifier": "^4.4.0",
|
|
21
|
+
"@open-pioneer/react-utils": "^4.4.0",
|
|
22
|
+
"@open-pioneer/reactivity": "^4.4.0",
|
|
23
|
+
"@open-pioneer/runtime": "^4.4.0",
|
|
24
24
|
"ol": "^10.7.0",
|
|
25
25
|
"react": "^19.2.3",
|
|
26
26
|
"react-icons": "^5.5.0",
|
|
27
|
-
"@open-pioneer/map": "1.
|
|
28
|
-
"@open-pioneer/map
|
|
27
|
+
"@open-pioneer/map-ui-components": "1.3.0-dev-map-loading.20260202141334",
|
|
28
|
+
"@open-pioneer/map": "1.3.0-dev-map-loading.20260202141334"
|
|
29
29
|
},
|
|
30
30
|
"exports": {
|
|
31
31
|
"./package.json": "./package.json",
|