【问题标题】:Ionic 3 geolocation not working when GPS is disabled禁用 GPS 时 Ionic 3 地理定位不起作用
【发布时间】:2019-07-02 16:37:03
【问题描述】:

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

"@ionic-native/geolocation": "^4.15.0"

我也试过“4.6.0”和“4.20.0”。当我在进入该页面之前启用 GPS 时,它工作得非常好。但是当 GPS 未启用时,它不会要求我打开它,在控制台上给出错误并携带未定义的坐标。

我在constructor/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


    【解决方案1】:

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

    【讨论】:

    • 先生它在一种情况下工作:假设我现在跳转到 GPS 位置设置我没有启用 GPS 并单击移动返回按钮它在这种情况下没有工作,如何再次检查,因为用户 GPS 已关闭现在如何处理这个案子先生
    • 在提示用户打开位置设置的模态中,添加另一个按钮,允许用户调用重新初始化地理位置的方法。
    • 但是为什么需要点击按钮重新初始化我没有点击任何按钮就重新初始化了?
    【解决方案2】:

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

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

    如果您想在获得权限后更新位置,您可以使用此方法:

    diagnostic.registerLocationStateChangeHandler()

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

    【讨论】:

    • 我应该在哪里写这段代码?在构造函数中还是在 ionViewDidEnter 或其他地方?
    • 这取决于您希望应用程序的功能。请记住生命周期事件 (ionicframework.com/docs/v3/api/navigation/NavController) 以获得您想要的行为。实例化组件时调用构造函数,每次视图激活时调用 ionViewDidEnter。这取决于您的应用获得位置的重要性。请注意,如果用户不允许应用获取位置,您可能无法获取。所以你应该考虑这种情况。每次进入时我都会检查,如果没有被授予,我会请求权限。
    • @NicolásLonghi:先生,它在一种情况下工作:假设我现在跳转到 GPS 位置设置我没有启用 GPS 并单击移动返回按钮它在这种情况下没有工作,如何再次检查,因为用户GPS 已关闭,先生,如何处理此案?
    • 当应用程序回到前台时,不要假设您有可用的位置。如上所述,您可以使用 diagnostic.registerLocationStateChangeHandler() 来监听更改,或者您可以再次询问是否已授予权限。
    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多