import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; /** * GeolocationService class. * https://developers.google.com/maps/documentation/javascript/ * https://dev.w3.org/geo/api/spec-source.html */ @Injectable() export class GeolocationService { private positionObserver$:BehaviorSubject = new BehaviorSubject(null); constructor() { navigator.geolocation.watchPosition( (position: GeolocationPosition) => { this.positionObserver$.next(position); }, (error: GeolocationPositionError) => { console.debug('Geolocation service: ' + error.message); }, { enableHighAccuracy: true, timeout: 5000, maximumAge: 0 } ); } getCurrentPosition(): Observable { return this.positionObserver$; } }