2014-07-18 133 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 

希望这有助于