微信获取用户地理位置

开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置。弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作。

第三方在收到地理位置上报信息之后,只需要回复success表明收到即可,是不允许回复消息给粉丝的。

获取用户地理位置

用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,上报地理位置以推送XML数据包到开发者填写的URL来实现。

推送XML数据包示例:

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[LOCATION]]></Event>
<Latitude>23.137466</Latitude>
<Longitude>113.352425</Longitude>
<Precision>119.385040</Precision>
</xml>

参数说明:

参数说明
ToUserName开发者 微信号
FromUserName发送方帐号(一个OpenID)
CreateTime消息创建时间 (整型)
MsgType消息类型,event
Event事件类型,LOCATION
Latitude地理位置纬度
Longitude地理位置经度
Precision地理位置精度

文章转自微信公众平台https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140841



### 使用微信JSAPI获取用户地理位置 为了通过微信JSAPI获取用户地理位置,需遵循一系列步骤来配置并调用相应的接口。具体实现涉及几个重要环节。 #### 配置JS-SDK权限验证签名 在前端页面加载时,服务器端应先请求获得`access_token`[^1],随后利用此令牌换取`jsapi_ticket`[^2]。这两个参数对于生成有效的签名字符串至关重要,它们用于确保后续JavaScript API调用的安全性和合法性。 ```javascript wx.config({ debug: false, appId: '<?php echo $signPackage["appId"];?>', timestamp: <?php echo $signPackage["timestamp"]?>, nonceStr: '<?php echo $signPackage["nonceStr"]?>', signature: '<?php echo $signPackage["signature"]?>', jsApiList: ['getLocation'] }); ``` 上述代码片段展示了如何初始化微信JS-SDK环境,其中包含了必要的配置项如应用ID(`appId`)、时间戳(`timestamp`)以及随机串(`nonceStr`)等,并指定了计划使用的API列表,在这里仅启用了`getLocation`方法。 #### 获取地理坐标数据 完成前期准备工作之后,便可以安全地调用微信内置的`getLocation`函数来取得当前位置信息: ```javascript wx.ready(function(){ wx.getLocation({ type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gc📐📐📐这个地图类型'gc⚗️'gcj02' success: function(res){ var latitude = res.latitude; // 纬度 var longitude = res.longitude; // 经度 console.log('纬度:',latitude,'经度:',longitude); // 可在此处处理位置信息... }, cancel:function(){ alert('用户拒绝授权获取地理位置'); } }); }); // 错误处理机制 wx.error(function(res){ console.error("发生错误:" + JSON.stringify(res)); }); ``` 这段脚本会在成功接收到用户许可的情况下打印出经纬度数值;反之则会弹窗提示用户取消了操作。此外还定义了一个简单的异常捕捉器用来记录可能发生的任何问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值