接受地理位置许可后运行功能

时间:2018-08-09 03:12:07

标签: javascript cordova ionic-framework ionic2 geolocation

我遇到了地理位置问题,我需要在iOS上出现geolocation提示并为用户单击“接受”后运行功能。

当前我正在ngOnInit上检查用户位置,但是如果他们尚未接受,则在检查用户位置后运行的功能将无法正常工作。

这是我目前拥有的:

this.geolocation.getCurrentPosition({enableHighAccuracy: false, timeout: 3000, maximumAge: 100000})
.then((resp) => {
   this.userLocation.lat = resp.coords.latitude;
   this.userLocation.lng = resp.coords.longitude;
   this.getLocation();
}).catch((error) => {
   console.log(error)    
});

因此this.getLocation();函数在地理位置找到位置后运行,但是在用户接受“允许该应用程序使用您的位置”提示后,我将如何运行此代码?

谢谢!

1 个答案:

答案 0 :(得分:0)

cordova-plugin-geolocation确实不允许这样做。

您可以使用其他插件,例如cordova-diagnostic-plugin,允许您请求任何权限。

cordova.plugins.diagnostic.requestLocationAuthorization(function(status){
    switch(status){
        case cordova.plugins.diagnostic.permissionStatus.NOT_REQUESTED:
            console.log("Permission not requested");
            break;
        case cordova.plugins.diagnostic.permissionStatus.DENIED:
            console.log("Permission denied");
            break;
        case cordova.plugins.diagnostic.permissionStatus.GRANTED:
            console.log("Permission granted always");
            break;
        case cordova.plugins.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE:
            console.log("Permission granted only when in use");
            break;
    }
}, function(error){
    console.error(error);
}, cordova.plugins.diagnostic.locationAuthorizationMode.ALWAYS);

Docs