更新记录

1.0.0(2022-06-09) 下载此版本

  1. 新增 检测用户是否授权
  2. 新增 检测设置定位服务权限是否打开
  3. 优化 组件加载

0.0.1(2022-01-27) 下载此版本

版本上线


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

插件简绍

插件原理

对腾讯地图的前端定位组件进行二次封装。地图组件 | 腾讯位置服务 (qq.com)

使用环境

本插件只支持H5平台。因部分浏览器调用位置需要 https 环境,推荐大家还是把 https 环境配置上。

插件使用

插件已支持 uni_modules 支持组件easycom,以下代码演示的是普通使用

<!-- HTML -->
<mumu-getlocation ref='muLocation'></mumu-getlocation>
<button type="default" @click="getLocation">获取精准位置</button>
import mumuGetlocation from '@/uni_modules/mumu-getlocation/components/mumu-getlocation/mumu-getlocation.vue'
    export default {
        components: {
            mumuGetlocation
        },
    data() {
            return {
                locationRef: null, // 用于接收定位对象
            }
        },
    onLoad() {
      // 使用 $nextTic 等待组件加载完成调用
            this.$nextTick(() => {
        // 在检测用户是否开启定位权限需要一个过程,推荐使用 login 提示一下
                uni.showLoading({
                    title: '定位组件加载中...',
                    mask: true
                })
        // 初始化组件,并且检测是否开启与授权定位
                this.$refs.muLocation.__init().then(location => {
          // 用户授权了和开启了定位,把定位对象保存到 data 中
                    this.locationRef = location
                    uni.hideLoading()
                }, err => {
          // 用户拒绝了定位请求,获取系统没有开启定位功能
                    uni.hideLoading()
                    if (err.code === 1) {
                        uni.showModal({
                            title: '获取定位权限失败',
                            content: '你拒绝了位置授权服务。请允许当前页面获取定位授权,后刷新页面。'
                        })
                    } else {
                        uni.showModal({
                            title: '获取定位权限失败',
                            content: '请确定手机定位已打开,并且当前浏览器允许获取定位,都开启后请刷新页面。'
                        })
                    }
                })

            })
        },
    methods: {
            // 获取精准定位
            getLocation() {
                this.locationRef.getLocation() // 调用 getLocation 方法获取精准定位
                    .then(res => {
            // res 就是返回的数据
                        uni.showModal({
                            content:JSON.stringify(res, null, 4)
                        })
                    })
            },
        }
    }

相关 API

可传属性(Props)

组件内部方法(Event)

通过 refs 调用

方法 传参 说明 返回类型 返回数据
__init 初始化组件,检测用户是否开启定位权限 对象 定位对象,用于后续方法调用

定位对象属性

方法名 传参 说明 返回(return) 返回数据
getLocation() 获取精准定位 Promise 精准定位数据
getIpLocation() 获取ip定位 Promise 获取ip定位数据
watchPosition() function 持续监听定位 数据 持续监听定位数据
clearWatch() 关闭持续监听

案例演示

支持作者

支持作者

隐私、权限声明

1. 本插件需要申请的系统权限列表:

获取定位

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问