微信公众号最佳实践 ( 4.7)获取用户地理位置

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

本章代码还需测试

4.7.1 获取用户地理位置的方式

有两种:

  • 一种是仅在进入会话时上报一次
  • 一种是进入会话后每隔5秒上报一次

推送地理位置XML格式:

<xml>
    <ToUserName>
        < ![CDATA[toUser] ]>
    </ToUserName>
    <FromUserName>
        < ![CDATA[fromUser] ]>
    </FromUserName>
    <CreateTime>1351776360</CreateTime>
    <MsgType>
        < ![CDATA[location] ]>
    </MsgType>
    <Location_X>23.134521</Location_X>
    <Location_Y>113.358803</Location_Y>
    <Scale>20</Scale><Label>< ![CDATA[位置信息] ]></Label><MsgId>1234567890123456</MsgId>
</xml>

这里写图片描述

4.7.2 转换坐标到地址

目前国内外主要有以下几种不同形式的坐标体系:

  • WGS-84坐标系:是一种国际上采用的地心坐标系,目前GPS所采用的坐标系统
  • GCJ-0是由中国国家测绘局制定的地理信息系统的坐标系统:是一种对经纬度数据进行加密算法,即加入随机的偏差,也俗称“火星坐标系
  • 百度坐标系统是百度公司的地图坐标系统:它在国家测绘局的GJC-02的基础上,进行了BD-09二次加密,更加保护个人隐私。
微信公众号地理坐标接口支持上述三种坐标系的坐标

百度地图API 服务地址接口为:

http://api.map.baidu.com/geocoder/v2/

例如:

http://api.map.baidu.com/geocoder/v2/?ak=B944e1fce373e33ea4627f95f54f2ef9&location=$object->Latitude,$object->Longitude&output=json&coordtype=gcj02ll

执行后返回结果如下:
这里写图片描述

这里写图片描述

获取用户地理位置 示例代码如下:

4.7.3 用户地理位置的意义

  • 获得用户的地理位置能够帮助企业更加了解他们的用户
  • 根据位置数据能够了解用户在什么时候,什么地方有什么样的生活习惯,并且追踪群发事件的效果
  • 位置数据分析功能能够预测用户的行为,从而为公司的经营策越制定提供依据
  • 但这只是移动位置数据分析的冰山一角,以后可能也许能够知道用户在做什么,在想什么,以及更多。
<?php
private function receiveEvent($object)
{
    $contentStr = "";
    switch ($object->Event)
    {
        case "subscribe":
            $contentStr = "欢迎关注".(isset($object->EventKey)?("\n场景 ".$object->EventKey):"");
            break;
        case "unsubscribe":
            $contentStr = "取消关注";
            break;
        case "LOCATION":
            $url = "http://api.map.baidu.com/geocoder/v2/?ak=B944e1fce373e33ea4627f95f54f2ef9&location=$object->Latitude,$object->Longitude&output=json&coordtype=gcj02ll";
            $output = file_get_contents($url);
            $address = json_decode($output, true);
            $contentStr = "位置 ".$address["result"]["addressComponent"]["province"]." ".$address["result"]["addressComponent"]["city"]." ".$address["result"]["addressComponent"]["district"]." ".$address["result"]["addressComponent"]["street"];
            break;
        default:
            break;
    }
    $resultStr = $this->transmitText($object, $contentStr);
    return $resultStr;
}

?>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值