export default {
|
//检测是否开启系统定位权限
|
hasLocationPermission() {
|
let system = uni.getSystemInfoSync();
|
if (system.platform === 'android') { //安卓
|
let context = plus.android.importClass("android.content.Context");
|
let locationManager = plus.android.importClass("android.location.LocationManager");
|
let main = plus.android.runtimeMainActivity();
|
let service = main.getSystemService(context.LOCATION_SERVICE);
|
//已开启系统定位服务功能
|
if (service.isProviderEnabled(locationManager.GPS_PROVIDER)) {
|
// uni.showModal({
|
// content: "定位功能已开启,请勿离开应用或熄屏",
|
// showCancel: false
|
// })
|
return true;
|
} else { //未开启引导开启
|
uni.showModal({
|
title: '友情提示',
|
content: '请开启位置服务功能',
|
success: e => {
|
if (e.confirm) {
|
//打开手机系统gps定位设置页面
|
let Intent = plus.android.importClass('android.content.Intent');
|
let Settings = plus.android.importClass('android.provider.Settings');
|
let intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
|
main.startActivity(intent);
|
}
|
}
|
})
|
}
|
} else if (system.platform === 'ios') { //ios
|
let cllocationManger = plus.ios.import("CLLocationManager");
|
let enable = cllocationManger.locationServicesEnabled();
|
let status = cllocationManger.authorizationStatus();
|
plus.ios.deleteObject(cllocationManger);
|
if (enable && status != 2) return true; //已开启定位功能
|
else {
|
uni.showModal({
|
title: '友情提示',
|
content: '请前往设置-定位服务打开定位服务功能',
|
success: e => {
|
if (e.confirm) {
|
let UIApplication = plus.ios.import("UIApplication");
|
let application = UIApplication.sharedApplication();
|
let NSURL = plus.ios.import("NSURL");
|
let setting = NSURL.URLWithString("app-settings:");
|
application.openURL(setting);
|
plus.ios.deleteObject(setting);
|
plus.ios.deleteObject(NSURL);
|
plus.ios.deleteObject(application);
|
}
|
}
|
});
|
}
|
}
|
return false;
|
},
|
/**开启后台持续获取定位功能
|
* successCallBack:成功回调函数
|
*failCallBack:失败回调函数
|
*maximumAge:获取定位间隔时间
|
*/
|
startLocationService(successCallBack = () => {}, failCallBack = () => {}, maximumAge = 60 * 1000) {
|
if (this.hasLocationPermission()) { //有定位权限
|
let locationWatcherId = plus.geolocation.watchPosition((position) => {
|
successCallBack({
|
locationWatcherId,
|
position: position.coords
|
})
|
}, function(e) {
|
console.log(e, '定位失败');
|
failCallBack(e)
|
}, {
|
maximumAge, //获取位置间隔时间
|
});
|
|
}
|
|
|
},
|
//关闭定位功能
|
closeLocationService(locationWatcherId) { //locationWatcherId:开启步骤生成的监听器id
|
plus.geolocation.clearWatch(locationWatcherId)
|
},
|
}
|