当前位置:   article > 正文

uniapp 获取定位授权并调用接口的封装

uniapp 获取定位授权并调用接口的封装

一、新建public.js文件

common目录下新建一个public.js文件,完整代码如下

  1. export function getLocationInfo(a = "scope.userLocation") {
  2. // 获取定位授权
  3. function getAuthorizeInfo() {
  4. return new Promise((resolve, reject) => {
  5. uni.authorize({
  6. scope: a,
  7. success() {
  8. resolve();
  9. },
  10. fail() {
  11. reject();
  12. }
  13. });
  14. });
  15. }
  16. // 查看是否已经授权定位
  17. function isGetLocation() {
  18. return new Promise((resolve, reject) => {
  19. console.log('查看是否已经授权定位')
  20. // #ifdef MP
  21. uni.getSetting({
  22. success(res) {
  23. if (!res.authSetting[a]) {
  24. console.log('没有授权,获取授权')
  25. // 没有授权,获取授权
  26. getAuthorizeInfo().then(() => {
  27. resolve();
  28. }).catch(() => {
  29. reject();
  30. });
  31. } else {
  32. console.log('已授权,获取地理位置信息')
  33. // 已授权,获取地理位置信息
  34. uni.getLocation({
  35. type: 'wgs84', //返回可以用于uni.openLocation的经纬度
  36. geocode: true,
  37. success: (res) => {
  38. // 成功获取地理位置信息后调用接口
  39. callApi(res).then(() => {
  40. resolve(res);
  41. }).catch(() => {
  42. reject();
  43. });
  44. },
  45. fail: () => {
  46. reject();
  47. }
  48. });
  49. }
  50. }
  51. });
  52. // #endif
  53. });
  54. }
  55. // 调用查看是否已经授权定位,获取地理位置信息
  56. return isGetLocation();
  57. }
  58. // 调用接口的方法
  59. function callApi(locationInfo) {
  60. return new Promise((resolve, reject) => {
  61. // 调用接口
  62. // TODO: 在此处添加您的接口调用代码
  63. });
  64. }
  65. //一定要声明暴露函数,可以被引用
  66. module.exports = {
  67. getLocationInfo
  68. }

二、挂载到全局

  1. //main.js
  2. import wsRequest from "@/common/public.js"
  3. //挂载到全局
  4. Vue.prototype.$public=$public

三、在页面中调用

this.$public.getLocationInfo()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/548559
推荐阅读