地理定位得到超时错误

时间:2016-12-12 18:11:42

标签: cordova ionic-framework

我真的被困在这个问题上了。我正在构建一个ionic 2应用。我使用cordova-plugin-geolocation作为位置。这是我访问位置的功能,

  getLocation(highAcc: boolean){
    let options = { maximumAge: 30000, timeout: 50000, enableHighAccuracy: highAcc };
    return Geolocation.getCurrentPosition(options).then((pos)=>{
      this.long = pos.coords.longitude;
      this.lat = pos.coords.latitude;
      return pos;
    }).catch( (err) => {
        return Promise.reject({message: 'unable to access location'});
     });
  }

我尝试了高精度和低精度但两者都给出time out error。它在浏览器中运行得非常好。但错误只发生在android中。它有时会在很长一段时间后起作用。但从来没有在第一次尝试。当我启动应用程序或位置访问方法时,它会在android上显示location图标。但它几乎永远不会返回coordinates

我的应用基于手机位置。所以我不能解决这个问题。任何帮助将不胜感激。

这就是我在component

中使用该方法的方法
ionViewWillEnter(){
    this.book.getFeedHunts().then((res)=>{
      console.log(res);
      this.hunts = res.json();
    }).catch( (err) => {
      this.handleError(err);
    })
} 

注意:我已经在stackoverflow上尝试了几乎所有解决方案而没有任何帮助。

2 个答案:

答案 0 :(得分:0)

确保您具有高准确度的权限,如果缺少,请在/android/app/src/main/AndroidManifest.xml中添加此行

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

答案 1 :(得分:0)

我假设您使用的是Android模拟器但不是物理Android设备。在Android模拟器上,我设法通过以下步骤获取地理位置信息:

  1. 在代码中设置enableHighAccuracy = true
  2. 通过键入CLI命令ionic run android -lc
  3. 运行代码
  4. 启动时立即打开Android模拟器上的扩展控件面板(参见下图)
  5. 在面板上,点击发送按钮将GPS数据发送到模拟器操作系统
  6. enter image description here

    请注意,设置enableHighAccuracy = false

    时无效