PhoneGap Geolocation在特殊设备上始终处于超时状态

时间:2013-08-27 12:28:42

标签: 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 - 但没有任何帮助。 感谢。

2 个答案:

答案 0 :(得分:4)

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

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

  2. 请确保您的Android清单中设置了<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

  3. 您应该设置enableHighAccuracy:true,请参阅下面的设置:

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

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

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

    我希望它有所帮助!

答案 1 :(得分:1)

我知道这个问题已经过时了但我今天遇到了同样的问题,使用了Cordova 3.5.0和geolocation插件(org.apache.cordova.geolocation 0.3.8)。

我通过在设备(Android)上启用GPS&#34; HighAccuracy&#34; -mode解决了这个问题。 (设置 - &gt;位置访问 - &gt;模式)。
app-user获得一个提示,他需要启用此选项才能使用该应用程序...