|
@@ -0,0 +1,620 @@
|
|
|
+import myAmapFun from "@/utils/initmap.js"
|
|
|
+var __CFG = null;
|
|
|
+//系统参数
|
|
|
+__CFG = __CFG || {
|
|
|
+ 'lat': '',
|
|
|
+ 'lng': '',
|
|
|
+ 'address': '',
|
|
|
+ 'city':'',
|
|
|
+ "UxLocation": {
|
|
|
+ "lng": "",
|
|
|
+ "lat": "",
|
|
|
+ "address": "",
|
|
|
+ 'city':'',
|
|
|
+ 'temperature':'',
|
|
|
+ 'weather':'',
|
|
|
+ 'icon':''
|
|
|
+ },
|
|
|
+ iconWeatherMap:[{tit:'风',val:'weaiona',children:['有风', '平静', '微风', '和风', '清风', '强风/劲风', '疾风', '大风', '烈风', '风暴', '狂爆风', '飓风', '热带风暴', '龙卷风']},
|
|
|
+ {tit:'多云',val:'weaionb',children:['少云','多云']},
|
|
|
+ {tit:'晴间多云',val:'weaionc',children:['晴间多云', ]},
|
|
|
+ {tit:'雪',val:'weaiond',children:['雪', '阵雪', '小雪', '中雪', '大雪', '暴雪', '小雪-中雪', '中雪-大雪', '大雪-暴雪', '冷']},
|
|
|
+ {tit:'雾',val:'weaione',children:['浮尘', '扬沙', '沙尘暴', '强沙尘暴', '雾', '浓雾', '强浓雾', '轻雾', '大雾', '特强浓雾']},
|
|
|
+ {tit:'晴',val:'weaionf',children:['晴', '热']},
|
|
|
+ {tit:'雨夹雪',val:'weaiong',children:['雨雪天气', '雨夹雪', '阵雨夹雪']},
|
|
|
+ {tit:'雨',val:'weaionh',children:['阵雨', '雷阵雨', '雷阵雨并伴有冰雹', '小雨', '中雨', '大雨', '暴雨', '大暴雨', '特大暴雨', '强阵雨', '强雷阵雨', '极端降雨', '毛毛雨/细雨', '雨', '小雨-中雨', '中雨-大雨', '大雨-暴雨', '暴雨-大暴雨', '大暴雨-特大暴雨', '冻雨']},
|
|
|
+ {tit:'阴',val:'weaioni',children:['阴','未知']},
|
|
|
+ {tit:'霾',val:'weaionj',children:['霾', '中度霾', '重度霾', '严重霾',]},
|
|
|
+ ],
|
|
|
+};
|
|
|
+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;
|
|
|
+}
|
|
|
+//判断是否微信
|
|
|
+function checkIsWeixin() {
|
|
|
+ if (/(micromessenger)/.test(navigator.userAgent.toLowerCase())) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+};
|
|
|
+//设置浏览器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 getLocations(callback) {
|
|
|
+ var uxlocation = {"lng": "", "lat": "", "address": ""};
|
|
|
+ callback = typeof(callback) == 'function' ? callback : function(res) {};
|
|
|
+ if (__CFG.lat == '' || __CFG.lng == '') {
|
|
|
+ // #ifndef H5
|
|
|
+ uni.showLoading({
|
|
|
+ title: '获取位置信息中'
|
|
|
+ })
|
|
|
+ uni.getLocation({
|
|
|
+ type: 'gcj02',
|
|
|
+ geocode: 'true',
|
|
|
+ success: function(res) {
|
|
|
+ uxlocation.lat = res.latitude;
|
|
|
+ uxlocation.lng = res.longitude;
|
|
|
+ myAmapFun.getRegeo({
|
|
|
+ success: function(data) {
|
|
|
+ // #ifdef APP-PLUS
|
|
|
+ /* var latlng = {
|
|
|
+ "lat": res.latitude,
|
|
|
+ "lng": res.longitude
|
|
|
+ }
|
|
|
+ plugins.appLnglat(latlng); */
|
|
|
+ // #endif
|
|
|
+ console.log('getRegeo', data);
|
|
|
+ uxlocation.address = data[0].name;
|
|
|
+ setUxLocation(uxlocation);
|
|
|
+ uni.hideLoading();
|
|
|
+ //成功回调
|
|
|
+ },
|
|
|
+ fail: function(info) {
|
|
|
+ //失败回调
|
|
|
+ // console.log(info)
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/addr/selectReceive'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ setUxLocation(uxlocation);
|
|
|
+ callback();
|
|
|
+ },
|
|
|
+
|
|
|
+ fail: function(error) {
|
|
|
+ if (count <= 1) {
|
|
|
+ uni.showToast({
|
|
|
+ icon: 'none',
|
|
|
+ title: '定位失败'
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ // #ifdef APP-PLUS
|
|
|
+ // plus.nativeUI.alert(JSON.stringify(error))
|
|
|
+ // #endif
|
|
|
+
|
|
|
+ //callback();
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/addr/selectReceive'
|
|
|
+ })
|
|
|
+ },
|
|
|
+ complete: function(rs) {
|
|
|
+ console.log('complete:'+JSON.stringify(rs))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // #endif
|
|
|
+
|
|
|
+ // #ifdef H5
|
|
|
+ var selat = '', selng = '', seaddress = '';
|
|
|
+ if(sessionStorage.getItem('UxLocation')){
|
|
|
+ var uxl = JSON.parse(sessionStorage.getItem('UxLocation'));
|
|
|
+ selat = uxl.lat || '';
|
|
|
+ selng = uxl.lng || '';
|
|
|
+ seaddress = uxl.addr || '';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (selat && selng){
|
|
|
+ uxlocation.lng = selng;
|
|
|
+ uxlocation.lat = selat;
|
|
|
+ uxlocation.address = seaddress;
|
|
|
+ setUxLocation(uxlocation);
|
|
|
+ callback();
|
|
|
+ }else{
|
|
|
+ if(checkIsWeixin()){
|
|
|
+ getLocal(function(){
|
|
|
+ callback();
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ setTimeout(function (){
|
|
|
+ AMap.plugin('AMap.Geolocation', function() {
|
|
|
+ var geolocation = new AMap.Geolocation({
|
|
|
+ enableHighAccuracy: false, // 是否使用高精度定位,默认:true
|
|
|
+ timeout: 10000, // 设置定位超时时间,默认:无穷大
|
|
|
+ // showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
|
|
|
+ // showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
|
|
|
+ // panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
|
|
|
+ // zoomToAccuracy:true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
|
|
|
+ extensions:'all' // 返回周边POI、道路交叉口等信息
|
|
|
+ });
|
|
|
+ geolocation.getCurrentPosition()
|
|
|
+ AMap.event.addListener(geolocation, 'complete', onComplete)
|
|
|
+ AMap.event.addListener(geolocation, 'error', onError)
|
|
|
+ function onComplete (data) {
|
|
|
+ console.log('onComplete:',data);
|
|
|
+ var uaddress = '';
|
|
|
+ if(data.pois && data.pois.length > 0){
|
|
|
+ uaddress = data.pois[0].name;
|
|
|
+ }else if(data.formattedAddress){
|
|
|
+ uaddress = data.formattedAddress;
|
|
|
+ }else if( data.addressComponent){
|
|
|
+ uaddress = data.addressComponent.city + data.addressComponent.district
|
|
|
+ }
|
|
|
+
|
|
|
+ uxlocation.lng = data.position.lng || '';
|
|
|
+ uxlocation.lat = data.position.lat || '';
|
|
|
+ uxlocation.address = uaddress;
|
|
|
+ setUxLocation(uxlocation);
|
|
|
+ callback();
|
|
|
+ };
|
|
|
+ function onError (data) {
|
|
|
+ // 定位出错
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/addr/selectReceive'
|
|
|
+ })
|
|
|
+ };
|
|
|
+ })
|
|
|
+ }, 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // #endif
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+function getGeocoder(lng, lat, callback) {
|
|
|
+ callback = typeof(callback) == 'function' ? callback : function(res) {};
|
|
|
+ AMap.plugin('AMap.Geocoder', function() {
|
|
|
+ var geocoder = new AMap.Geocoder({
|
|
|
+ // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
|
|
|
+ city: '全国',
|
|
|
+ extensions: 'all'
|
|
|
+ })
|
|
|
+
|
|
|
+ var lnglat = [lng, lat];
|
|
|
+
|
|
|
+ geocoder.getAddress(lnglat, function(status, result) {
|
|
|
+ console.log(status,result)
|
|
|
+ if (status === 'complete' && result.info === 'OK') {
|
|
|
+ // result为对应的地理位置详细信息
|
|
|
+ let items = result.regeocode.pois;
|
|
|
+ if(items.length > 0){
|
|
|
+ var pos = {};
|
|
|
+ for (let i in items) {
|
|
|
+ var obj = {
|
|
|
+ "name": items[i].name,
|
|
|
+ "addr": items[i].address,
|
|
|
+ "lng": items[i].location.lng,
|
|
|
+ "lat": items[i].location.lat
|
|
|
+ };
|
|
|
+ if(i == '0'){
|
|
|
+ pos = obj;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ callback(pos);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+};
|
|
|
+
|
|
|
+//初始化sdk配置
|
|
|
+function initJssdk(callback ,url){
|
|
|
+ callback = typeof(callback) == 'function' ? callback : function(res) {};
|
|
|
+ //服务端进行签名 ,可使用uni.request替换。 签名算法请看文档
|
|
|
+ http('client/app/get_wechat',{url:url},function(res){
|
|
|
+ if(res.data){
|
|
|
+ jweixin.config({
|
|
|
+ debug: false,
|
|
|
+ appId: res.data.wxjs_config.appId,
|
|
|
+ timestamp:res.data.wxjs_config.timestamp,
|
|
|
+ nonceStr: res.data.wxjs_config.nonceStr,
|
|
|
+ signature:res.data.wxjs_config.signature,
|
|
|
+ jsApiList: ['checkJsAPi','getLocation','onMenuShareAppMessage','onMenuShareTimeline','onMenuShareQQ','onMenuShareQZone','onMenuShareWeibo','updateAppMessageShareData','updateTimelineShareData','chooseWXPay']
|
|
|
+ });
|
|
|
+ //配置完成后,再执行分享等功能
|
|
|
+ if(callback){
|
|
|
+ callback(res.data.wxjs_config);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },true);
|
|
|
+};
|
|
|
+
|
|
|
+// 定位当前位置
|
|
|
+function getLocal(callback){
|
|
|
+ callback = typeof(callback) == 'function' ? callback : function(res) {};
|
|
|
+ var urls = window.location.href;
|
|
|
+ initJssdk(function(signData){
|
|
|
+ uni.showLoading({
|
|
|
+ title: '微信定位中...'
|
|
|
+ })
|
|
|
+ var uxlocation = {"lng": "", "lat": "", "address": ""};
|
|
|
+ jweixin.ready(function () {
|
|
|
+ jweixin.getLocation({
|
|
|
+ type: 'gcj02',
|
|
|
+ success: function (res) {
|
|
|
+ uxlocation.lng = res.longitude || '';
|
|
|
+ uxlocation.lat = res.latitude || '';
|
|
|
+ setUxLocation(uxlocation);
|
|
|
+ AMap.plugin('AMap.Geocoder', function() {
|
|
|
+ var geocoder = new AMap.Geocoder({extensions:'all'});
|
|
|
+ AMap.event.addListener(geocoder, 'error', error)
|
|
|
+ var lnglat = [Number(res.longitude), Number(res.latitude)]
|
|
|
+ geocoder.getAddress(lnglat, function(status, result) {
|
|
|
+ if (status === 'complete' && result.info === 'OK') {
|
|
|
+ console.log('complete:',result);
|
|
|
+ uni.hideLoading();
|
|
|
+ // result为对应的地理位置详细信息
|
|
|
+ var addr = '';
|
|
|
+ if(result.regeocode.pois && result.regeocode.pois.length > 0){
|
|
|
+ addr = result.regeocode.pois[0].name;
|
|
|
+ }else if(result.regeocode.formattedAddress){
|
|
|
+ addr = result.regeocode.formattedAddress;
|
|
|
+ }else{
|
|
|
+ addr = result.regeocode.addressComponent.city + result.regeocode.addressComponent.district
|
|
|
+ }
|
|
|
+ uxlocation.address = addr;
|
|
|
+ setUxLocation(uxlocation);
|
|
|
+ callback();
|
|
|
+ }else{
|
|
|
+ uni.hideLoading();
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ function error(res){
|
|
|
+ // getGeoLocation(res.longitude,res.latitude);
|
|
|
+ alert('地址信息解析失败');
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ fail: function (res) {
|
|
|
+ uni.hideLoading();
|
|
|
+ alert('微信获取位置失败');
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/addr/selectReceive'
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ cancel: function (res) {
|
|
|
+ uni.hideLoading();
|
|
|
+ alert('用户拒绝获取位置');
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/addr/selectReceive'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },urls)
|
|
|
+};
|
|
|
+
|
|
|
+function getLocation(callback) {
|
|
|
+
|
|
|
+ callback = typeof(callback) == 'function' ? callback : function(res) {};
|
|
|
+ var num=1;
|
|
|
+ // #ifdef H5
|
|
|
+ getLocationaddr(callback)
|
|
|
+ // #endif
|
|
|
+ // #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);
|
|
|
+ callback(uxlocation);
|
|
|
+ //成功回调
|
|
|
+ },
|
|
|
+ fail: function(info) {
|
|
|
+ //失败回调
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 获取天气
|
|
|
+ // myAmapFun.getWeather({
|
|
|
+ // success(res){
|
|
|
+ // //temperature 温度
|
|
|
+ // //weather 天气现象
|
|
|
+ // uxlocation.city = res.city.data;
|
|
|
+ // uxlocation.temperature = res.temperature.data;
|
|
|
+ // uxlocation.weather = res.weather.data;
|
|
|
+ // var weather=res.weather.data;
|
|
|
+ // var weatherMap=__CFG.iconWeatherMap;
|
|
|
+ // var url=require('@/static/images/weather/weaionf.png');
|
|
|
+ // Object.keys(weatherMap).some((key) => {
|
|
|
+ // if (weatherMap[key].children.indexOf(weather)!=-1) {
|
|
|
+ // url=require(`@/static/images/weather/${weatherMap[key].val}.png`)
|
|
|
+ // return true;
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // uxlocation.icon = url;
|
|
|
+ // setUxLocation(uxlocation);
|
|
|
+ // callback(uxlocation);
|
|
|
+ // },
|
|
|
+ // fail(err){
|
|
|
+ // console.log('fail')
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // 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);
|
|
|
+ callback(uxlocation);
|
|
|
+ },
|
|
|
+ fail: function(info) {
|
|
|
+ //失败回调
|
|
|
+ console.log(info,223)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 获取天气
|
|
|
+ // myAmapFun.getWeather({
|
|
|
+ // success(res){
|
|
|
+ // //temperature 温度
|
|
|
+ // //weather 天气现象
|
|
|
+ // uxlocation.city = res.city.data;
|
|
|
+ // uxlocation.temperature = res.temperature.data;
|
|
|
+ // uxlocation.weather = res.weather.data;
|
|
|
+ // var weather=res.weather.data;
|
|
|
+ // var weatherMap=__CFG.iconWeatherMap;
|
|
|
+ // var url=require('@/static/images/weather/weaionf.png');
|
|
|
+ // Object.keys(weatherMap).some((key) => {
|
|
|
+ // if (weatherMap[key].children.indexOf(weather)!=-1) {
|
|
|
+ // url=require(`@/static/images/weather/${weatherMap[key].val}.png`)
|
|
|
+ // return true;
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // uxlocation.icon = url;
|
|
|
+ // setUxLocation(uxlocation);
|
|
|
+ // callback(uxlocation);
|
|
|
+ // },
|
|
|
+ // fail(err){
|
|
|
+ // console.log('fail')
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ },
|
|
|
+
|
|
|
+ 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,
|
|
|
+ __CFG
|
|
|
+}
|
|
|
+export default self
|