我正在研究带角度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);
})
})
}
答案 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。