文章目录
前言
在针对小程序埋点时,需要获取到用户的位置,uniapp有自带获取位置的方法uni.getLocation
其中可以获取到经纬度,以及中文地址address
,但是中文地址仅APP端支持,小程序是用不了的。现在只能拿到经纬度,再通过经纬度逆地址解析,得到中文地址。
提示:以下是本篇文章正文内容,下面案例可供参考
一、获取经纬度
获取经纬度的方法有很多:
- uniapp可以通过uni.getLocation获取
- wx.getLocation获取
- 三方api/sdk获取
1,需要在app.json里面声明你所需要用的接口
在uniapp的
manifest.json
–源码视图
里面进行声明如果不声明是无法正常使用接口的,更多接口声明可以查看微信官方规则
"requiredPrivateInfos": [ "getLocation" ],
注意:如果小程序上线,需要提前申请开通使用接口的权限且只针对部分主体提供使用权限,否则审核不会通过 微信官方申请
2,注意保护用户的隐私,需要经过用户授权之后才可以获取用户位置,如果用户拒绝了也是无法获取到的。
在app.json里面配置获取用户定位权限的提示:
"permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" // 定位 } },
3,判断用户是否已经授权定位,如果没有授权则弹出获取定位权限的提示,可通过wx.getSetting
拿到用户的授权信息,没有授权弹出授权请求,用户可拒绝,若之前用户已经授权则不会弹出请求,直接返回success
wx.getSetting({success(res) {if (!res.authSetting['scope.userLocation']) {wx.authorize({scope: 'scope.userLocation',success() {// 用户已授权位置权限// 可以继续访问位置信息},fail() {// 用户拒绝了位置权限// 可以相应地处理拒绝情况console.log("用户拒绝了位置权限")},});} else {// 用户已经授权了位置权限// 可以继续访问位置信息console.log("用户已经授权了位置权限")}},});}
4,获取经纬度
通过wx.getLocation
拿到用户的经纬度
wx.getLocation({type: 'wgs84',success: function(res) {console.log('用户已授权位置权限,经纬度:' + res.longitude, res.latitude);},fail: function() {console.log("获取地理位置失败")}})
二、逆地址解析
小程序wx.getLocation只能获取经纬度, 这时候想要具体地址就需要借助第三方API(逆地址解析) 我这边第三方以腾讯位置服务举例
1.申请API Key
现在先注册腾讯地图,获取key
https://lbs.qq.com/dev/console/key/manage
2.使用WebService API
获取到api密钥之后就可以使用API了
wx.request({url: 'https://apis.map.qq.com/ws/geocoder/v1/',data: {location: `${latitude},${longitude}`,key: 'API_KEY',get_poi: 0,output: 'json'},success(res) {var address = res.data.result.address;},fail(error) {console.error('逆地理编码失败:', error);}});
该处使用的url网络请求的数据。接收参数经纬度
返回的res.data.result.address中就有解析出来的中文地址
来源地址:https://blog.csdn.net/m0_71621983/article/details/132210196