在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超时错误没有显示和输出也不会来请给一些解决方案。

+1

您是在真实设备还是在eclipse仿真器中测试它? – TlmaK0 2014-10-18 11:06:14

+0

我都在测试 – 2014-10-18 12:34:02

首先,仔细检查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);