在php项目中,当我们需要根据经纬度坐标获取对应的详细地址时,腾讯位置服务的逆地理编码接口是非常合适的选择,该接口支持全球范围的地址解析,返回信息包含国家、省份、城市、区县、街道等详细内容。

前期准备工作
在使用接口之前,需要先完成腾讯位置服务的账号注册和接口申请,具体步骤如下:
- 访问腾讯位置服务官网,注册并登录开发者账号
- 进入控制台创建应用,选择对应的应用类型
- 为应用添加逆地理编码接口权限,获取专属的接口密钥key
逆地理编码接口参数说明
腾讯位置服务逆地理编码接口的核心请求参数如下:
| 参数名 | 是否必填 | 参数说明 |
|---|---|---|
| location | 是 | 经纬度坐标,格式为纬度,经度,例如39.984154,116.307490 |
| key | 是 | 申请到的接口密钥 |
| get_poi | 否 | 是否返回周边POI信息,1为返回,0为不返回,默认0 |
| poi_options | 否 | POI相关配置,比如设置返回POI的数量等 |
php实现逆地理编码的完整代码
下面是通过php发送HTTP请求调用逆地理编码接口,并解析返回结果的完整示例代码:
<?php
/**
* php调用腾讯位置服务逆地理编码获取详细地址
* @param string $latitude 纬度
* @param string $longitude 经度
* @param string $key 腾讯位置服务接口密钥
* @return array 解析后的地址信息
*/
function getAddressByLocation($latitude, $longitude, $key) {
// 拼接请求地址
$location = $latitude . ',' . $longitude;
$apiUrl = "https://apis.map.qq.com/ws/geocoder/v1/?location={$location}&key={$key}";
// 初始化curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 发送请求获取返回结果
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if (!empty($error)) {
return ['status' => 0, 'msg' => '请求接口失败:' . $error];
}
// 解析json结果
$result = json_decode($response, true);
if ($result['status'] != 0) {
return ['status' => 0, 'msg' => '接口返回错误:' . $result['message']];
}
// 提取详细地址信息
$addressInfo = $result['result']['address_component'];
$detailAddress = $result['result']['formatted_addresses']['recommend'];
return [
'status' => 1,
'msg' => '获取成功',
'data' => [
'province' => $addressInfo['province'], // 省份
'city' => $addressInfo['city'], // 城市
'district' => $addressInfo['district'], // 区县
'street' => $addressInfo['street'], // 街道
'detail_address' => $detailAddress // 完整推荐地址
]
];
}
// 使用示例
$latitude = '39.984154'; // 纬度
$longitude = '116.307490'; // 经度
$key = '你的腾讯位置服务密钥'; // 替换为自己的密钥
$res = getAddressByLocation($latitude, $longitude, $key);
print_r($res);
?>
注意事项
使用接口时需要注意以下几点:
- 接口的
key需要妥善保管,避免泄露造成不必要的流量消耗 - 经纬度参数的格式必须是纬度在前,经度在后,顺序错误会导致返回结果不准确
- 接口有调用频率限制,如果业务量较大需要提前申请更高的配额
- 返回的结果中如果某些字段为空,说明对应区域没有该层级地址信息,需要做兼容处理
常见问题排查
如果调用接口返回错误,可以按照以下思路排查:
首先检查密钥是否正确,是否添加了逆地理编码接口的权限;其次检查经纬度格式是否符合要求,是否有多余的空格或者符号;最后检查请求地址是否正确,是否存在网络访问限制。
如果按照上述步骤操作,就可以在php项目中顺利调用腾讯位置服务的逆地理编码接口,获取对应的详细地址信息,满足业务中的地址解析需求。