我拥有一个Ionic应用程序(Cordova)。
我有这个JS代码,目的是获取Android设备的位置:
$cordovaGeolocation.getCurrentPosition({
enableHighAccuracy: true,
timeout: 15000
})
$cordovaGeolocation
来自吴-科多瓦库。
我成功地检查了插件org.apache.cordova.geolocation
是否更新了上一个当前版本。
有些用户抱怨第一次查询超过15秒!
请注意,超时设置为15000毫秒=> 15秒。
这意味着设备没有成功地建立该位置。
经过调查,我发现了这个问题:
当用户切换到“高精度模式”时,整个工作时间不到一秒钟。
如何在不建议用户切换到“高精度模式”的情况下解决此问题?是虫子吗?
注意,我也用enableHighAccuracy: false
进行了测试,但结果是相同的。
我不是唯一一个有“大”问题的人:
但没人回答。
发布于 2015-05-08 07:47:21
我为这个问题奋斗了三天,没有解决办法。只是不起作用,而且从来没有。所以我会尝试使用另一个工具,因为cordova不适合地理定位。现在我专注于java,我希望正确地做到这一点(ios是一个奖励,当我选择cordova)。
发布于 2015-07-08 13:07:09
我一整天都在为同样的问题而挣扎,我发现用于安卓的cordova地理定位插件使用了WebView的地理定位功能,不知道为什么,但是WebView 'gps‘是不够的。
所以,我已经开始寻找一些替代方案,并找到了https://github.com/louisbl/cordova-locationservices
插件非常棒,但需要android播放服务。我为地理定位编写了小角度服务:
multiplatformGeolocation.inject = ['$q'];
function multiplatformGeolocation ($q) {
var self = this;
this.getCurrentPosition = function (opts) {
var q = $q.defer();
self.locationModule.getCurrentPosition(function (result) {
q.resolve(result);
}, function (err) {
q.reject(err);
}, opts || self.positionOptions);
return q.promise;
};
this.init = function () {
var PRIORITY_BALANCED_POWER_ACCURACY = 102;
self.positionOptions = {
timeout: 20000,
enableHighAccuracy: false,
priority: PRIORITY_BALANCED_POWER_ACCURACY
};
self.locationModule = window.cordova && window.cordova.platformId == 'android' ? LocationServices : navigator.geolocation;
}
}
请注意,我使用了PRIORITY_BALANCED_POWER_ACCURACY,它允许设备使用网络查找当前位置,如果gps被禁用。
https://stackoverflow.com/questions/29411697
复制相似问题