2014-11-06 40 views
1

我有以下ondeviceready代碼:的PhoneGap ondeviceready和geoPosition.getCurrentPosition不會一起工作

document.addEventListener("deviceready", onDeviceReady, false); 
      function onDeviceReady() { 
       getLocation(); 
      } 

如果我只是調用的getLocation();沒有事件監聽器,它可以正常工作(除了雙位置服務提示符)。

但是,如果我調用getLocation();在上面的代碼中失敗了。特別是這個函數永遠不會返回任何東西和時間:geoPosition.getCurrentPosition(geoSuccess,geoError,{timeout:7000});

代碼在'ondeviceready'之外工作的原因是什麼,但是當我在上面的代碼中調用它時失敗了?

想法?

這裏是我的getLocation功能:

enter code here

function getLocation(){ 

     var latitude = localStorage.getItem('Lat'); 
     var longitude = localStorage.getItem('Long'); 

     if (geoPosition.init()) { 
      geoPosition.getCurrentPosition(geoSuccess, geoError, {timeout:7000}); 
     } 

     function geoSuccess(p) { 
      console.log("Found you at latitude " + p.coords.latitude + ", longitude " + p.coords.longitude); 
     } 

     function geoError() { 
      console.log("Could not find you!"); 
     } 
    } 

編輯 - ADDED

你可以看到我在代碼:http://www.classhoppers.com/app/index.html

如果您在Chrome中運行它上面的頁面作品。您可以打開網絡檢查器並查看本地存儲更新Lat/Long

如果您模擬iPhone5,則會看到Lat/Long永遠不會更新。

以下是我發現:

調用我的功能:的getLocation();單獨工作

調用它的OnDeviceReady裏面不起作用

首先,我檢查,如果它是一個移動瀏覽器然後運行onDeviceReady。

if(SmartPhone.isAny() == true){ 
document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() { 
getLocation(); 
} 
} 
else { 
console.log('browser'); 
getLocation(); 
} 

這裏是一個鏈接到我的getLocation()函數:http://www.classhoppers.com/app/js/geoLocation.js

+0

您是否嘗試過不嵌套您的功能? (比如,在'getLocation'之外移動'geoSuccess'和'geoError')看起來它可能是一個範圍問題 – 2014-11-06 21:43:26

+0

謝謝,我移動了這些函數但沒有任何效果。 – 2014-11-06 21:51:23

+0

當這個函數被調用時,我應該得到一個允許位置服務的提示:geoPosition.getCurrentPosition(geoSuccess,geoError,{timeout:7000}); – 2014-11-06 21:51:57

回答

0

嘗試手動插入腳本標籤在您的index.html文件的頭部cordova.js。我懷疑你錯過了這個腳本。

<script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
+0

我有該腳本加載之前:任何其他人:view-source:http://www.classhoppers.com/app/index.html – 2014-11-06 22:19:27

+0

好吧,我認爲這可能是最可能的問題。科爾多瓦沒有被加載,因此事件沒有被解僱。您是否在cordova應用程序上運行Chrome調試工具以查看是否存在任何控制檯錯誤? – 2014-11-06 22:50:34

+0

我編輯了這篇文章。是的,我已經運行了Chrome開發工具。以下是我發現的內容:如果您在Chrome的這個頁面上運行代碼,它就可以運行。 http://www.classhoppers.com/app/index。html您可以打開網絡檢查器並查看本地存儲更新Lat/Long 如果您模擬iPhone5,則會看到Lat/Long永遠不會更新。 – 2014-11-06 23:08:55

相關問題