123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- let app = getApp();
- var QQMapWX = require("./qqmap-wx-jssdk.min.js");
- function checkGPS(t, fn=null) {
- wx.authorize({
- scope: "scope.userLocation",
- success: function () {
- console.log("get GPS success"), wx.getLocation({
- success: function (n) {
- console.log("get GPS location success"), app.globalData.location = {
- lat: n.latitude,
- lng: n.longitude
- }, app.globalData.canGetGPS = true, fn;
- wx.setStorage({
- key: "latitude",
- data: n.latitude
- })
- wx.setStorage({
- key: "longitude",
- data: n.longitude
- })
- },
- fail: function () {
- console.log("get GPS location fail"), app.globalData.canGetGPS = false, fn&&fn();
- }
- });
- },
- fail: function () {
- console.log("get GPS fail checkGPS"), app.globalData.canGetGPS = false, fn&&fn();
- }
- });
- }
- function openSetting(t) {
- return new Promise(function (resolve, reject) {
- wx.showModal({
- content: "为了更好的服务您,需要您的地理位置",
- confirmText: "去开启",
- confirmColor: "#FF673F",
- success: function(res1) {
- if(res1.confirm) {
- wx.openSetting({
- success: function(result) {
- console.log(result);
- if(result.authSetting["scope.userLocation"]){
- wx.getLocation({
- success: function(res) {
- console.log("get GPS location success");
- getApp().globalData.location = {
- lat: res.latitude,
- lng: res.longitude
- },
- getApp().globalData.canGetGPS = true;
- resolve(res);
- },
- fail: function (error) {
- console.log("get GPS fail openSetting");
- getApp().globalData.canGetGPS = false;
- reject('取消', error);
- }
- });
- } else {
- reject('未开启');
- }
- },
- fail: function(error) {
- reject(error);
- }
- });
- } else if(res1.cancel) {
- reject('用户点击取消');
- console.log('用户点击取消')
- }
- }
- });
- });
- }
- /**
- * 获取定位城市
- */
- function getGps() {
- let that = this;
- return new Promise(function (resolve, reject) {
- wx.getLocation({
- type: 'gcj02', //编码方式,
- success: function (res) {
- console.log("getGps-res", res);
- resolve(res);
- wx.setStorage({
- key: "latitude",
- data: res.latitude
- })
- wx.setStorage({
- key: "longitude",
- data: res.longitude
- })
- },
- fail: (error) => {
- console.log("getGps-error", error);
- if (error.errMsg == "getLocation:fail auth deny"){
- that.openSetting().then(function(res){
- console.log(res);
- // reject(res)
- }).catch(function(){
- console.log(error);
- reject(error);
- });
- } else {
- // reject(error);
- console.log(error);
- // reject(error);
- }
- }
- })
- })
- }
- /**
- * 通过GPS获取详细位置
- */
- function getGpsLocation(lat, lon) {
- var tx_map_key = wx.getStorageSync('tx_map_key');
- if (tx_map_key) {
- return new Promise(function (resolve, reject) {
- analyzeGps(tx_map_key, lat, lon).then((res)=>{
- resolve(res);
- });
- })
- } else {
- return new Promise(function (resolve, reject) {
- app.util.request({
- url: 'entry/wxapp/index',
- data: {
- controller: 'index.get_community_config'
- },
- dataType: 'json',
- success: function (res) {
- if (res.data.code == 0) {
- tx_map_key = res.data.tx_map_key;
- wx.setStorage({
- key: "tx_map_key",
- data: tx_map_key
- })
- analyzeGps(tx_map_key, lat, lon).then((res) => {
- resolve(res);
- });
- }
- }
- })
- })
- }
- }
- /**
- * 解析GPS
- */
- function analyzeGps(tx_map_key, lat, lon) {
- var demo = new QQMapWX({
- key: tx_map_key
- });
- return new Promise(function (resolve, reject) {
- demo.reverseGeocoder({
- //腾讯地图api 逆解析方法 首先设置经纬度
- location: {
- latitude: lat,
- longitude: lon
- }, //逆解析成功回调函数
- success: function (res) {
- console.log(res)
- let address_component = res.result.address_component || {};
- let address_reference = res.result.address_reference;
- address_component.town = address_reference.town&&address_reference.town.title || '';
- resolve(address_component);
- }
- })
- })
- }
- module.exports = {
- checkGPS,
- openSetting,
- getGps,
- getGpsLocation
- }
|