@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
|
@@ -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
|
}
|
package/src/events/EventType.js
CHANGED
|
@@ -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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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) {
|