2017-09-27 152 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(); 
    }); 

我不知道,如果位置是肢殘會發生什麼。但我不相信有這樣的傾聽者。