当定位模式设置为“0”时,总是达到关于地理定位的超时;仅设备”;
Timeout about geolocation always reached when position mode is set to "Device only"
我拥有一个Ionic应用程序(Cordova)。
我有这个JS代码旨在获得Android设备的位置:
$cordovaGeolocation.getCurrentPosition({
enableHighAccuracy: true,
timeout: 15000
})
$cordovaGeolocation
来源于ng cordova库
我成功地检查了插件org.apache.cordova.geolocation
是否已更新为上一个当前版本。
一些用户抱怨第一次查询超过15秒
请注意,超时设置为15000毫秒=>15秒
这意味着该设备没有成功确定位置。
经过调查,我发现了问题:
这些用户已将其位置模式设置为"仅限设备",或在设备设置中也称为"仅GPS"
当用户切换到"高精度模式"时,整个工作不到一秒钟。
如何在不建议用户切换到"高精度模式"的情况下解决此问题?是虫子吗?
注意,我也用enableHighAccuracy: false
进行了测试,但结果相同。
我不是唯一一个有这个"大"问题的人:
Phonegap-具有省电和仅GPS模式的地理定位
但没有答案。。
我在github上看到过您的问题。我正在使用ng cordova插件。我使用以下变通方法使GPS只工作。由于低精度越快,超时时间为4s。
$cordovaGeolocation.getCurrentPosition({enableHighAccuracy: false, maximumAge: MAXAGE, timeout: 4000})
.then(
function (position) { //success Low-Accuracy
console.log('getCurrentPosition: HighAccuracy false: Ok!');
//[..]
},
function(err) { //error Low-Accuracy
console.log(err);
$cordovaGeolocation.getCurrentPosition({enableHighAccuracy: true, maximumAge: MAXAGE, timeout: 10000})
.then(
function (position) { //success High-Accuracy
console.log('getCurrentPosition: HighAccuracy true: Ok!');
//[..]
},
function(err) { //error High-Accuracy
console.log('getLocation: ERRO: ' + ERROR[err.code] + ' => ' + err.message);
//[..]
}
);
}
);
我为这个问题斗争了三天,但没有解决方案。它只是不起作用,而且从来没有。所以我会尝试使用另一种工具,因为cordova不适合用于地理定位。现在我专注于java,我想正确地做到这一点(当我选择cordova时,ios是一个额外的奖励)。
我已经为同样的问题挣扎了一整天,我发现android版的cordova地理定位插件使用了WebView的地理定位功能,不知道为什么,但对于WebView来说,"仅使用gps"是不够的。
所以,我开始寻找一些替代方案https://github.com/louisbl/cordova-locationservices
插件非常棒,但需要安卓播放服务。我已经为地理定位编写了小角度服务:
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的情况下使用网络查找当前位置。
- 地理定位api和谷歌地图出错
- 当定位模式设置为“0”时,总是达到关于地理定位的超时;仅设备”;
- Chrome地理定位在更新后停止工作
- 地理定位在Jsfidle中工作,但不在任何其他JS编辑器中
- Phonegap地理定位无法在移动设备上工作
- 地理定位无法在chrome中工作
- 地理定位API从Chrome 50中的不安全来源中删除
- cordova背景地理定位无法在背景上工作
- 如果元素在容器外部,是否可以相对于容器以绝对定位来定位该元素
- 如何相对于浏览器窗口定位DIV
- 在地图加载/页面加载时,我想将地图设置为当前地理位置,但不想在地图上显示定位图标
- 如何用HTML5地理定位API实现承诺
- 如何强制HTML5地理定位失败
- 如何相对于父边框的外边缘定位元素
- 从地理定位字符串中提取纬度/液化
- Cordova 3.0 ios地理定位如何停止每个屏幕的警报
- 未定义不是一个函数,谷歌地理定位
- 谷歌地理定位和方向API
- 使用地理定位和地理编码来定位用户'的城市,并将其分配给一个变量
- HTML 5地理定位仅适用于笔记本电脑