import permision from '../../libs/permission.js' // 主函数 export const getLocation = async (callback) => { return new Promise((resolve, reject) => { uni.getSystemInfo({ success: res => { // uni-app 运行平台 let uniPlatform = res.uniPlatform; // 微信小程序是否开启位置信息按钮 let locationEnabled = res.locationEnabled; // 微信小程序是否位置信息授权 let locationAuthorized = res.locationAuthorized; let osName = res.osName; console.log(uniPlatform, locationEnabled, locationAuthorized); if (uniPlatform == "app") { // 获取当前手机是否开启或关闭了定位服务 let isLocationPermision = permision.checkSystemEnableLocation(); if (!isLocationPermision) callback(); // mShowModel("手机定位服务未开启,请到设置界面开启", ''); if (isLocationPermision) { let permisionStr = osName == "ios" ? "location" : "android.permission.ACCESS_FINE_LOCATION"; // 验证app是否被授权了获取位置权限 let result = osName == "ios" ? iosPermision(permisionStr) : androidPermision(permisionStr).then(res => { if (res == -1) callback(); // mShowModel("你已拒绝获取位置信息授权,请到权限管理进行授权", "授权"); if (res == 0) callback(); // mShowModel("应用未获取位置信息授权,请到权限管理进行授权", "授权"); if (res == 1) getCoordinate().then(res => { resolve(res); }) }) if (result == true) getCoordinate().then(res => { resolve(res); }) } } if (uniPlatform == "mp-weixin") weiXinPermision(locationEnabled, locationAuthorized, callback).then(res => { console.log(res, 38) if (res == true) getCoordinate().then(res => { resolve(res); }) }); } }) }) } const iosPermision = (permisionStr) => { let result = permision.judgeIosPermission(permisionStr); if (!result) mShowModel("应用未获取位置信息授权,请到权限管理进行授权", "授权"); return result } const androidPermision = async (permisionStr) => { return new Promise((resolve, reject) => { let result = permision.requestAndroidPermission(permisionStr); // if (result == -1) mShowModel("您已拒绝获取位置信息授权,是否授权", "授权"); // if (result == 0) mShowModel("应用未获取位置信息授权,是否授权", "授权"); resolve(result); }) } const weiXinPermision = async (locationEnabled, locationAuthorized, callback) => { return new Promise((resolve, reject) => { if (locationEnabled == false) { // mShowModel("手机定位服务未开启,请到设置界面进行开启", ''); callback(); } else { // 手机定位服务(GPS)已授权 uni.authorize({ scope: "scope.userLocation", success: res => { console.log(res, 72); resolve(true); }, fail: err => { uni.showModal({ content: "需要授权位置信息", confirmText: "确认授权", success: res => { if (res.confirm) { uni.openSetting({success: res => { if (res.authSetting["scope.userLocation"]) { mShowToast("授权成功"); resolve(true); } else { mShowToast("授权失败,请重新授权") uni.showModal({ title: "授权", content: "获取授权失败,是否前往授权设置?", success: res => { console.log(res, 91); if (res.confirm) uni.openSetting(); }, fail: err => { mShowToast("系统错误") } }) } } }) } else { // mShowToast("你拒绝了授权,无法获取位置信息") callback(); } } }) }, // complete: res => { // console.log(res, 108); // if (res.errMsg == "authorize:ok") { // resolve(true); // } else { // uni.showModal({ // title: "授权", // content: "获取授权失败,是否前往授权设置?", // success: res => { // if (res.confirm) uni.openSetting(); // }, // fail: err => { // mShowToast("系统错误!") // } // }) // } // } }) } }) } const getCoordinate = async (options) => { // 获取坐标 return new Promise((resolve, reject) => { uni.getLocation({ type: "wgs84", success: (res) => { resolve({ lat: res.latitude, lng: res.longitude }); } }) }) } const mShowModel = (content, confirmText) => { console.log(content, confirmText) const params = {}; uni.showModal({ content: content, showCancel: !!confirmText, confirmText: confirmText || '取消', success: res => { if (res.confirm) { if (confirmText) { permision.gotoAppPermissionSetting(); } } else { } }, fail: (e) => { console.log(e); }, }) } const mShowToast = (message, options = {}) => { uni.showToast({ title: message || "提交成功!", icon: options.icon || "none" }) }