首页 文章

Android上的Phonegap Geolocation

提问于
浏览
1

我正在使用Phonegap Build版本3.4.0和地理位置插件版本0.3.7 .
我的应用应该在 Map 上显示用户位置 .

这在iOS下非常有效 .
但根据Android中的位置设置,我得到了非常不同的结果 .

如果我试图使用 enableHighAccuracy: false 进行快速位置修复并且用户已禁用无线位置访问,则会使用错误代码 2 调用我的错误回调 . 这是我的预期 .

但如果我试图用 enableHighAccuracy: true 获得最佳结果并且用户已禁用GPS访问,则不会调用错误回调 . 相反,它只是超时 .

这是已知的行为,我必须忍受它或者我能做些什么吗?

我正在使用样板代码:

var positionOptions = {
  enableHighAccuracy: true,
  timeout: 1000*30,
  maximumAge: 0
};

function positionSuccess(location) {
  console.log(location);
};

function positionError(error) {
  console.log(error);
};

navigator.geolocation.getCurrentPosition(
  positionSuccess, 
  positionError, 
  positionOptions
);

Edit: 这是在华为/ Android 4.0.3,Moto G / Android 4.4.2,三星GT-I9100 / Android 4.1.2,LG ??? / Android 4.1.2上测试的

1 回答

  • 2

    Cordova的地理定位对于正常工作非常棘手 . 我在一个信号不好的地区可能需要很长时间 . 还可以尝试通过wifi获取您的位置 . 并在现场设备上进行测试(查看TestDevice) . Android模拟器是不确定的 .

    如果地理位置对您的应用程序至关重要,则应在获取每个错误代码时提醒用户该问题 . 告诉您的用户他们需要启用一种访问形式或另一种访问形式以及如何执行此操作 .

    此外,您可以考虑运行getCurrentPosition,其中enableHighAccuracy:false,如果失败则再次运行getCurrentPosition,但这次设置enableHighAccuracy:true . 只有在两种方法都超时后,才会提示用户输入错误 .

    顺便说一下,根据我在Android上的经验,当在城市环境中使用3 / 4G时,Cordova通常能够在2-3秒内锁定到某个位置 . 如果不是那时它几乎永远不会锁定 . 祝好运!

相关问题