Cordova地理位置插件无法从Android GPS获取位置

4

在我的 Cordova 应用程序中,我正在尝试从 GPS 获取用户位置。为此,我使用了Geolocation 插件。我需要每隔 10 秒获取一次位置。我正在执行以下操作:

navigator.geolocation.getCurrentPosition(
                      $rootScope.onSuccessForLocation,
                      $rootScope.onErrorForLocation_High,
                      {maximumAge:600000, timeout:7000, enableHighAccuracy: true}
                      );

现在,当这段代码运行时,它给我回调方法中的位置,但它不来自GPS,因为当应用程序启动时,GPS图标应该出现并在状态栏中闪烁。但是这并没有发生。 我有一个旧的应用程序使用相同的插件。当我启动那个应用程序时,GPS图标开始闪烁。到目前为止,我注意到的一件事是,在旧应用程序中,我可以在android项目中看到Geolocation.java文件,但是最新的插件中没有这样的文件,即使我尝试在Github源文件夹中搜索它。现在,我不知道我的问题是什么。有没有人知道发生了什么?
1个回答

4
他们使用HTML5地理位置实现代替本机代码。在插件的0.3.7版本中,他们移除了Android Java代码。
### 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

如果您想使用使用原生代码的旧版插件,您可以按照以下方式安装:
cordova plugin add org.apache.cordova.geolocation@0.3.6

还有一个问题:如果更新的插件没有本地代码,而且没有网络连接,会发生什么?我的意思是,当我尝试使用enableHighAccuracy: true获取位置时,HTML5会如何响应? - Khawar Raza
我猜想onErrorForLocation_High会在超时后被调用,因为它没有找到准确的位置,但也没有尝试。 - jcesarmobile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接