2014-07-18 215 views
4

我使用Cordova 3.5中的地理位置插件。我已經編寫如下:在科爾多瓦/ Phonegap獲取當前位置僅使用GPS

navigator.geolocation.getCurrentPosition(function(pos) { 
    var lat = pos.coords.latitude; 
    var lng = pos.coords.longitude; 
    alert("lat : "+lat+" lng : " +lng"); 
}); 

我遊蕩這個代碼是否能正常工作得到緯度經度沒有互聯網連接和GPS上。如果沒有,是否有解決方案?感謝您的幫助。

回答

1

沒有互聯網連接,還有像小區的ID,RFID和你連接到設備的MAC地址,源(如WIFI路由器,藍牙)

的代碼應該工作,但您可以添加一些東西(萬一事件監聽和錯誤警報,該位置無法找到):

document.addEventListener("deviceready", onDeviceReady, false); 
     function onDeviceReady() { 
      navigator.geolocation.getCurrentPosition(onSuccess, onError); 
     } 

    function onSuccess(position) { 
      var lat = pos.coords.latitude; 
      var lng = pos.coords.longitude; 
      alert("lat : " + lat + " lng : " + lng); 

     } 

    function onError(error) { 
      alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n'); 
     } 

我知道,例如谷歌的位置API使用最新的已知位置,它可以隨時讀取高速緩存。 我不知道科爾多瓦是否也使用類似的東西,但它可能是。如果正確安裝地理位置

+0

它仍然是個疑問。我使用兩種不同的設備進行測試,並且沒有Internet連接。但我不確定Google位置API是否使用緩存來獲取較晚的位置並顯示它。還有一件事,狀態欄上沒有gps圖標。 – limmouyleng

+0

實際上,我在離線模式下獲得的位置是我在線時曾經獲得的最後一個位置。任何解決方案來解決這個我想在離線時獲取位置信息。 thx爲你的幫助。 – limmouyleng

+0

您的onSuccess方法中存在拼寫錯誤。論點應該是pos不是位置。 – Anish

1

支票或不

重啓手機(愚蠢的解決方案,但它的工作原理sometimes.I面臨一次),如果你的地理權限&設置在設備

開啓

檢查

測試與驗證碼

options = { enableHighAccuracy: true }; 
navigator.geolocation.getCurrentPosition(onSuccess, onError, options); 

如果您使用Android,試圖讓與日食logc錯誤在。

在iOS上,這將始終以某種方式工作。如果插件失敗,將使用瀏覽器自己的Geolocation API。這裏也有一些不良副作用與回退雖:

的權限對話框,彈出的了在標題,而不是應用程序名稱 授予的權限HTML文件的名稱,只要應用程序正在運行 在Android上只會持續

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
1

由於@jcesarmobile在此間指出,Cordova geolocation plugin not getting location from GPS for Android

他們使用HTML5地理位置小鬼只有當您在設置應用程序/ AndroidManifest.xml中正確的權限的工作原理代替原生 代碼。他們去掉了Android的Java代碼的插件 釋放0.3.7

### 0.3.7 (Apr 17, 2014) 
* CB-6422: [windows8] use cordova/exec/proxy 
* CB-6212: [iOS] fix warnings compiled under arm64 64-bit 
* CB-5977: [android] Removing the Android Geolocation Code. Mission Accomplished. 
* CB-6460: Update license headers 
* Add NOTICE file 

希望這有助於