Converted observer to behaviorsubject

This commit is contained in:
Willem Dantuma 2020-05-19 11:46:27 +02:00
parent 51bb5b3833
commit 4a0474546c

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Observer, Observable } from 'rxjs';
import { Observer, Observable,BehaviorSubject } from 'rxjs';
/**
* GeolocationService class.
@ -9,31 +9,26 @@ import { Observer, Observable } from 'rxjs';
@Injectable()
export class GeolocationService {
/**
* Tries HTML5 geolocation.
*
* Wraps the Geolocation API into an observable.
*
* @return An observable of Position
*/
getCurrentPosition(): Observable<Position> {
return Observable.create((observer: Observer<Position>) => {
// Invokes getCurrentPosition method of Geolocation API.
navigator.geolocation.watchPosition(
(position: Position) => {
observer.next(position);
},
(error: PositionError) => {
console.debug('Geolocation service: ' + error.message);
//observer.error(error);
},
{
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
}
);
});
private positionObserver$:BehaviorSubject<Position> = new BehaviorSubject<Position>(null);
constructor() {
navigator.geolocation.watchPosition(
(position: Position) => {
this.positionObserver$.next(position);
},
(error: PositionError) => {
console.debug('Geolocation service: ' + error.message);
},
{
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
}
);
}
getCurrentPosition(): Observable<Position> {
return this.positionObserver$;
}
}