显示在X秒后应用无法获取当前位置时使用的消息

时间:2018-06-19 09:48:57

标签: angular cordova typescript ionic3

我正在研究带角度4项目的ionic3,有时需要让用户获得当前位置。有时互联网可能很慢,很难让用户获得当前的位置。 我想要实现的是30秒后如果应用程序无法获得当前位置,应该向用户弹出警告,告诉他/她再试一次。

 ionViewDidLoad() {
    let loader = this.loadingCtrl.create({
      content : 'Checking Position...'
    })
    loader.present().then(()=>{
      this.geolocation.getCurrentPosition({
        enableHighAccuracy:true,
        timeout: 3000
        }).then((resp) => {
          this.userlng = resp.coords.longitude;
          this.userlat = resp.coords.latitude;
          console.log('latitude '+this.userlat+ ' longitude '+this.userlng);

        })
    })
  }

1 个答案:

答案 0 :(得分:0)

使用Angular的rxjs库中的timeout和catchError函数。这基本上设置了30秒的超时,如果未获取位置,则抛出超时错误。

ionViewDidLoad() {
    let loader = this.loadingCtrl.create({
      content : 'Checking Position...'
    })
    loader.present().then(()=>{
      this.geolocation.getCurrentPosition({
        enableHighAccuracy:true,
        timeout: 3000
        }).then((resp) => {
          this.userlng = resp.coords.longitude;
          this.userlat = resp.coords.latitude;
          console.log('latitude '+this.userlat+ ' longitude '+this.userlng);

        }).pipe(timeout(30000),
            catchError(err => {
                alert(" " + err);
                throw("Error: "+ err);
    }))
    })
  }

从rxjs导入catchError和timeout。