1.官方文档说明
上报地理位置事件
成员同意上报地理位置后,每次在进入应用会话时都会上报一次地理位置,或在进入应用会话后每5秒上报一次地理位置。企业可以在管理端修改应用的以上设置。上报地理位置时,微信会将此事件推送到企业应用在管理端设置的URL(以下假设该URL为http://api.3dept.com)。
- 请求说明
Http请求方式: POST
http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323
- 参数说明
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[LOCATION]]></Event> <Latitude>23.104105</Latitude> <Longitude>113.320107</Longitude> <Precision>65.000000</Precision> <AgentID>1</AgentID> </xml>
参数 | 说明 |
---|---|
ToUserName | 企业号CorpID |
FromUserName | 成员UserID |
CreateTime | 消息创建时间(整型) |
MsgType | 消息类型,此时固定为:event |
Event | 事件类型,此时固定为:LOCATION |
Latitude | 地理位置纬度 |
Longitude | 地理位置经度 |
Precision | 地理位置精度 |
AgentID | 企业应用的id,整型。可在应用的设置页面查看 |
管理中心的回调模式中有个上报地理位置设置:
可以选择进入应用上报一次,或者5秒钟上报一次。
2.处理
解析xml然后读取地理位置,存入数据库中,方便下次调用(我试了放入httpsession中,可是下次并不能取到。。。)
<span style="white-space:pre"> </span>Map<String, String> requestMap = MessageUtil.parseXml(sMsg);
String fromUserName = requestMap.get("FromUserName");
String toUserName = requestMap.get("ToUserName");
String msgType = requestMap.get("MsgType");
if (requestMap.get("Latitude")!=null) {
X=requestMap.get("Latitude");
Y=requestMap.get("Longitude");
System.out.println("------------------维度:"+X+"经度:"+Y+"-------------");
}
这里X Y就是所需要的维度和经度
3.作用
可以用维度和经度获取城市代号,调用天气Api,也可以用来监测企业员工的位置,今天你有没有迟到或者早退啊