我在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)中测试
答案 0 :(得分:0)
这对我来说似乎是预期的结果。正在发生的事情是你的幕后设备足够智能,可以循环使用从最高到最低的当前位置的所有方式。
如果您禁用gps位置,设备将继续沿着此列表向下,直到找到有效的位置方法。通过查看位置对象返回的“准确度”属性,您可以轻松地说出这一点。根据我的经验,准确度< 100表示gps位置,< 1000表示wifi位置,高于您肯定在基于蜂窝塔的位置。这些当然只是粗略的指导,取决于卫星的视线和无线/蜂窝塔的可用性,精度可能有很大差异。重点是禁用gps不会阻止你获取一个位置,它只会迫使手机使用不太精确的方法。