123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- // #ifdef APP-PLUS
- import permision from "./wa-permission/permission.js"
- // #endif
- class Gps {
- constructor(arg) {
- this.lock = false //锁防止重复请求
- }
- async getLocation(param = {
- type: 'wgs84'
- }) {
- return new Promise(async (callback) => {
- if (this.lock) {
- // console.log('已锁,已有另一个请求正在执行。无需重复请求');
- callback(false);
- return false
- }
- this.lock = true //加锁防止重复的请求
- uni.getLocation({
- ...param,
- success: res => {
- this.lock = false //成功后解锁
- //console.log(res);
- callback(res)
- },
- fail: async (err) => {
- uni.showToast({
- title: '定位获取失败',
- icon: 'none'
- });
- console.error(err)
- callback(false)
-
- // #ifdef APP-PLUS
- await this.checkGpsIsOpen()
- // #endif
-
-
- // #ifdef MP-WEIXIN
- if (err.errMsg == 'getLocation:fail auth deny') {
- uni.showModal({
- content: '应用无定位权限',
- confirmText: '前往设置',
- complete: (e) => {
- if (e.confirm) {
- uni.openSetting({
- success(res) {
- console.log(res.authSetting)
- }
- });
- }
- this.lock = false //解锁让回到界面重新获取
- }
- });
- }
- if (err.errMsg == 'getLocation:fail:ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF') {
- uni.showModal({
- content: '未开启定位权限,请前往手机系统设置中开启',
- showCancel: false,
- confirmText:"知道了"
- });
- }
- // #endif
- }
- });
- })
- }
- // #ifdef APP-PLUS
- async checkGpsIsOpen() {
- this.lock = true //加锁防止重复的请求
- console.log('检查定位设置开启问题', permision.checkSystemEnableLocation());
- if (!permision.checkSystemEnableLocation()) {
- plus.nativeUI.confirm("手机定位权限没有开启,是否去开启?", (e) => {
- this.lock = false
- if (e.index == 0) {
- if (uni.getSystemInfoSync().platform == "ios") {
- plus.runtime.openURL("app-settings://");
- } else {
- var main = plus.android.runtimeMainActivity(); //获取activity
- var Intent = plus.android.importClass('android.content.Intent');
- var Settings = plus.android.importClass('android.provider.Settings');
- var intent = new Intent(Settings
- .ACTION_LOCATION_SOURCE_SETTINGS); //可设置表中所有Action字段
- main.startActivity(intent);
- }
- } else {
- uni.showToast({
- title: '设备无定位权限',
- icon: 'none'
- });
- callback(false)
- }
- }, {
- "buttons": ["去设置", "不开启"],
- "verticalAlign": "center"
- });
- return false
- }
- let checkAppGpsRes = await this.checkAppGps()
- console.log(checkAppGpsRes, 'checkAppGpsRes');
- if (!checkAppGpsRes) {
- plus.nativeUI.confirm("应用定位权限没有开启,是否去开启?", (e) => {
- this.lock = false
- if (e.index == 0) {
- permision.gotoAppPermissionSetting()
- callback(false)
- } else {
- uni.showToast({
- title: '应用无定位权限',
- icon: 'none'
- });
- return false
- }
- }, {
- "buttons": ["去设置", "不开启"],
- "verticalAlign": "center"
- });
- } else {
- this.lock = false
- }
- }
- async checkAppGps() {
- if (uni.getSystemInfoSync().platform == "ios" && !permision.judgeIosPermission("location")) {
- return false
- }
- if (uni.getSystemInfoSync().platform != "ios" && await permision.requestAndroidPermission(
- "android.permission.ACCESS_FINE_LOCATION") != 1) {
- return false
- }
- return true
- }
- // #endif
- }
- export default Gps
|