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) }, }