1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
| <script setup>
| import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
| import { wxLoginApi } from './api/index.js'
|
| //用户打开小程序默认授权
| function wxLogin(){
| // uni.removeStorageSync('openId');
| if(!uni.getStorageSync('openId')){
| wx.login({
| success:async (res1)=>{
| //存储微信登录的code
| uni.setStorageSync('code',res1.code)
| await wxLoginApi({code:res1.code}).then((res2) =>{
| uni.setStorageSync('openId',res2.data.userId)
| uni.setStorageSync('token',res2.data.token)
| })
| },
| fail:(e) =>{
| uni.showToast({
| title: '登录失败,请退出重试!',
| duration: 2000
| });
| console.log(e)
| }
| })
| }
| }
|
| //申请获取用户位置权限
| let userLocation = {
| lat:'',
| lon:'',
| }
| function getUserLocation(){
| // 请求用户授权,第一次进入会有位置授权的提示
| uni.authorize({
| scope: 'scope.userLocation',
| success() {
| console.log("成功授权位置信息1")
| storageLocation()
| },
| fail() {
| console.log("用户拒绝授权位置信息,再次提示用户授权")
| showToast()
| }
| })
| //获取用户位置并存储
| function storageLocation(){
| uni.getLocation({
| type:'gcj02',
| isHighAccuracy:true,
| success:(res) =>{
| userLocation.lat = res.latitude
| userLocation.lon = res.longitude
| uni.setStorageSync('userLocation',JSON.stringify(userLocation))
| },
| fail:() =>{
| showToast()
| }
| })
| }
| //用户拒绝授权
| function showToast(){
| uni.showModal({
| title: "请求授权当前位置",
| content: "我们需要获取地理位置信息,为您获取附近站点信息!",
| confirmText: "前往设置",
| success: (res) => {
| if (res.confirm) {
| uni.openSetting({
| success:(res1) =>{ //打开设置成功
| if (res1.authSetting['scope.userLocation']){
| console.log('用户二次授权成功')
| storageLocation()
| }else{
| showToast()
| console.log('用户拒绝授权')
| }
| },
| })
| }else{
| uni.showToast({
| title: '请先授权!',
| duration: 2000,
| icon:'none'
| });
| showToast()
| }
| },
| });
| }
| }
| onLaunch(async() => {
| await wxLogin()
| await getUserLocation()
| });
| onShow(() => {
| console.log("App Show");
| });
| onHide(() => {
| console.log("App Hide");
| });
| </script>
|
| <style lang='scss'>
| </style>
|
|