@wemap/providers 6.1.2 → 6.1.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/package.json
CHANGED
package/src/events/EventType.js
CHANGED
|
@@ -28,6 +28,9 @@ class AbsolutePosition extends Provider {
|
|
|
28
28
|
/** @type {number?} */
|
|
29
29
|
_mapMatchingHandlerId
|
|
30
30
|
|
|
31
|
+
/** @type {boolean?} */
|
|
32
|
+
_waitUntilNextVpsPosition = false;
|
|
33
|
+
|
|
31
34
|
/**
|
|
32
35
|
* @override
|
|
33
36
|
*/
|
|
@@ -70,14 +73,9 @@ class AbsolutePosition extends Provider {
|
|
|
70
73
|
if (ProvidersOptions.hasVps) {
|
|
71
74
|
|
|
72
75
|
this._vpsProviderId = Vps.addEventListener(events => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
Vps.removeEventListener(this._vpsProviderId);
|
|
77
|
-
this._vpsProviderId = null;
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
76
|
+
this._onAbsolutePosition(events.find(event => event.dataType === EventType.AbsolutePosition));
|
|
77
|
+
Vps.removeEventListener(this._vpsProviderId);
|
|
78
|
+
this._vpsProviderId = null;
|
|
81
79
|
});
|
|
82
80
|
|
|
83
81
|
} else {
|
|
@@ -170,7 +168,7 @@ class AbsolutePosition extends Provider {
|
|
|
170
168
|
*/
|
|
171
169
|
_onRelativePosition(relativeEvent) {
|
|
172
170
|
|
|
173
|
-
if (!this.lastEvent) {
|
|
171
|
+
if (!this.lastEvent || this._waitUntilNextVpsPosition) {
|
|
174
172
|
return;
|
|
175
173
|
}
|
|
176
174
|
|
|
@@ -207,12 +205,27 @@ class AbsolutePosition extends Provider {
|
|
|
207
205
|
/**
|
|
208
206
|
* @override
|
|
209
207
|
* @param {UserPosition|ProviderEvent} data
|
|
208
|
+
* @param {EventType} eventType
|
|
210
209
|
*/
|
|
211
|
-
feed(data) {
|
|
210
|
+
feed(data, eventType) {
|
|
212
211
|
|
|
213
212
|
/** @type {ProviderEvent<UserPosition>} */
|
|
214
213
|
let newPositionEvent;
|
|
215
214
|
|
|
215
|
+
if (eventType === EventType.ForceVps && !this._vpsProviderId) {
|
|
216
|
+
|
|
217
|
+
this._waitUntilNextVpsPosition = true;
|
|
218
|
+
this._vpsProviderId = Vps.addEventListener(events => {
|
|
219
|
+
this._waitUntilNextVpsPosition = false;
|
|
220
|
+
this._onAbsolutePosition(events.find(event => event.dataType === EventType.AbsolutePosition));
|
|
221
|
+
Vps.removeEventListener(this._vpsProviderId);
|
|
222
|
+
this._vpsProviderId = null;
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
return;
|
|
226
|
+
|
|
227
|
+
}
|
|
228
|
+
|
|
216
229
|
if (data instanceof UserPosition) {
|
|
217
230
|
|
|
218
231
|
if (data.time === null) {
|