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});
});
我正在为 Android 应用程序使用 Angular JS 和 Cordova。此代码在桌面上运行良好,但在带有 Lollipop 的 Nexus 4 上运行不正常。根据 Cordova 的要求,控制器代码也在设备就绪后执行
我试过了
- 将 HighAccuracy 设置为 false
- 删除地理定位插件,以便它使用 Wifi 的默认位置
- 设备重启
- 清除浏览器缓存
- 飞行模式开/关
- 无线网络开/关
- 移动数据开/关
但我无法获得纬度、经度和地理定位总是超时。
它仅在我从设置中启用位置/GPS 时有效。启用它后代码按预期工作。
原文由 A dev 发布,翻译遵循 CC BY-SA 4.0 许可协议
navigator.geolocation.getCurrentPosition 仅在选项“enableHighAccuracy”设置为“true”(默认)时适用于 GPS。这就是您无法通过移动设备获取当前位置的原因。关于“it is working on desktop”,我相信你一定在你的浏览器中打开了GPS设置。
通常我使用下面的代码来获取位置,无论 GPS 是否打开。
另一方面,您可以将 enableHighAccuracy 设置为“false”。