import myAmapFun from "@/utils/initmap.js" import {showConfirm} from '@/utils/common' var __CFG = null; //系统参数 __CFG = __CFG || { 'lat': '', 'lng': '', 'address': '', 'city':'', "UxLocation": { "lng": "", "lat": "", "address": "", 'city':'', }, }; function setUxLocation(UxLocation){ UxLocation = UxLocation || {}; __CFG.lng = UxLocation.lng || ''; __CFG.lat = UxLocation.lat || ''; __CFG.address = UxLocation.address || UxLocation.addr || ''; __CFG.city = UxLocation.city || UxLocation.city || ''; __CFG.UxLocation = UxLocation; } //设置浏览器cookie function set_cookie(key, value, expire, path){ var keys = __CFG.C_PREFIX + key; path = path || '/'; var a = keys + "=" + value; if(typeof(expire) != 'undefined'){ var date = new Date(); expire = parseInt(expire,10); date.setTime(date.getTime() + expire*1000); a += "; expires="+date.toGMTString(); } a += ";path="+path; if(__CFG.C_DOMAIN){ a += ";domain="+__CFG.C_DOMAIN; } document.cookie = a; }; //删除浏览器cookie function remove_cookie(key){ if (!key) { return false; } else { var keys = __CFG.C_PREFIX + key; document.cookie = keys+"=;expires="+(new Date(0)).toGMTString(); } }; //获取浏览器cookie function get_cookie(key) { if (!key) { return false; } else { var keys = __CFG.C_PREFIX + key; var reg = new RegExp("(^| )" + keys + "=([^;]*)(;|\x24)"); var result = reg.exec(document.cookie); if (result) { return result[2] || ''; } return ''; } }; // 文件写入 function getFilePermissions(callback) { callback = typeof(callback) == 'function' ? callback : function(res) {}; var num=1; // #ifdef MP-WEIXIN // #endif // #ifdef APP-PLUS plus.android.requestPermissions( ['android.permission.WRITE_EXTERNAL_STORAGE', 'android.permission.READ_EXTERNAL_STORAGE',], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装 function(resultObj) { var result = 0; for (var i = 0; i < resultObj.granted.length; i++) { var grantedPermission = resultObj.granted[i]; console.log('已获取的权限:' + grantedPermission); result = 1 } for (var i = 0; i < resultObj.deniedPresent.length; i++) { var deniedPresentPermission = resultObj.deniedPresent[i]; console.log('拒绝本次申请的权限:' + deniedPresentPermission); result = 0 } for (var i = 0; i < resultObj.deniedAlways.length; i++) { var deniedAlwaysPermission = resultObj.deniedAlways[i]; console.log('永久拒绝申请的权限:' + deniedAlwaysPermission); result = -1 } // resolve(result); // 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限 if (result != 1) { showConfirm('您还未开启文件权限,是否去开启文件?').then(res => { if (res.confirm) { gotoAppPermissionSetting() callback(result) } }) }else{ callback(result) } }, function(error) { console.log('申请权限错误:' + error.code + " = " + error.message); // resolve({ // code: error.code, // message: error.message // }); } ); // #endif }; function getLocation(callback) { callback = typeof(callback) == 'function' ? callback : function(res) {}; var num=1; // #ifdef MP-WEIXIN uni.getSetting({ success(res) { if(res.authSetting['scope.userLocation'] != undefined){ if (res.authSetting['scope.userLocation']) { getLocationaddr(callback) // 已经授权,可以直接调用 getLocation 获取地理位置 } else { showConfirm('您还未开启定位,是否去开启定位?').then(cres => { if (cres.confirm) { uni.openSetting({ success(res2) { if (res2.authSetting['scope.userLocation']) { } } }); callback(-1) } }) }; }else{ var uxlocation = {"lng": "", "lat": "", "address": ""}; // var citynum=1; uni.getLocation({ type: 'gcj02', geocode: 'true', success: function(ares) { uxlocation.lat = ares.latitude; uxlocation.lng = res.longitude; myAmapFun.getRegeo({ success: function(data) { // citynum=0; uxlocation.address = data[0].name+data[0].desc||data[0].regeocodeData.formatted_address; uxlocation.city = data[0].regeocodeData.addressComponent.city; setUxLocation(uxlocation); // uni.hideLoading(); // console.log(uxlocation,23) callback(uxlocation); //成功回调 }, fail: function(info) { //失败回调 } }) // if(citynum==1){ // setUxLocation(uxlocation); // callback(uxlocation); // } }, fail: function(error) { uni.showToast({ icon: 'none', title: '定位失败' }) // #ifdef APP-PLUS // #endif }, complete: function(rs) { // console.log('complete:'+JSON.stringify(rs)) } }) } }, fail(err) { console.log(err) }, }) // #endif // #ifdef APP-PLUS let system = uni.getSystemInfoSync(); if(system.platform === "android"){ var context = plus.android.importClass("android.content.Context"); var locationManger = plus.android.importClass("android.location.LocationManager"); var main = plus.android.runtimeMainActivity(); var mainSvr = main.getSystemService(context.LOCATION_SERVICE); if(!mainSvr.isProviderEnabled(locationManger.GPS_PROVIDER)){ uni.showModal({ title:"提示", content:"请授权位置获取地址", showCancel:false, success() { if(!mainSvr.isProviderEnabled(locationManger.GPS_PROVIDER)){ 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); main.startActivity(intent); }else{ console.log("定位已开启") _self.setSite() } } }) }else{ plus.android.requestPermissions( ['android.permission.ACCESS_FINE_LOCATION'], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装 function(resultObj) { var result = 0; for (var i = 0; i < resultObj.granted.length; i++) { var grantedPermission = resultObj.granted[i]; console.log('已获取的权限:' + grantedPermission); result = 1 } for (var i = 0; i < resultObj.deniedPresent.length; i++) { var deniedPresentPermission = resultObj.deniedPresent[i]; console.log('拒绝本次申请的权限:' + deniedPresentPermission); result = 0 } for (var i = 0; i < resultObj.deniedAlways.length; i++) { var deniedAlwaysPermission = resultObj.deniedAlways[i]; console.log('永久拒绝申请的权限:' + deniedAlwaysPermission); result = -1 } // resolve(result); // 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限 if (result != 1) { showConfirm('您还未开启定位,是否去开启定位?').then(res => { if (res.confirm) { gotoAppPermissionSetting() callback(result) } }) }else{ getLocationaddr(callback) } }, function(error) { console.log('申请权限错误:' + error.code + " = " + error.message); // resolve({ // code: error.code, // message: error.message // }); } ); } } // #endif }; // 跳转到**应用**的权限页面 function gotoAppPermissionSetting() { var isIos // #ifdef APP-PLUS isIos = (plus.os.name == "iOS") // #endif if (isIos) { var UIApplication = plus.ios.import("UIApplication"); var application2 = UIApplication.sharedApplication(); var NSURL2 = plus.ios.import("NSURL"); // var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES"); var setting2 = NSURL2.URLWithString("app-settings:"); application2.openURL(setting2); plus.ios.deleteObject(setting2); plus.ios.deleteObject(NSURL2); plus.ios.deleteObject(application2); } else { var Intent = plus.android.importClass("android.content.Intent"); var Settings = plus.android.importClass("android.provider.Settings"); var Uri = plus.android.importClass("android.net.Uri"); var mainActivity = plus.android.runtimeMainActivity(); var intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); var uri = Uri.fromParts("package", mainActivity.getPackageName(), null); intent.setData(uri); mainActivity.startActivity(intent); } } function getLocationaddr(callback){ callback = typeof(callback) == 'function' ? callback : function(res) {}; var uxlocation = {"lng": "", "lat": "", "address": ""}; uni.getLocation({ type: 'gcj02', geocode: 'true', success: function(res) { uxlocation.lat = res.latitude; uxlocation.lng = res.longitude; myAmapFun.getRegeo({ success: function(data) { uxlocation.address = data[0].name+data[0].desc||data[0].regeocodeData.formatted_address; uxlocation.city = data[0].regeocodeData.addressComponent.city; setUxLocation(uxlocation); // uni.hideLoading(); // console.log(uxlocation,23) callback(uxlocation); //成功回调 }, fail: function(info) { //失败回调 console.log(info,223) } }) // if(citynum==1){ // setUxLocation(uxlocation); // callback(uxlocation); // } }, fail: function(error) { uni.showToast({ icon: 'none', title: '定位失败' }) // #ifdef APP-PLUS // #endif }, complete: function(rs) { // console.log('complete:'+JSON.stringify(rs)) } }) } const self = { getLocation, setUxLocation, getFilePermissions, __CFG } export default self