@wemap/providers 6.1.2 → 6.1.4

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/package.json CHANGED
@@ -40,6 +40,6 @@
40
40
  "url": "git+https://github.com/wemap/wemap-modules-js.git"
41
41
  },
42
42
  "type": "module",
43
- "version": "6.1.2",
44
- "gitHead": "ffb6fe1f940d915e839024bc5b9aa5a986ad88a9"
43
+ "version": "6.1.4",
44
+ "gitHead": "f968e0aa5a1aad007e588e83dc0990c7c38916e0"
45
45
  }
@@ -80,6 +80,7 @@ class ProvidersInterface {
80
80
  return AbsoluteAttitude;
81
81
 
82
82
  case EventType.AbsolutePosition:
83
+ case EventType.ForceVps:
83
84
  return AbsolutePosition;
84
85
 
85
86
  case EventType.RelativeAttitude:
@@ -135,6 +136,8 @@ class ProvidersInterface {
135
136
  throw errorFn('Itinerary');
136
137
  }
137
138
  break;
139
+ case EventType.ForceVps:
140
+ break;
138
141
  default:
139
142
  throw new Error(`Unable to deal with this event type: ${eventType}`);
140
143
  }
@@ -34,5 +34,7 @@ export default {
34
34
  CameraNative: 'CAMERA_NATIVE',
35
35
 
36
36
  Itinerary: 'ITINERARY',
37
- Network: 'NETWORK'
37
+ Network: 'NETWORK',
38
+
39
+ ForceVps: 'FORCE_VPS'
38
40
  };
@@ -8,6 +8,7 @@ import MapMatchingHandler from '../../../mapmatching/MapMatchingHandler.js';
8
8
  import GnssWifi from './GnssWifi.js';
9
9
  import { default as GeoRelativePositionProvider } from '../relative/GeoRelativePosition.js';
10
10
  import ProvidersOptions from '../../../ProvidersOptions.js';
11
+ import ProviderState from '../../ProviderState.js';
11
12
  import Vps from '../../vision/Vps.js';
12
13
 
13
14
  class AbsolutePosition extends Provider {
@@ -28,6 +29,9 @@ class AbsolutePosition extends Provider {
28
29
  /** @type {number?} */
29
30
  _mapMatchingHandlerId
30
31
 
32
+ /** @type {boolean?} */
33
+ _waitUntilNextVpsPosition = false;
34
+
31
35
  /**
32
36
  * @override
33
37
  */
@@ -70,14 +74,9 @@ class AbsolutePosition extends Provider {
70
74
  if (ProvidersOptions.hasVps) {
71
75
 
72
76
  this._vpsProviderId = Vps.addEventListener(events => {
73
- for (const providerEvent of events) {
74
- if (providerEvent.dataType === EventType.AbsolutePosition) {
75
- this._onAbsolutePosition(providerEvent);
76
- Vps.removeEventListener(this._vpsProviderId);
77
- this._vpsProviderId = null;
78
- return;
79
- }
80
- }
77
+ this._onAbsolutePosition(events.find(event => event.dataType === EventType.AbsolutePosition));
78
+ Vps.removeEventListener(this._vpsProviderId);
79
+ this._vpsProviderId = null;
81
80
  });
82
81
 
83
82
  } else {
@@ -170,7 +169,7 @@ class AbsolutePosition extends Provider {
170
169
  */
171
170
  _onRelativePosition(relativeEvent) {
172
171
 
173
- if (!this.lastEvent) {
172
+ if (!this.lastEvent || this._waitUntilNextVpsPosition) {
174
173
  return;
175
174
  }
176
175
 
@@ -207,12 +206,28 @@ class AbsolutePosition extends Provider {
207
206
  /**
208
207
  * @override
209
208
  * @param {UserPosition|ProviderEvent} data
209
+ * @param {EventType} eventType
210
210
  */
211
- feed(data) {
211
+ feed(data, eventType) {
212
212
 
213
213
  /** @type {ProviderEvent<UserPosition>} */
214
214
  let newPositionEvent;
215
215
 
216
+ if (eventType === EventType.ForceVps) {
217
+ if (!this._vpsProviderId && this.state === ProviderState.STARTED) {
218
+ this._waitUntilNextVpsPosition = true;
219
+ this._vpsProviderId = Vps.addEventListener(events => {
220
+ this._waitUntilNextVpsPosition = false;
221
+ this._onAbsolutePosition(events.find(event => event.dataType === EventType.AbsolutePosition));
222
+ Vps.removeEventListener(this._vpsProviderId);
223
+ this._vpsProviderId = null;
224
+ });
225
+ }
226
+
227
+ return;
228
+
229
+ }
230
+
216
231
  if (data instanceof UserPosition) {
217
232
 
218
233
  if (data.time === null) {