Javascript 禁用GPS时,Ionic 3地理定位不工作
我已经安装了爱奥尼亚本地地理定位插件Javascript 禁用GPS时,Ionic 3地理定位不工作,javascript,ionic2,ionic3,ionic-native,ionic4,Javascript,Ionic2,Ionic3,Ionic Native,Ionic4,我已经安装了爱奥尼亚本地地理定位插件 "@ionic-native/geolocation": "^4.15.0" 我也试过“4.6.0”和“4.20.0”。当我在进入该页面之前启用GPS时,它工作得绝对正常。但当GPS未启用时,它不会要求我打开它,在控制台上给出错误,并携带未定义的坐标 我在constructor/ionViewDidLoad中编写了getCurrentPosition方法。因此,即使用户在该页面上启用它,该方法也不会调用,并且坐标保持未定义 下面是代码 this.geolo
"@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);
});
我不知道我是否必须给予手动权限或什么??几个月前我也这么做了,一切都很好。我第一次面对这样的问题。请帮我摆脱困境。您应该手动请求权限并请求用户启用位置。您可以使用诊断插件(@ionic native/Diagnostic)完成此操作。您应该使用以下方法:
diagnostic.isLocationEnabled()
诊断。isLocationAvailable()
diagnostic.requestLocationAuthorization()
从此处安装诊断插件:,然后检查是否使用Diagnostics.isLocationAvailable()启用了位置,如果未启用,则使用Diagnostics.switchToLocationSettings()
从设备设置屏幕提示用户启用位置。我应该在哪里写入此代码?无论是在构造函数中还是在IonViewDiCenter中,还是在其他地方?这取决于您希望应用程序具有的功能。请记住生命周期事件()以获得所需的行为。实例化组件时调用构造函数,每次视图激活时调用IonViewDiCenter。这取决于应用程序获得位置的重要性。请注意,如果用户不允许应用程序获得该职位,您可能无法获得该职位。所以你应该考虑这个案子。每次进入时,我都会检查,如果没有授予权限,我会请求权限。@NicolásLonghi:先生,有一种情况下会工作:假设我现在跳转到GPS位置设置,我没有启用GPS,然后单击“移动后退”按钮,在这种情况下不会工作,如何再次检查,因为用户GPS已关闭。如何管理此情况,先生?当应用程序返回前台时,不要假设您有可用的位置。如上所述,您可以使用diagnostic.registerLocationStateChangeHandler()来侦听更改,或者您可以再次询问是否已授予权限。sir在一种情况下工作:假设我现在跳转到GPS位置设置,我不启用GPS,并单击“移动后退”按钮在这种情况下不工作,如何再次检查因为用户GPS已关闭如何管理此情况Sir在提示用户打开位置设置的模式中,添加另一个按钮以允许用户调用重新初始化地理位置的方法。但是为什么需要单击按钮进行重新初始化我已重新初始化,但没有单击任何按钮?