123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- var api = require('../config/api.js');
- var area = require('./area.js');
- var util = require('./util.js');
- var QQMapWX = require('./qqmap-wx-jssdk.min.js');
- var qqmapsdk;
- var app = getApp();
- function getCity() {
- return new Promise(function (resolve, reject) {
- qqmapsdk = new QQMapWX({
- key: app.globalData.mapKey //这里自己的key秘钥进行填充
- });
- uni.getSetting({
- success: (res) => {
- console.log(JSON.stringify(res));
- // res.authSetting['scope.userLocation'] == undefined 表示 初始化进入该页面
- // res.authSetting['scope.userLocation'] == false 表示 非初始化进入该页面,且未授权
- // res.authSetting['scope.userLocation'] == true 表示 地理位置授权
- if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
- uni.showModal({
- title: '请求授权当前位置',
- content: '需要获取您的地理位置,请确认授权',
- success: function (res) {
- if (res.cancel) {
- reject(1);
- } else if (res.confirm) {
- uni.openSetting({
- success: function (dataAu) {
- if (dataAu.authSetting['scope.userLocation'] == true) {
- uni.showToast({
- title: '授权成功',
- icon: 'success',
- duration: 1000
- });
- //再次授权,调用wx.getLocation的API
- getLocation()
- .then((res) => {
- resolve(res);
- })
- .catch((res) => {
- reject(res);
- });
- } else {
- reject(1);
- }
- }
- });
- }
- }
- });
- } else {
- //调用wx.getLocation的API
- getLocation()
- .then((res) => {
- resolve(res);
- })
- .catch((res) => {
- reject(res);
- });
- }
- }
- });
- });
- }
- // 微信获得经纬度
- function getLocation() {
- return new Promise(function (resolve, reject) {
- uni.getLocation({
- type: 'wgs84',
- success: function (res) {
- var latitude = res.latitude;
- var longitude = res.longitude;
- console.info(res);
- qqmapsdk.reverseGeocoder({
- location: {
- latitude: latitude,
- longitude: longitude
- },
- success: function (res) {
- ////reject内容 1:未授权(拿默认城市的默认门店) 2:非业务城市 不在服务范围(拿默认城市的默认门店) 3:异常解析()
- let province = res.result.ad_info.province;
- let city = res.result.ad_info.city;
- let address = res.result.address;
- console.info(city);
- if (!area.isBusinessCity(city)) {
- //非业务城市
- reject(2);
- } else {
- //判断是否有门店服务
- // util.request(api.OrderBookGetShop,{lng:longitude,lat:latitude}).then(res=>{
- // if(res.errno==0){
- var addressInfo = {
- address: address,
- lng: longitude,
- lat: latitude,
- shopId: '',
- city: city,
- shopName: ''
- //shopName:res.data.shopName
- };
- uni.setStorageSync('addressInfo', addressInfo);
- resolve(addressInfo);
- // }
- // else
- // reject(3)
- // }).catch(res=>{
- // reject(3)
- // })
- }
- console.info(res);
- },
- fail: function (res) {
- reject(3);
- }
- });
- },
- fail: function (res) {
- console.log('fail' + JSON.stringify(res));
- reject(3);
- }
- });
- });
- }
- //判断用户是否拒绝地理位置信息授权,拒绝的话重新请求授权
- function getUserLocation() {
- let that = this;
- uni.getSetting({
- success: (res) => {
- console.log(JSON.stringify(res));
- // res.authSetting['scope.userLocation'] == undefined 表示 初始化进入该页面
- // res.authSetting['scope.userLocation'] == false 表示 非初始化进入该页面,且未授权
- // res.authSetting['scope.userLocation'] == true 表示 地理位置授权
- if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
- uni.showModal({
- title: '请求授权当前位置',
- content: '需要获取您的地理位置,请确认授权',
- success: function (res) {
- if (res.cancel) {
- uni.showToast({
- title: '拒绝授权',
- icon: 'none',
- duration: 1000
- });
- } else if (res.confirm) {
- uni.openSetting({
- success: function (dataAu) {
- if (dataAu.authSetting['scope.userLocation'] == true) {
- uni.showToast({
- title: '授权成功',
- icon: 'success',
- duration: 1000
- });
- //再次授权,调用wx.getLocation2的API
- that.getLocation2();
- } else {
- uni.showToast({
- title: '授权失败',
- icon: 'none',
- duration: 1000
- });
- }
- }
- });
- }
- }
- });
- } else if (res.authSetting['scope.userLocation'] == undefined) {
- //调用wx.getLocation2的API
- that.getLocation2();
- } else {
- //调用wx.getLocation2的API
- that.getLocation2();
- }
- }
- });
- }
- // 获取定位当前位置的经纬度
- // function getLocation2() {
- // let that = this;
- // wx.getLocation({
- // type: 'wgs84',
- // success: function (res) {
- // let latitude = res.latitude
- // let longitude = res.longitude
- // // app.globalData.lat = res.latitude;//
- // // app.globalData.lng = res.longitude;//把onload定位时候的经纬度存到全局
- // console.log(res);
- // that.getLocal(latitude, longitude)
- // },
- // fail: function (res) {
- // console.log('fail' + JSON.stringify(res))
- // }
- // })
- // }
- // 获取定位当前位置的经纬度
- function getLocation2() {
- return new Promise(function (resolve, reject) {
- uni.getLocation({
- type: 'wgs84',
- success: function (res) {
- console.info(res);
- app.globalData.lat = res.latitude; //
- app.globalData.lng = res.longitude; //把onload定位时候的经纬度存到全局
- app.globalData.currentLocationName = res.city;
- app.globalData.city = res.city;
- resolve(true);
- },
- fail: function (res) {
- console.log('fail' + JSON.stringify(res));
- reject(false);
- }
- });
- });
- }
- // 获取当前地理位置
- function getLocal(latitude, longitude) {
- let that = this;
- qqmapsdk = new QQMapWX({
- key: app.globalData.mapKey //这里自己的key秘钥进行填充
- });
- qqmapsdk.reverseGeocoder({
- location: {
- latitude: latitude,
- longitude: longitude
- },
- success: function (res) {
- console.log(res);
- // let province = res.result.ad_info.province
- // let city = res.result.ad_info.city
- // let district = res.result.ad_info.district;
- // // 保存一下当前定位的位置留着后面重新定位的时候搜索附近地址用
- // app.globalData.currentLocation = district;
- app.globalData.currentLocationName = res.result.address;
- // that.setData({
- // province: province,
- // city: city,
- // latitude: latitude,
- // longitude: longitude,
- // district: district
- // })
- },
- fail: function (res) {
- console.log(res);
- },
- complete: function (res) {
- // console.log(res);
- }
- });
- }
- module.exports = {
- getCity: getCity,
- getLocation: getLocation,
- getUserLocation: getUserLocation,
- getLocation2: getLocation2,
- getLocal: getLocal
- };
|