【问题标题】:Phonegap Geolocation on AndroidAndroid上的Phonegap地理定位
【发布时间】:2014-06-17 18:23:23
【问题描述】:

我正在使用 Phonegap Build 3.4.0 版和地理定位插件 0.3.7 版。
我的应用程序应该在地图上显示用户位置。

这在 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
);

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

【问题讨论】:

    标签: android cordova geolocation phonegap-plugins phonegap-build


    【解决方案1】:

    Cordova 上的地理位置很难正常工作。我自己仍然偶尔与它作斗争。如果您遇到超时,请确保地理定位代码甚至与您的测试设备兼容,方法是将超时延长至约 300,000 毫秒(5 分钟)。是的,如果您所在的地区信号不好,则可能需要很长时间。还可以尝试通过 wifi 获取您的位置。并在现场设备上进行测试(查看TestDevice)。 Android 模拟器是不确定的。

    如果地理位置对您的应用程序至关重要,您应该在收到每个错误代码时提醒您的用户该问题。告诉您的用户他们需要启用一种或另一种形式的访问权限以及如何去做。

    此外,您可以考虑在 enableHighAccuracy: false 的情况下运行 getCurrentPosition,如果失败,请再次运行 getCurrentPosition,但这次设置 enableHighAccuracy: true。只有在两种方法都超时后,才提示用户错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 2013-04-14
      相关资源
      最近更新 更多