diff --git a/src/app/services/location.service.spec.ts b/src/app/services/location.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6edba5d5f4c10f1eb5d1aa8ff1d807e97a729345 --- /dev/null +++ b/src/app/services/location.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { LocationService } from './location.service'; + +describe('LocationService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: LocationService = TestBed.get(LocationService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/location.service.ts b/src/app/services/location.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..befbc9446e4094973744d2da8e3b71ca5c616c3c --- /dev/null +++ b/src/app/services/location.service.ts @@ -0,0 +1,54 @@ +import { Injectable } from '@angular/core'; +import { Geolocation } from '@ionic-native/geolocation/ngx'; +import { Subject } from 'rxjs'; +@Injectable({ + providedIn: 'root' +}) +export class LocationService { + public preiousUserPosition = { lat: 48.783480, lng: 9.180319 }; + public currentUserPosition = { lat: 48.783480, lng: 9.180319 }; + + liveLocationSubject = new Subject<any>(); //Decalring new RxJs Subject + + constructor(private geolocation: Geolocation) { + let watch = this.geolocation.watchPosition({ enableHighAccuracy: true, maximumAge: 10000 }); + watch.subscribe((position) => { + console.log('IN WATCHER') + console.log('lat'+ position.coords.latitude); + console.log('lng'+ position.coords.longitude); + this.currentUserPosition.lat = position.coords.latitude; + this.currentUserPosition.lng = position.coords.longitude; + this.preiousUserPosition.lat = position.coords.latitude; + this.preiousUserPosition.lng = position.coords.longitude; + this.getUserLiveLocation(this.currentUserPosition); + }, (errorObj) => { + console.log('error getting live location, setting to previous location'); + this.getUserLiveLocation(this.preiousUserPosition); + }); + } + + getUserLocation(): Promise<any> { + return new Promise((resolve, reject) => { + + this.geolocation.getCurrentPosition().then((resp) => { + let lat = resp.coords.latitude; + let lng = resp.coords.longitude; + this.currentUserPosition.lat = resp.coords.latitude; + this.currentUserPosition.lng = resp.coords.longitude; + this.preiousUserPosition.lat = resp.coords.latitude; + this.preiousUserPosition.lng = resp.coords.longitude; + resolve(this.currentUserPosition); + }, er => { + console.log('error getting location setting to previous location'); + resolve(this.preiousUserPosition); + }).catch((error) => { + console.log('error getting location setting to previous location'); + resolve(this.preiousUserPosition); + }); + }); + } + + getUserLiveLocation(location) { + this.liveLocationSubject.next(location); + } +}