android - PhoneGap Geolocation 在特殊设备上总是超时

标签 android cordova

我将 cordova 2.9.0 与 PhoneGap Build 一起使用。我写了一个应用程序,用户可以在特定时间在特定位置签到。 我的问题是,当我在各种设备上安装 de app 时,有时总是会出现超时(这仅发生在 Android 设备上)。当我重新启动设备时,地理定位工作,我得到了 gps 数据。现在我想知道是否有另一种方法可以解决这个问题。 我在 deviceReady 函数中的地理定位代码是:

var geo = cordova.require('cordova/plugin/geolocation');
var optionsGeo = {maximumAge: 0, timeout: 30000, enableHighAccuracy: false};
var watchID = geo.watchPosition(onSuccessGeo, errorGeo, optionsGeo);

function onSuccessGeo(position) {
  lat = (position.coords.latitude).toFixed(6);
  lon = (position.coords.longitude).toFixed(6);
  accuracy = (position.coords.accuracy).toFixed(0); 
  console.log("Lat " + lat + " Lon " + lon + " & " + accuracy + "m");
}

function errorGeo(error) {
  console.log("Geo-Fehler! Code: " + error.code + " Nachricht: " + error.message);
}

我尝试了不同的超时值和启用的 HighAccuracy - 但没有任何帮助。 谢谢。

最佳答案

我也面临这个问题,主要是三星 android 设备。我发现的是:

  1. 如果您的设备没有安装 SIM 卡,则不会有 gps 坐标(仅适用于某些设备)。

  2. 请确保您有 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />在你的 android list 中设置。

  3. 你应该设置enableHighAccuracy:true请看下面我的设置:

    var options = {maximumAge: 0, timeout: 10000, enableHighAccuracy:true}; navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

enableHighAccuracy 提供应用程序希望获得最佳结果的提示。默认情况下,设备将尝试使用基于网络的方法检索位置。将此属性设置为 true 会告知框架使用更准确的方法,例如卫星定位。

在某些情况下,开发人员使用 geolocation.watchPosition 以获得更准确的 gps 结果。你也可以试试吗?

希望对您有所帮助!

关于android - PhoneGap Geolocation 在特殊设备上总是超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18465451/

相关文章:

android - 从 Android 迁移到 iPhone

android - 如何检查 Activity 是否仍在堆栈中?

android - 支持多种屏幕尺寸的文本

Android 从 setImageBitmap 缩放 imageview

android - TabHost 和 PhoneGap

javascript - 将列表值传递到 JQuery Mobile 中的另一个页面

Android 可点击自定义操作提供程序

android - 如何在 Play 商店中为您的应用程序手动下载扩展 (obb) 文件?

cordova - phoneGap 启动 - 我们需要所有这些文件吗?

ios - 由于未捕获的异常 'NSInvalidArgumentException',错误终止应用程序