2014-10-18 79 views
0

我正在開發混合移動應用程序使用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

回答

0

首先,仔細檢查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} 
      ); 
0

我嘗試了多種策略,直到找到一個結果,如果不是我做一個拉的每一分鐘。或多或少像這樣:

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); 
相關問題