禁用GPS时,Ionic 3地理定位无效

问题描述 投票:3回答:2

我安装了离子原生地理定位插件

"@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);
  });

我不知道我是否必须提供手动权限或者什么?我在几个月之前做了同样的事情,一切都很好。我第一次面对这样的问题。请帮我摆脱这个。

javascript ionic2 ionic3 ionic-native ionic4
2个回答
1
投票

您应手动询问权限并请求用户启用位置。您可以使用Diagnostic插件(@ ionic-native / diagnostic)执行此操作。您应该使用以下方法:

diagnostic.isLocationEnabled()
diagnostic.isLocationAvailable()
diagnostic.requestLocationAuthorization()

如果要在授予权限后更新位置,则可以使用此方法:

diagnostic.registerLocationStateChangeHandler()

您可以在此处传递回调,检查位置是否已启用并且是否可用。


0
投票

从这里安装Diagnostics插件:https://ionicframework.com/docs/v3/native/diagnostic/,然后检查是否使用diagnostics.isLocationAvailable()启用了位置,如果没有,则提示用户使用diagnostics.switchToLocationSettings()从设备设置屏幕启用它。

© www.soinside.com 2019 - 2024. All rights reserved.