![](/img/trans.png)
[英]navigator.geolocation.getCurrentPosition always get a error code 3: timeout expired
[英]navigator.geolocation.getCurrentPosition always getting timeout in Android until GPS/Location is OFF
app.controller('dashboard', function($scope){
$scope.getPosition = function(position){
$scope.acc = position.coords;
$scope.lat = position.coords.latitude;
$scope.lng = position.coords.longitude;
$scope.$apply();
};
$scope.getPositionErr = function(error){
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
};
navigator.geolocation.getCurrentPosition($scope.getPosition, $scope.getPositionErr, {maximumAge: 0, timeout: 6000, enableHighAccuracy:false});
});
我正在将 Angular JS 和 Cordova 用于 Android 应用程序。 此代码在桌面上运行良好,但在带有 Lollipop 的 Nexus 4 上运行良好。 根据 Cordova 的要求,在 deviceready 之后执行控制器代码
我试过了
但我无法获得经纬度,地理位置总是超时。
它仅在我从设置中启用位置/GPS 时才有效。 启用它后,代码按预期工作。
navigator.geolocation.getCurrentPosition仅在选项“enableHighAccuracy”设置为“true”(默认)时适用于 GPS。 这就是您无法通过移动设备获取当前位置的原因。 关于“它正在桌面上运行”,我相信您一定在浏览器中打开了 GPS 设置。
通常我使用下面的代码来获取位置,无论 GPS 是否打开。
var positionOption = { timeout: 500, enableHighAccuracy: true };
var gpsSunccuss = function(currentPosition) {
//use gps position
};
var gpsFailed = function() {
//use some 3rd party position solution(get position by your device ip)
getPositionBy3rdParty();
};
navigator.geolocation.getCurrentPosition(gpsSunccuss, gpsFailed, positionOption);
另一方面,您可以将 enableHighAccuracy 设置为“false”。
我有相同的问题,这为我解决了
{enableHighAccuracy:false,maximumAge:Infinity, timeout:60000}
你可以试试这个。
{enableHighAccuracy:true, Infinity:Infinity, timeout:2000}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.