用户发送位置时的消息及格式如下

后台格式:
<xml> <ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FLACFromUserName> <CreateTime>1359036619</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>22.539968</Location_X> <Location_Y>113.954980</Location_Y> <Scale>16</Scale> <Label><![CDATA[中国广东省深圳市南山区华侨城深南大道9789号 邮政编码: 518057]]></Label> <MsgId>5837017832671832047</MsgId> </xml>
XML格式讲解
ToUserName 消息接收方微信号,一般为公众平台账号微信号 FromUserName 消息发送方微信号 CreateTime 消息创建时间 MsgType 消息类型,地理位置为location Location_X 地理位置纬度 Location_Y 地理位置经度 Scale 地图缩放大小 Label 地理位置信息 MsgId 消息ID号
二、获取周边区域信息
百度地图Place API 是一类简单的HTTP接口,用于返回查询某个区域的某类POI数据,且提供单个POI的详情查询服务,用户可以使用C#、C++、Java等开发语言发送HTTP请求且接收json、xml的数据。
Place API 提供区域检索POI服务、POI详情服务与团购信息检索服务、商家团购详情查询。区域检索POI服务提供三种区域检索方法:城市内检索、矩形检索、圆形区域检索。
我们使用圆形区域检索来实现附近搜索功能。
place区域检索POI服务接口如下:
http://api.map.baidu.com/place/v2/search
参数 | 是否必须 | 默认值 | 格式举例 | 含义 |
location | 是 | 无 | 38.76623,116.43213 | 周边检索中心点,不支持多个点 |
radius(r) | 否 | 无 | 2000 | 周边检索半径,单位为米 |
q(query) | 是 | 无 | 中关村、ATM、百度大厦 | 检索关键字,周边检索和矩形区域内检索支持多个关键字并集检索,不同关键字间以$符号分隔,最多支持10个关键字检索。如:”银行$酒店”。 |
tag | 否 | 无 | 日式烧烤/铁板烧、朝外大街 | 标签项,与q组合进行检索 |
output | 否 | xml | json或xml | 输出格式为json或者xml |
scope | 是 | 1 | 1、2 | 检索结果详细程度。取值为1 或空,则返回基本信息;取值为2,返回检索POI详细信息 |
filter | 否 | 无 | filter=industry_type:cater | 检索过滤条件,当scope取值为2时,可以设置filter进行排序。 |
page_size | 否 | 10 | 10 | 范围记录数量,默认为10条记录,最大返回20条。多关键字检索时,返回的记录数为关键字个数*page_size。 |
page_num | 否 | 0 | 0、1、2 | 分页页码,默认为0,0代表第一页,1代表第二页,以此类推。 |
ak | 是 | 无 | E4805d16520de693a3fe707cdc962045 | 用户的访问密钥,必填项。v2之前该属性为key。 |
sn | 否 | 无 |
| 用户的权限签名。 |
timestamp | 否 | 无 |
| 设置sn后该值必填。 |
调用举例如下:
http://api.map.baidu.com/place/v2/search?ak=MgBALVVeCd8THVBi6gPdvsvG&output=json&query=%E9%93%B6%E8%A1%8C&page_size=5&page_num=0&scope=2&location=39.915,116.404&radius=2000&filter=sort_name:distance
三、程序实现
百度地图类定义如下
class baiduMapClient
{
private $api_server_url;
private $auth_params;
public function __construct()
{
$this->api_server_url = "http://api.map.baidu.com/";
$this->auth_params = array();
$this->auth_params['key'] = "401f9a693dd267dd9a4661ec0895fb20";
$this->auth_params['output'] = "json";
}
public function Geocoding_coordinate_address($location)
{
return $this->call("geocoder", array("location" => $location));
}
//http://api.map.baidu.com/place/search?&query=眼镜&location=3

