FarmMapsLib/projects/common-map/src/fm-map/services/geolocation.service.ts

35 lines
928 B
TypeScript

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<GeolocationPosition> = new BehaviorSubject<GeolocationPosition>(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<GeolocationPosition> {
return this.positionObserver$;
}
}