版权声明:版权归qq175023117所有 https://blog.csdn.net/qq175023117/article/details/85070396
本次使用的高德地图web服务端api中的逆地理编码
逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。
例如:116.480881,39.989410 转换地址描述后:北京市朝阳区阜通东大街6号
逆地理编码API服务地址
https://restapi.amap.com/v3/geocode/regeo?parameters
parameters代表的参数包括必填参数和可选参数。所有参数均使用和号字符(&)进行分隔。下面的列表枚举了这些参数及其使用规则。
location(116.310003,39.991957) 是所需要转换的坐标点经纬度,radius(1000)为返回的附近POI的范围,单位:米,extensions(all)为返回的数据内容,output(XML)用于指定返回数据的格式,Key 是高德Web服务 Key。详细可以参考上方的请求参数说明。
第一步,申请Web服务API类型Key;
第二步,参考接口参数文档发起HTTP/HTTPS请求,第一步申请的 Key 需作为必填参数一同发送;
第三步,接收请求返回的数据(JSON或XML格式),参考返回参数文档解析数据。
如无特殊声明,接口的输入参数和输出数据编码全部统一为 UTF-8 编码方式。
本次DEMO在laravel框架中实现(其他框架均可用相同方式实现)
/**
* 根据经纬度获取地理位置-高德地图
* @param string $lon 经度
* @param string $lat 纬度
* @return array
*/
public function regeo($lon, $lat)
{
// Key 是高德Web服务 Key。详细可以参考上方的请求参数说明。
$key = config('app.amap_key');
// location(116.310003,39.991957) 是所需要转换的坐标点经纬度,经度在前,纬度在后,经纬度间以“,”分割
$location = $lon . "," . $lat;
/**
* url:https://restapi.amap.com/v3/geocode/regeo?output=xml&location=116.310003,39.991957&key=<用户的key>&radius=1000&extensions=all
* radius(1000)为返回的附近POI的范围,单位:米
* extensions 参数默认取值是 base,也就是返回基本地址信息
* extensions 参数取值为 all 时会返回基本地址信息、附近 POI 内容、道路信息以及道路交叉口信息。
* output(XML/JSON)用于指定返回数据的格式
*/
$url = "https://restapi.amap.com/v3/geocode/regeo?output=JSON&location={$location}&key={$key}&radius=1000&extensions=base";
// 执行请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
$result = json_decode($data, true);
return $result;
}
需要传递经纬度来获取当前的地理位置,详细见代码注释
如还有问题,具体api文档见:https://lbs.amap.com/api/webservice/guide/api/georegeo/