Cordova 地理定位插件无法从 Android 的 GPS 获取位置
Posted
技术标签:
【中文标题】Cordova 地理定位插件无法从 Android 的 GPS 获取位置【英文标题】:Cordova geolocation plugin not getting location from GPS for Android 【发布时间】:2015-04-15 09:35:06 【问题描述】:在我的 Cordova 应用程序中,我试图从 GPS 获取用户的位置。为此,我使用Geolocation plugin。我需要每 10 秒后获取一次位置。我正在做类似的事情:
navigator.geolocation.getCurrentPosition(
$rootScope.onSuccessForLocation,
$rootScope.onErrorForLocation_High,
maximumAge:600000, timeout:7000, enableHighAccuracy: true
);
现在,当此代码运行时,它在回调方法中为我提供了位置,但它不是来自 GPS,因为当应用程序启动时,GPS 图标应该出现并开始在状态栏中闪烁。但它没有发生。 我有一个使用相同插件的旧应用程序。当我启动该应用程序时,GPS 图标开始闪烁。到目前为止我注意到的一件事是,在旧应用程序中,我可以在 android 项目中看到 Geolocation.java 文件,但即使我尝试在 Github 源文件夹中搜索它,最新插件中也没有这样的文件。现在,我不知道我身边缺少什么。有人知道发生了什么吗?
【问题讨论】:
【参考方案1】:他们使用 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 将如何响应? 我想onErrorForLocation_High会在超时后被调用,因为它没有找到准确的位置,但没有尝试以上是关于Cordova 地理定位插件无法从 Android 的 GPS 获取位置的主要内容,如果未能解决你的问题,请参考以下文章
cordova android 6.3.0 的相机和地理定位插件问题