Phonegap:如何在android中使用没有GPS的地理定位并启用高度准确度:true

时间:2013-11-25 21:45:22

标签: android cordova geolocation gps

我在build.phonegap.com的应用程序中使用了地理定位,但我对如何在没有启用GPS的情况下在Android中使用它有一点问题(或问题)。

在android中使用此代码,GPS在设备中启用它工作正常,但是gps被禁用,代码发出错误(我的脚本中出现默认错误)

watchID=navigator.geolocation.getCurrentPosition(handle_geolocation_query, handle_errors, {timeout: 600000, enableHighAccuracy: true});
}

function handle_errors(error)
{
    switch(error.code)
    {
        case error.PERMISSION_DENIED: window.localStorage.setItem("geo_aviso", "latitud", position.coords.latitude);
        break;

        case error.POSITION_UNAVAILABLE: window.localStorage.setItem("geo_aviso", "No podemos encontrar localizaión verifica que la tienes activada en tu dispositivo");
        break;

        case error.TIMEOUT: window.localStorage.setItem("geo_aviso", "Tiempo de espera agotado para encontrar tu localización vuelve a entrar en la app");
        break;

        default: window.localStorage.setItem("geo_aviso", "No podemos detectar tu localización, comprueba que tienes el GPS activado en tu dispositivo");
        break;
    }
}

function handle_geolocation_query(position){
    if (position.coords.latitude!=null)
    {
        some code here
    ;}

如果我在没有enableHighAccuracy: true的情况下使用相同的代码,则在两种情况下都会给出地理位置(启用和不启用gps),但从不使用GPS。

这是预期的结果还是我必须使用不同的代码?

另一个问题是当GPS可用但应用程序无法获取位置时(如果您不在露天)没有给出位置(它必须根据移动网络或wifi给出位置)

在android:4.3(HTC One)中测试

1 个答案:

答案 0 :(得分:0)

这对我来说似乎是预期的结果。正在发生的事情是你的幕后设备足够智能,可以循环使用从最高到最低的当前位置的所有方式。

  1. GPS
  2. wifi位置(最近接入点的位置)
  3. 蜂窝塔位置(您当前连接的蜂窝塔的已知位置)
  4. 如果您禁用gps位置,设备将继续沿着此列表向下,直到找到有效的位置方法。通过查看位置对象返回的“准确度”属性,您可以轻松地说出这一点。根据我的经验,准确度< 100表示​​gps位置,< 1000表示wifi位置,高于您肯定在基于蜂窝塔的位置。这些当然只是粗略的指导,取决于卫星的视线和无线/蜂窝塔的可用性,精度可能有很大差异。重点是禁用gps不会阻止你获取一个位置,它只会迫使手机使用不太精确的方法。