微信小程序获取当前位置(startLocationUpdate,onLocationChange,offLocationChange)

微信小程序获取当前位置
问题
之前一直使用wx.getLocation()方法来获取用户的定位,发现总是几率性成功,我们的调用频率是秒一次,其中在做其他业务时也会调用到,参考官方文档发现 位置文档这种方式受到了限制,微信限制30秒只有一次成功,其余返回失败。

解决方法
使用startLocationUpdate、onLocationChange、offLocationChange三个方法搭配使用,可以实现实时获取用户的位置,并且频繁调用不会失败。

封装工具类

//  地里信息位置获取工具类

/**
 * 获取用户当前所在的位置 【适应微信新版本获取地里位置信息,旧getLocation方法频繁调用有性能问题,并且30秒只能获得一次成功】 
 */

```bash
const getLocation = () => {
    return new Promise((resolve, reject) => {
        let _locationChangeFn = (res) => {
            resolve(res) // 回传地里位置信息
            wx.offLocationChange(_locationChangeFn) // 关闭实时定位
            wx.stopLocationUpdate(_locationChangeFn); // 关闭监听 不关闭监听的话,有时获取位置时会非常慢
        }
        wx.startLocationUpdate({
            success: (res) => {
                wx.onLocationChange(_locationChangeFn)
            },
            fail: (err) => {
                // 重新获取位置权限
                wx.openSetting({
                    success(res) {
                        res.authSetting = {
                            "scope.userLocation": true
                        }
                    }
                })
                reject(err)
            }
        })
    })
}

module.exports = {
    getLocation
}

调用



```bash
const locationUtils = require('../../../utils/location') // 引入工具类
// 获取当前位置
locationUtils.getLocation().then(res => {
		 console.log('当前所在位置的经纬度为:')
     console.log(res.latitude,res.longitude)
 })

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值