【问题标题】:Cordova GPS application timeout errorCordova GPS 应用程序超时错误
【发布时间】:2015-03-20 12:20:30
【问题描述】:

我正在编写一个需要用户当前位置坐标的应用程序。我使用 Cordova Geolocation API 并在 Intel XDK 环境中进行开发。

在某些手机(例如三星 S3 和 S4)中,API 无法获取位置,而是返回超时错误。但是,有时重启手机后会起作用。

我需要一个稳定的解决方案,因为该位置对我的项目至关重要。这是我当前的代码:

navigator.geolocation.getCurrentPosition(geolocationSuccess,
                                         geolocationError,
                                         {maximumAge:0,timeout: 7000, enableHighAccuracy: true});

我尝试使用不同的参数(更改的 maximumAge、超时等)调用 getCurrentPosition,但似乎没有任何效果。

有什么办法可以解决这个问题吗?是否还有其他一些插件可以让我获取用户的位置?或者,我可以使用手机的原生功能来获取位置吗?

【问题讨论】:

  • 拒绝工作的手机是否开启了GPS?
  • 您是否更改了设备的安全设置。转到设置 -> 安全 -> 选中“未知来源”复选框,以允许您的 apk 正常运行。
  • @shamaleyte 如果未选中,您甚至无法安装来自外部来源的程序。
  • @GrawCube 你是对的,你不能。但是有可能在您安装应用程序后未选中“未知来源”复选框。在这种情况下,您的应用将打开,但无法按预期运行。
  • 感谢您的回复。但是我需要一个明确的解决方案,我不能对所有安装了我的应用程序的人说你应该检查你的手机安全设置或重启他们的手机。原生 android 程序不要求这样做,但它们可以像foursquare 等那样有效地使用定位服务......

标签: cordova gps intel intel-xdk w3c-geolocation


【解决方案1】:

打开 Android 项目清单并添加这些权限

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

然后重新编译并启动您的项目。

【讨论】:

  • 我在我的应用程序中拥有这些权限 您是否曾在三星 S3 或 S4 上尝试过 cordova gps 应用程序?有用吗?
【解决方案2】:

getCurrentPosition() 对设备位置进行一次请求。如果在应用程序启动后立即调用,则超时(7000 毫秒/7 秒不是很长 - 我会增加到 30000)可能会在 GPS 硬件有机会获得定位之前发生。

我建议使用watchPosition() 来设置一个观察者,该观察者将在每次操作系统接收到位置更新时调用成功函数。如果您只需要一个位置,您可以在获得一个准确度可接受的位置后清除观察者。

例如:

var minAccuracyInMetres = 50;

var positionWatcher = navigator.geolocation.watchPosition(
  geolocationSuccess,
  geolocationError,
  {maximumAge:0, timeout: 30000, enableHighAccuracy: true});

function geolocationSuccess(position){
  // Reject if accuracy is not sufficient
  if(position.coords.accuracy > minAccuracyInMetres){
      return;        
  }

  // Only single position required so clear watcher
  navigator.geolocation.clearWatch(positionWatcher);

  // Do something with the user's location...

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多