IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 小程序wx.onLocationChange向下兼容wx.getLocation -> 正文阅读

[移动开发]小程序wx.onLocationChange向下兼容wx.getLocation

由于wx.getLocation新版有了频率限制,好好的定位接口不能再频繁调用。只能用新版的wx.onLocationChange,但是新版的wx.onLocationChange必须在2.8.1以上才能使用。最后没办法只能做向下兼容在这里插入图片描述
首先判断当前微信的版本号,这里我用了当初判断ios机型的api来获取版本号,存储在全局里面

let capsuleObj = wx.getMenuButtonBoundingClientRect();
wx.getSystemInfo({
      success: (res) => {
           if(res.platform == "ios" || res.system.indexOf('iOS') > -1 || res.system.indexOf('macOS') > -1){
             this.globalData.isIos = true;
           }
           // console.log("==获取系统信息==");
           var statusBarHeight = res.statusBarHeight; //顶部状态栏高度
           this.globalData.headerHeight = statusBarHeight + capsuleObj.height + (capsuleObj.top - statusBarHeight) * 2;
           let version = res.SDKVersion; // 获取当前基础库版本号
           this.globalData.version = version.replace(/\./g, ""); //去除点转换为数字来比较大小 
       },
       fail() {
       }
   })

然后在获取定位的页面

 // 定时获取当前经纬度
    getlocation() {
        wx.getLocation({
            type: 'gcj02',
            success: res => {
                this.data.signInfo.signLongitude = res.longitude;
                this.data.signInfo.signLatitude = res.latitude;
            },
            fail: error => {
                wx.showModal({
                    title: '提示',
                    content: '定位失败,请检查是否授权定位',
                    showCancel: false,
                    success:res=> {
                        this.toSetting();
                    }
                })
            }
        })
        if (this.data.localTimer) {
            clearInterval(this.data.localTimer)
            this.data.localTimer = null;
        }
        if(app.globalData.version > 2160){
            // 如果当前微信版本库大于2.17.0调取新接口
            this.data.localTimer = setInterval(() => {
                this.getWxLocation() //等待
            }, 3000)
        }else {
        	// 低版本调取老接口
            this.data.localTimer = setInterval(() => {
                wx.getLocation({
                    type: 'gcj02',
                    success: res => {
                        this.data.signInfo.signLongitude = res.longitude;
                        this.data.signInfo.signLatitude = res.latitude;
                      
                    },
                    fail: error => {
                    }
                })
            }, 3000)
        }
    },
    // 新版获取定位
    getWxLocation() {
        let that = this;
        try {
            let _locationChangeFn = (res) => {
                that.data.signInfo.signLongitude = res.longitude;
                that.data.signInfo.signLatitude = res.latitude;
                wx.offLocationChange(_locationChangeFn) //只监听一次后关闭 
            }
            // 开启小程序进入前台时接收位置消息
            wx.startLocationUpdate({
                success: (res) => {
                	// 监听位置信息
                    wx.onLocationChange(_locationChangeFn)
                },
                fail: (err) => {}
            })
        } catch (error) {

        }
    },
    //设置去开启定位权限
    toSetting() {
        let self = this
        wx.openSetting({
            success(res) {
                if (res.authSetting["scope.userLocation"]) {
                    // res.authSetting["scope.userLocation"]为trueb表示用户已同意获得定位信息,此时调用getlocation可以拿到信息
                }
            }
        })
    },
    

最后别忘了在销毁页面时关闭定时器

  onUnload: function () {
        if (this.data.localTimer) {
            clearInterval(this.data.localTimer);
            this.data.localTimer = null;
        }
    },
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:17:18  更:2022-02-19 01:19:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:31:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码