在apache cordova中的地理位置(getcurrentlocation)在android中不工作
问题描述:
我正在开发混合移动应用程序使用cordova for android.I想从设备获取当前位置为我使用cordova.But中的地理位置插件后调用在apache cordova中的地理位置(getcurrentlocation)在android中不工作
navigator.geolocation.getCurrentPosition(onSuccess,onError);
它总是要回调的onError,并显示超时error.if我给超时选项
,如果我不给timout option..the超时错误没有显示和输出也不会来请给一些解决方案。
答
首先,仔细检查GPS设备时,应用程序启动时, - )
其次,尝试添加选项enableHighAccuracy假到您的通话getCurrentPosition和或测试与高速缓存,选择maximumAge。如果长时间没有应答,可能GPS设备速度很慢。获取GPS信息可能需要长达25秒的时间。所以要有耐心, - )
navigator.geolocation.getCurrentPosition(
function(positionGPS){console.log(positionGPS);},
function(){console.log('no gps');},
{enableHighAccuracy:false,maximumAge:Infinity, timeout:60000}
);
答
我尝试了多种策略,直到找到一个结果,如果不是我做一个拉的每一分钟。或多或少像这样:
function calculatePosition(timeout, maxAge, accuracy, step){
navigator.geolocation.getCurrentPosition(
function(position){
console.log("success");
},
function(error){
nextStep(step + 1);
},
{enableHighAccuracy: accuracy,
timeout: timeout,
maximumAge: maxAge}
);
}
function nextStep(step){
switch(step){
case 0:
calculatePosition(1000, 604800000, false, step);
break;
case 1:
calculatePosition(1000, 604800000, true, step);
break;
case 2:
calculatePosition(5000, 4000, false, step);
break;
case 3:
calculatePosition(5000, 4000, true, step);
break;
case 5:
calculatePosition(50000, 60000, true, step);
break;
case 6:
calculatePosition(50000, 60000, false, step - 2);
break;
}
}
nextStep(0);
您是在真实设备还是在eclipse仿真器中测试它? – TlmaK0 2014-10-18 11:06:14
我都在测试 – 2014-10-18 12:34:02