我安装了离子原生地理定位插件
"@ionic-native/geolocation": "^4.15.0"
我也试过“4.6.0”和“4.20.0”。当我在访问该页面之前保持GPS启用时,它工作得非常好。但是当没有启用GPS时,它不会要求我打开它,在控制台上给出错误并带有未定义的坐标。
我在构造函数/ ionViewDidLoad中编写了getCurrentPosition方法。因此,即使用户在该页面上启用它,该方法也不会调用,并且坐标保持未定义。
以下是代码
this.geolocation
.getCurrentPosition()
.then(resp => {
console.log(resp);
this.longitude = resp.coords.longitude;
this.latitude = resp.coords.latitude;
})
.catch(error => {
console.log("Error getting location", error);
});
我不知道我是否必须提供手动权限或者什么?我在几个月之前做了同样的事情,一切都很好。我第一次面对这样的问题。请帮我摆脱这个。
您应手动询问权限并请求用户启用位置。您可以使用Diagnostic插件(@ ionic-native / diagnostic)执行此操作。您应该使用以下方法:
diagnostic.isLocationEnabled()
diagnostic.isLocationAvailable()
diagnostic.requestLocationAuthorization()
如果要在授予权限后更新位置,则可以使用此方法:
diagnostic.registerLocationStateChangeHandler()
您可以在此处传递回调,检查位置是否已启用并且是否可用。
从这里安装Diagnostics插件:https://ionicframework.com/docs/v3/native/diagnostic/,然后检查是否使用diagnostics.isLocationAvailable()
启用了位置,如果没有,则提示用户使用diagnostics.switchToLocationSettings()
从设备设置屏幕启用它。