@open-pioneer/geolocation 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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @open-pioneer/geolocation
2
2
 
3
+ ## 0.4.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 28e092a: Update dependencies
8
+ - Updated dependencies [28e092a]
9
+ - Updated dependencies [0d51d2f]
10
+ - Updated dependencies [2090e72]
11
+ - Updated dependencies [76f8863]
12
+ - @open-pioneer/map-ui-components@0.1.0
13
+ - @open-pioneer/map@0.6.0
14
+
3
15
  ## 0.4.2
4
16
 
5
17
  ### Patch Changes
package/Geolocation.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useMapModel } from '@open-pioneer/map';
3
- import { useCommonComponentProps, ToolButton } from '@open-pioneer/react-utils';
3
+ import { ToolButton } from '@open-pioneer/map-ui-components';
4
+ import { useCommonComponentProps } from '@open-pioneer/react-utils';
4
5
  import { useIntl, useService } from './_virtual/_virtual-pioneer-module_react-hooks.js';
5
6
  import { forwardRef, useState, useEffect } from 'react';
6
7
  import { MdMyLocation } from 'react-icons/md';
@@ -1 +1 @@
1
- {"version":3,"file":"Geolocation.js","sources":["Geolocation.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { MapModel, useMapModel } from \"@open-pioneer/map\";\nimport { NotificationService } from \"@open-pioneer/notifier\";\nimport {\n CommonComponentProps,\n ToolButton,\n useCommonComponentProps\n} from \"@open-pioneer/react-utils\";\nimport { StyleLike } from \"ol/style/Style\";\nimport { useIntl, useService } from \"open-pioneer:react-hooks\";\nimport { FC, ForwardedRef, RefAttributes, forwardRef, useEffect, useState } from \"react\";\nimport { MdMyLocation } from \"react-icons/md\";\nimport { GeolocationController } from \"./GeolocationController\";\n\n/**\n * These are properties supported by the {@link Geolocation} component.\n */\nexport interface GeolocationProps extends CommonComponentProps, RefAttributes<HTMLButtonElement> {\n /**\n * The id of the map.\n */\n mapId: string;\n /**\n * The default maximal zoom level\n */\n maxZoom?: number;\n /**\n * Style to be applied for the positioning highlight feature.\n */\n positionFeatureStyle?: StyleLike;\n /**\n * Style to be applied for the accuracy highlight of the positioning feature.\n */\n accuracyFeatureStyle?: StyleLike;\n /**\n * Position options for the Geolocation-Object.\n * See [PositionOptions](https://www.w3.org/TR/geolocation/#position_options_interface) for more details.\n *\n * NOTE: Changing the tracking options at runtime will reset the component's state.\n */\n trackingOptions?: PositionOptions;\n}\n\nexport const Geolocation: FC<GeolocationProps> = forwardRef(function Geolocation(\n props: GeolocationProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const { mapId, maxZoom, positionFeatureStyle, accuracyFeatureStyle, trackingOptions } = props;\n const { containerProps } = useCommonComponentProps(\"geolocation\", props);\n\n const supportsGeolocation = !!navigator.geolocation;\n const [isActive, setActive] = useState<boolean>(false);\n const [isLoading, setLoading] = useState<boolean>(false);\n const { map } = useMapModel(mapId);\n const intl = useIntl();\n const notificationService = useService<NotificationService>(\"notifier.NotificationService\");\n\n const controller = useController(\n map,\n maxZoom,\n trackingOptions,\n positionFeatureStyle,\n accuracyFeatureStyle\n );\n\n const label = (() => {\n if (!supportsGeolocation) {\n return intl.formatMessage({ id: \"locateNotSupported\" });\n }\n\n if (isActive) {\n return intl.formatMessage({ id: \"locateMeEnd\" });\n } else {\n return intl.formatMessage({ id: \"locateMeStart\" });\n }\n })();\n\n useEffect(() => {\n if (controller === undefined) {\n return;\n }\n\n const eventsKey = controller.on(\"error\", function (error) {\n const title = intl.formatMessage({ id: \"error\" });\n const description = (() => {\n switch (error) {\n case \"permission-denied\":\n return intl.formatMessage({ id: \"permissionDenied\" });\n case \"position-unavailable\":\n return intl.formatMessage({ id: \"positionUnavailable\" });\n case \"timeout\":\n return intl.formatMessage({ id: \"timeout\" });\n case \"unknown\":\n return intl.formatMessage({ id: \"unknownError\" });\n }\n })();\n\n setLoading(false);\n setActive(false);\n\n notificationService.notify({\n level: \"error\",\n title: title,\n message: description\n });\n });\n return () => {\n eventsKey.destroy();\n };\n }, [controller, intl, notificationService]);\n\n useEffect(() => {\n if (!controller) {\n setLoading(false);\n return;\n }\n if (isActive) {\n setLoading(true);\n controller.startGeolocation().then(() => {\n setLoading(false);\n });\n }\n return () => {\n controller?.stopGeolocation();\n setLoading(false);\n };\n }, [controller, isActive]);\n\n const toggleActiveState = () => {\n if (!map) {\n return;\n }\n setActive(!isActive);\n };\n\n return (\n <ToolButton\n ref={ref}\n label={label}\n icon={<MdMyLocation />}\n onClick={() => toggleActiveState()}\n isActive={isActive}\n isLoading={isLoading}\n isDisabled={!supportsGeolocation}\n {...containerProps}\n />\n );\n});\n\nfunction useController(\n map: MapModel | undefined,\n maxZoom: number | undefined,\n trackingOptions: PositionOptions | undefined,\n positionFeatureStyle: StyleLike | undefined,\n accuracyFeatureStyle: StyleLike | undefined\n): GeolocationController | undefined {\n const [controller, setController] = useState<GeolocationController>();\n useEffect(() => {\n if (!map) {\n return;\n }\n const geolocationController = new GeolocationController(map.olMap, trackingOptions);\n setController(geolocationController);\n\n return () => {\n geolocationController.destroy();\n setController(undefined);\n };\n }, [map, trackingOptions]);\n useEffect(() => {\n controller?.setPositionFeatureStyle(positionFeatureStyle);\n }, [controller, positionFeatureStyle]);\n useEffect(() => {\n controller?.setAccuracyFeatureStyle(accuracyFeatureStyle);\n }, [controller, accuracyFeatureStyle]);\n useEffect(() => {\n controller?.setMaxZoom(maxZoom);\n }, [controller, maxZoom]);\n return controller;\n}\n"],"names":["Geolocation"],"mappings":"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"}
1
+ {"version":3,"file":"Geolocation.js","sources":["Geolocation.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { MapModel, useMapModel } from \"@open-pioneer/map\";\nimport { ToolButton } from \"@open-pioneer/map-ui-components\";\nimport { NotificationService } from \"@open-pioneer/notifier\";\nimport { CommonComponentProps, useCommonComponentProps } from \"@open-pioneer/react-utils\";\nimport { StyleLike } from \"ol/style/Style\";\nimport { useIntl, useService } from \"open-pioneer:react-hooks\";\nimport { FC, ForwardedRef, RefAttributes, forwardRef, useEffect, useState } from \"react\";\nimport { MdMyLocation } from \"react-icons/md\";\nimport { GeolocationController } from \"./GeolocationController\";\n\n/**\n * These are properties supported by the {@link Geolocation} component.\n */\nexport interface GeolocationProps extends CommonComponentProps, RefAttributes<HTMLButtonElement> {\n /**\n * The id of the map.\n */\n mapId: string;\n /**\n * The default maximal zoom level\n */\n maxZoom?: number;\n /**\n * Style to be applied for the positioning highlight feature.\n */\n positionFeatureStyle?: StyleLike;\n /**\n * Style to be applied for the accuracy highlight of the positioning feature.\n */\n accuracyFeatureStyle?: StyleLike;\n /**\n * Position options for the Geolocation-Object.\n * See [PositionOptions](https://www.w3.org/TR/geolocation/#position_options_interface) for more details.\n *\n * NOTE: Changing the tracking options at runtime will reset the component's state.\n */\n trackingOptions?: PositionOptions;\n}\n\nexport const Geolocation: FC<GeolocationProps> = forwardRef(function Geolocation(\n props: GeolocationProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const { mapId, maxZoom, positionFeatureStyle, accuracyFeatureStyle, trackingOptions } = props;\n const { containerProps } = useCommonComponentProps(\"geolocation\", props);\n\n const supportsGeolocation = !!navigator.geolocation;\n const [isActive, setActive] = useState<boolean>(false);\n const [isLoading, setLoading] = useState<boolean>(false);\n const { map } = useMapModel(mapId);\n const intl = useIntl();\n const notificationService = useService<NotificationService>(\"notifier.NotificationService\");\n\n const controller = useController(\n map,\n maxZoom,\n trackingOptions,\n positionFeatureStyle,\n accuracyFeatureStyle\n );\n\n const label = (() => {\n if (!supportsGeolocation) {\n return intl.formatMessage({ id: \"locateNotSupported\" });\n }\n\n if (isActive) {\n return intl.formatMessage({ id: \"locateMeEnd\" });\n } else {\n return intl.formatMessage({ id: \"locateMeStart\" });\n }\n })();\n\n useEffect(() => {\n if (controller === undefined) {\n return;\n }\n\n const eventsKey = controller.on(\"error\", function (error) {\n const title = intl.formatMessage({ id: \"error\" });\n const description = (() => {\n switch (error) {\n case \"permission-denied\":\n return intl.formatMessage({ id: \"permissionDenied\" });\n case \"position-unavailable\":\n return intl.formatMessage({ id: \"positionUnavailable\" });\n case \"timeout\":\n return intl.formatMessage({ id: \"timeout\" });\n case \"unknown\":\n return intl.formatMessage({ id: \"unknownError\" });\n }\n })();\n\n setLoading(false);\n setActive(false);\n\n notificationService.notify({\n level: \"error\",\n title: title,\n message: description\n });\n });\n return () => {\n eventsKey.destroy();\n };\n }, [controller, intl, notificationService]);\n\n useEffect(() => {\n if (!controller) {\n setLoading(false);\n return;\n }\n if (isActive) {\n setLoading(true);\n controller.startGeolocation().then(() => {\n setLoading(false);\n });\n }\n return () => {\n controller?.stopGeolocation();\n setLoading(false);\n };\n }, [controller, isActive]);\n\n const toggleActiveState = () => {\n if (!map) {\n return;\n }\n setActive(!isActive);\n };\n\n return (\n <ToolButton\n ref={ref}\n label={label}\n icon={<MdMyLocation />}\n onClick={() => toggleActiveState()}\n isActive={isActive}\n isLoading={isLoading}\n isDisabled={!supportsGeolocation}\n {...containerProps}\n />\n );\n});\n\nfunction useController(\n map: MapModel | undefined,\n maxZoom: number | undefined,\n trackingOptions: PositionOptions | undefined,\n positionFeatureStyle: StyleLike | undefined,\n accuracyFeatureStyle: StyleLike | undefined\n): GeolocationController | undefined {\n const [controller, setController] = useState<GeolocationController>();\n useEffect(() => {\n if (!map) {\n return;\n }\n const geolocationController = new GeolocationController(map.olMap, trackingOptions);\n setController(geolocationController);\n\n return () => {\n geolocationController.destroy();\n setController(undefined);\n };\n }, [map, trackingOptions]);\n useEffect(() => {\n controller?.setPositionFeatureStyle(positionFeatureStyle);\n }, [controller, positionFeatureStyle]);\n useEffect(() => {\n controller?.setAccuracyFeatureStyle(accuracyFeatureStyle);\n }, [controller, accuracyFeatureStyle]);\n useEffect(() => {\n controller?.setMaxZoom(maxZoom);\n }, [controller, maxZoom]);\n return controller;\n}\n"],"names":["Geolocation"],"mappings":"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"}
@@ -28,8 +28,8 @@ export declare class GeolocationController extends EventEmitter<Events> {
28
28
  setAccuracyFeatureStyle(styleLike: StyleLike | undefined): void;
29
29
  setMaxZoom(maxZoom: number | undefined): void;
30
30
  getMaxZoom(): number;
31
- getPositionFeature(): Feature<import("ol/geom/Geometry").default> | undefined;
32
- getAccuracyFeature(): Feature<import("ol/geom/Geometry").default> | undefined;
31
+ getPositionFeature(): Feature<import("ol/geom").Geometry> | undefined;
32
+ getAccuracyFeature(): Feature<import("ol/geom").Geometry> | undefined;
33
33
  getTrackingOptions(): PositionOptions;
34
34
  getGeolocation(): olGeolocation;
35
35
  private handleGeolocationError;
@@ -1,12 +1,12 @@
1
1
  import { createLogger, EventEmitter } from '@open-pioneer/core';
2
2
  import { TOPMOST_LAYER_Z, calculateBufferedExtent } from '@open-pioneer/map';
3
- import Feature from 'ol/Feature';
4
- import olGeolocation from 'ol/Geolocation';
5
- import { unByKey } from 'ol/Observable';
6
- import Point from 'ol/geom/Point';
7
- import VectorLayer from 'ol/layer/Vector';
8
- import VectorSource from 'ol/source/Vector';
9
- import { Style, Circle, Fill, Stroke } from 'ol/style';
3
+ import Feature from 'ol/Feature.js';
4
+ import olGeolocation from 'ol/Geolocation.js';
5
+ import { unByKey } from 'ol/Observable.js';
6
+ import Point from 'ol/geom/Point.js';
7
+ import VectorLayer from 'ol/layer/Vector.js';
8
+ import VectorSource from 'ol/source/Vector.js';
9
+ import { Style, Circle, Fill, Stroke } from 'ol/style.js';
10
10
 
11
11
  const LOG = createLogger("geolocation:GeolocationController");
12
12
  const DEFAULT_MAX_ZOOM = 17;
@@ -1 +1 @@
1
- {"version":3,"file":"GeolocationController.js","sources":["GeolocationController.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { EventEmitter, createLogger } from \"@open-pioneer/core\";\nimport { TOPMOST_LAYER_Z, calculateBufferedExtent } from \"@open-pioneer/map\";\nimport Feature from \"ol/Feature\";\nimport olGeolocation, { GeolocationError } from \"ol/Geolocation\";\nimport OlMap from \"ol/Map\";\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\ntype ErrorEvent = \"permission-denied\" | \"position-unavailable\" | \"timeout\" | \"unknown\";\n\ninterface Events {\n error: ErrorEvent;\n}\n\nexport class GeolocationController extends EventEmitter<Events> {\n private readonly olMap: OlMap;\n private readonly positionHighlightLayer: VectorLayer<VectorSource>;\n private readonly geolocation: olGeolocation;\n private maxZoom: number = DEFAULT_MAX_ZOOM;\n private accuracyFeature: Feature | undefined;\n private positionFeature: Feature | undefined;\n private changeHandlers: EventsKey[] = [];\n private isCurrentlyActive: boolean = false;\n private setMapToPosition: boolean = true;\n private trackingOptions: PositionOptions = {};\n private isInitialZoom: boolean = true;\n\n constructor(olMap: OlMap, trackingOptions?: PositionOptions) {\n super();\n this.olMap = olMap;\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 this.positionHighlightLayer = new VectorLayer({\n source: new VectorSource({\n features: [this.accuracyFeature, this.positionFeature]\n })\n });\n this.positionHighlightLayer.setZIndex(TOPMOST_LAYER_Z);\n\n const geolocationTrackingOptions: PositionOptions =\n trackingOptions || getDefaultTrackingOptions();\n\n this.geolocation = new olGeolocation({\n tracking: false,\n trackingOptions: geolocationTrackingOptions,\n projection: olMap.getView()?.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.accuracyFeature = undefined;\n this.positionFeature = undefined;\n this.positionHighlightLayer.dispose();\n }\n\n startGeolocation(): Promise<void> {\n if (this.isCurrentlyActive) {\n return Promise.resolve();\n }\n\n const olMap = this.olMap;\n const geolocationPromise = new Promise<void>((resolve) => {\n this.isCurrentlyActive = true;\n this.geolocation?.setProjection(olMap.getView()?.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 olMap.getView().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 olMap.getView().setCenter(coordinates);\n }\n if (this.positionFeature?.getGeometry() !== undefined) {\n resolve();\n }\n }\n });\n\n // zoom changes\n const resolutionChangeHandler: EventsKey = olMap\n .getView()\n .on(\"change:resolution\", () => {\n this.setMapToPosition = this.isInitialZoom;\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 = 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 olMap.addLayer(this.positionHighlightLayer);\n });\n\n return geolocationPromise.catch((error: Error) => {\n LOG.error(\"Failed to determine location\", error);\n });\n }\n\n stopGeolocation() {\n this.geolocation?.setTracking(false);\n this.isCurrentlyActive = 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.olMap.removeLayer(this.positionHighlightLayer);\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 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.emit(\"error\", 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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"}
1
+ {"version":3,"file":"GeolocationController.js","sources":["GeolocationController.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { EventEmitter, createLogger } from \"@open-pioneer/core\";\nimport { TOPMOST_LAYER_Z, calculateBufferedExtent } from \"@open-pioneer/map\";\nimport Feature from \"ol/Feature\";\nimport olGeolocation, { GeolocationError } from \"ol/Geolocation\";\nimport OlMap from \"ol/Map\";\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\ntype ErrorEvent = \"permission-denied\" | \"position-unavailable\" | \"timeout\" | \"unknown\";\n\ninterface Events {\n error: ErrorEvent;\n}\n\nexport class GeolocationController extends EventEmitter<Events> {\n private readonly olMap: OlMap;\n private readonly positionHighlightLayer: VectorLayer<Feature>;\n private readonly geolocation: olGeolocation;\n private maxZoom: number = DEFAULT_MAX_ZOOM;\n private accuracyFeature: Feature | undefined;\n private positionFeature: Feature | undefined;\n private changeHandlers: EventsKey[] = [];\n private isCurrentlyActive: boolean = false;\n private setMapToPosition: boolean = true;\n private trackingOptions: PositionOptions = {};\n private isInitialZoom: boolean = true;\n\n constructor(olMap: OlMap, trackingOptions?: PositionOptions) {\n super();\n this.olMap = olMap;\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 this.positionHighlightLayer = new VectorLayer({\n source: new VectorSource({\n features: [this.accuracyFeature, this.positionFeature]\n })\n });\n this.positionHighlightLayer.setZIndex(TOPMOST_LAYER_Z);\n\n const geolocationTrackingOptions: PositionOptions =\n trackingOptions || getDefaultTrackingOptions();\n\n this.geolocation = new olGeolocation({\n tracking: false,\n trackingOptions: geolocationTrackingOptions,\n projection: olMap.getView()?.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.accuracyFeature = undefined;\n this.positionFeature = undefined;\n this.positionHighlightLayer.dispose();\n }\n\n startGeolocation(): Promise<void> {\n if (this.isCurrentlyActive) {\n return Promise.resolve();\n }\n\n const olMap = this.olMap;\n const geolocationPromise = new Promise<void>((resolve) => {\n this.isCurrentlyActive = true;\n this.geolocation?.setProjection(olMap.getView()?.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 olMap.getView().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 olMap.getView().setCenter(coordinates);\n }\n if (this.positionFeature?.getGeometry() !== undefined) {\n resolve();\n }\n }\n });\n\n // zoom changes\n const resolutionChangeHandler: EventsKey = olMap\n .getView()\n .on(\"change:resolution\", () => {\n this.setMapToPosition = this.isInitialZoom;\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 = 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 olMap.addLayer(this.positionHighlightLayer);\n });\n\n return geolocationPromise.catch((error: Error) => {\n LOG.error(\"Failed to determine location\", error);\n });\n }\n\n stopGeolocation() {\n this.geolocation?.setTracking(false);\n this.isCurrentlyActive = 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.olMap.removeLayer(this.positionHighlightLayer);\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 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.emit(\"error\", 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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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@open-pioneer/geolocation",
4
- "version": "0.4.2",
4
+ "version": "0.4.3",
5
5
  "description": "This package provides a component to locate a user's position.",
6
6
  "keywords": [
7
7
  "open-pioneer-trails"
@@ -15,14 +15,15 @@
15
15
  },
16
16
  "peerDependencies": {
17
17
  "@open-pioneer/chakra-integration": "^1.1.3",
18
- "@open-pioneer/runtime": "^2.1.5",
18
+ "@open-pioneer/runtime": "^2.1.6",
19
+ "@open-pioneer/react-utils": "^1.0.0",
19
20
  "@open-pioneer/core": "^1.2.3",
20
- "@open-pioneer/notifier": "^0.3.4",
21
- "ol": "^9.0.0",
21
+ "@open-pioneer/notifier": "^0.3.5",
22
+ "ol": "^9.2.4",
22
23
  "react": "^18.3.1",
23
- "react-icons": "^4.12.0",
24
- "@open-pioneer/react-utils": "^0.2.3",
25
- "@open-pioneer/map": "^0.5.1"
24
+ "react-icons": "^5.2.1",
25
+ "@open-pioneer/map-ui-components": "^0.1.0",
26
+ "@open-pioneer/map": "^0.6.0"
26
27
  },
27
28
  "exports": {
28
29
  "./package.json": "./package.json",