当前位置:   article > 正文

微信小程序uniapp+vue获取用户的位置_uniapp小程序获取当前位置

uniapp小程序获取当前位置

一:在hbuilder中设置manifest.json中配置,或者微信开发者工具中app.json的配置

二、封装一个获取地理位置的工具函数(直接cv就好了)

  1. export function getLocationInf() {
  2. return new Promise((resolve, reject) => {
  3. const rejectGetLocation = () => {
  4. uni.showToast({
  5. title: '您拒绝了位置授权,小程序无法继续提供服务~',
  6. icon: 'none',
  7. duration: 3000
  8. })
  9. }
  10. const getLocation = () => {
  11. uni.getLocation({
  12. type: 'gcj02',
  13. success: (res) => {
  14. const {
  15. latitude,
  16. longitude
  17. } = res
  18. resolve({
  19. latitude,
  20. longitude
  21. })
  22. },
  23. fail: (err) => {
  24. reject('获取位置信息失败:' + JSON.stringify(err))
  25. }
  26. })
  27. }
  28. const openSetting = () => {
  29. uni.showModal({
  30. title: '提示',
  31. content: '我们需要获取您的位置信息,为您提供服务~',
  32. success: (res) => {
  33. if (res.confirm) {
  34. uni.openSetting({
  35. success: (res) => {
  36. if (res.authSetting['scope.userLocation'] === true) {
  37. getLocation()
  38. } else {
  39. rejectGetLocation()
  40. }
  41. },
  42. fail: (err) => {
  43. reject('小程序授权弹窗打开失败')
  44. }
  45. })
  46. } else if (res.cancel) {
  47. rejectGetLocation()
  48. }
  49. }
  50. })
  51. }
  52. const getAuthorize = (a = 'scope.userLocation') => {
  53. // uniapp弹窗弹出获取授权(地理,个人微信信息等授权信息)弹窗
  54. uni.authorize({
  55. scope: a,
  56. success: () => {
  57. getLocation()
  58. },
  59. fail: () => {
  60. openSetting()
  61. }
  62. })
  63. }
  64. // 小程序是否拥有访问定位信息的权限
  65. const isAuthorized = (a = 'scope.userLocation') => {
  66. // 检查当前是否已经授权访问scope属性
  67. uni.getSetting({
  68. success: (res) => {
  69. let userLocation = res.authSetting[a]
  70. if (!userLocation) {
  71. // 判断当前是否获得授权,如果没有就去申请授权
  72. getAuthorize()
  73. } else {
  74. getLocation()
  75. }
  76. },
  77. fail: (err) => {
  78. openSetting()
  79. }
  80. })
  81. }
  82. const openAppAuthorizeSetting = () => {
  83. uni.openAppAuthorizeSetting({
  84. success: (res) => {
  85. isAuthorized()
  86. },
  87. fail: (err) => {
  88. reject('打开系统微信授权管理页失败')
  89. }
  90. })
  91. }
  92. // 手机GPS定位已开启则判断微信APP是否已获取访问定位信息的权限
  93. const isAppAuthorized = () => {
  94. // 微信APP授权设置
  95. const appAuthorizeSetting = uni.getAppAuthorizeSetting()
  96. // 是否允许微信使用定位信息的开关
  97. let locationAuthorized = appAuthorizeSetting.locationAuthorized
  98. // 'authorized':表示用户已经允许应用程序使用定位服务。
  99. // 'denied':表示用户已经拒绝了应用程序使用定位服务的请求。
  100. // 'not determined':表示用户尚未做出是否允许应用程序使用定位服务的决定,这可能是因为用户还未收到相关的授权请求。
  101. // 'config error':表示定位服务配置错误,可能是由于应用程序的设置或环境配置问题导致的。
  102. switch (locationAuthorized) {
  103. case 'authorized':
  104. isAuthorized()
  105. break
  106. case 'denied':
  107. uni.showModal({
  108. title: '提示',
  109. content: '已拒绝微信获取定位权限,即将打开权限管理页面,请把定位权限设置为允许~',
  110. confirmText: '前往设置',
  111. success: (res) => {
  112. if (res.confirm) {
  113. openAppAuthorizeSetting()
  114. } else if (res.cancel) {
  115. rejectGetLocation()
  116. }
  117. }
  118. })
  119. break
  120. case 'not determined':
  121. uni.showModal({
  122. title: '提示',
  123. content: '请授权微信获取定位权限~',
  124. confirmText: '同意授权',
  125. success: (res) => {
  126. if (res.confirm) {
  127. openAppAuthorizeSetting()
  128. } else if (res.cancel) {
  129. rejectGetLocation()
  130. }
  131. }
  132. })
  133. break
  134. }
  135. }
  136. // 首先判断手机是否开启GPS
  137. const isLocationEnable = () => {
  138. //获取用户手机系统信息
  139. uni.getSystemInfo({
  140. success: (res) => {
  141. const locationEnabled = res.locationEnabled
  142. if (locationEnabled) {
  143. isAppAuthorized()
  144. } else {
  145. // 手机GPS定位未开启则引导用户手动前往开启
  146. uni.showModal({
  147. title: '提示',
  148. content: '小程序需要基于您的手机定位信息为您提供医院服务,当前检测到您的手机并未打开定位开关,请关闭小程序后前往 "设置 - 定位服务/位置信息" 开启手机定位,然后重新进入小程序~',
  149. showCancel: false,
  150. confirmText: '我已知悉'
  151. })
  152. }
  153. },
  154. fail: (err) => {
  155. reject('用户手机系统信息获取失败')
  156. }
  157. })
  158. }
  159. isLocationEnable()
  160. })
  161. }

 三、页面使用:(绑定在点击事件上)返回的是当前用户的经纬度

辛苦大家点个关注点个赞吧!

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/889403
推荐阅读
相关标签
  

闽ICP备14008679号