Hola a todos!
Tengo un problema desde hace días al momento de que quiero almacenar mis coordenadas (latitud y longitud) en firebase, la aplicación me permite almacenarlos pero al momento de cerrar sesión o forzar el cierre de la app y se vuelve a iniciar sesión, los refresca como si fueran nuevos datos.
Quisiera que estos se quedaran almacenados en firebase, así inicie sesión de nuevo por cualquier motivo y a partir de los datos ya almacenados seguir agregando más.
Por parte de la app tengo este código
//empieza geololaizacion
start() {
// Compruebo si esta habilidata la opcion de localizacion
this.backgroundGeolocation.isLocationEnabled()
.then((activado) =>{
//si esta activado
if(activado){
let config = {
desiredAccuracy: 0,
stationaryRadius: 0,
distanceFilter: 0,
debug: false,
interval: 0
};
//Geolocalizacion en segundo Plano
this.backgroundGeolocation
.configure(config)
.subscribe((location) => {
console.log("latitud actualizacion background 1 "+location.latitude);
let _date: Date = new Date();
let n: number = _date.getTime();
n -= (_date.getTimezoneOffset() * 60 * 1000);
let d: string = new Date(n).toISOString();
this.zone.run(() => {
this.lat = location.latitude;
this.lng = location.longitude;
});
this.actuario.update({
lat: this.lat,
lng: this.lng,
});
this.markes.push({
latitud: this.lat,
longitud: this.lng,
date: d
});
let markes = this.markes;
this.actuario.set({
markes
}, { merge: true })
.then(function() {})
.catch(function(error) {
console.log("Error al subir datos! " + error);
});
});
// start recording location
this.backgroundGeolocation.start();
// this.backgroundMode.disableWebViewOptimizations();
let options = {
frequency: 300000,
enableHighAccuracy: true,
timeout:300000
};
//cuando la aplicacion esta abierta y activada
this.watch = this.geolocation.watchPosition(options).filter((p: any) => p.code === undefined)
.subscribe((position: Geoposition) => {
console.log("latitud actualizacion 2 "+position.coords.latitude + " " + position.coords.longitude);
let _date: Date = new Date();
let n: number = _date.getTime();
n -= (_date.getTimezoneOffset() * 60 * 1000);
let d: string = new Date(n).toISOString();
//actualizo dato en firebase
this.actuario.update({
lat: position.coords.latitude,
lng: position.coords.longitude
});
//para poder mapear en un mapa se guardan los datos
this.markes.push({
latitud:position.coords.latitude,
longitud:position.coords.longitude,
date:d
});
let markes = this.markes;
this.actuario.set({markes}, { merge: true })
.then(function() {})
.catch(function(error) {
console.log("Error al subir datos! " + error);
});
});
}else {
this.backgroundGeolocation.showLocationSettings();
}
})
}