diff --git a/projects/common-map/src/fm-map/services/geolocation.service.ts b/projects/common-map/src/fm-map/services/geolocation.service.ts index 9cafbd2..8fa0038 100644 --- a/projects/common-map/src/fm-map/services/geolocation.service.ts +++ b/projects/common-map/src/fm-map/services/geolocation.service.ts @@ -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 { - return Observable.create((observer: Observer) => { - // 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 = new BehaviorSubject(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 { + return this.positionObserver$; + } }