2017-09-27 124 views
0

in Ionic应用程序如何在启用位置时自动刷新视图。离子2刷新视图

这是我的代码

this.platform.ready().then((readySource) => { 
      diagnostic.isLocationAvailable().then(
       (isAvailable) => { 
       console.log('Is available? ' + isAvailable); 
       this.location.getPostion(); 
       this.location.getCity(location.lat, location.lng); 
       }).catch((err) => { 
       console.log(err); 
       console.log("Please enable your location"); 
       });     
      }); 

如果定位功能未启用时,应用程序启动我必须杀死应用程序,然后打开位置,重新启动应用程序来获得位置。如何在后台自动更改位置,应用刷新视图和显示位置时自动更改

回答

0

除非我误认了您的要求,否则您想在用户位置变为可用时开始跟踪用户的位置(但本来是关闭的,重新启动它的唯一方法是在启用它之后)。

原因

this.platform.ready()仅调用一次假设它在app.component(这是默认位置的话)。因此,在应用程序开始时会触发,我期望diagnostic.isLocationAvailable()解决错误或被拒绝。

因此,除非您启用按钮单击,否则无法重新触发所述代码。

解决方案

watchPosition() 

https://ionicframework.com/docs/native/geolocation/#watchPosition

关注当前设备的位置。通过取消订阅Observable更改来清除手表。

但是,我不确定这是否会运行,如果位置被禁用。如果你看的位置,就可以得到第一个ping后退订:

const subscription = this.geolocation.watchPosition() 
    .filter((p) => p.coords !== undefined) //Filter Out Errors 
    .subscribe(position => { 
    console.log(position.coords.longitude + ' ' + position.coords.latitude); 
    subscription.unsubsribe(); 
    }); 

我不知道,如果位置是肢残会发生什么。但我不相信有这样的倾听者。