PHP实现高德地图的地理/逆地理编码api

栏目: PHP · 发布时间: 5年前

内容简介:如果geoip获取地理位置可以满足你的需求可跳转:地理编码/逆地理编码 API 是通过 HTTP/HTTPS 协议访问远程服务的接口,提供结构化地址与经纬度之间的相互转化的能力。结构化地址的定义: 首先,地址肯定是一串字符,内含国家、省份、城市、区县、城镇、乡村、街道、门牌号码、屋邨、大厦等建筑物名称。按照由大区域名称到小区域名称组合在一起的字符。一个有效的地址应该是独一无二的。注意:针对大陆、港、澳地区的地理编码转换时可以将国家信息选择性的忽略,但省、市、城镇等级别的地址构成是不能忽略的。

本次使用的高德地图web服务端api中的逆地理编码

如果geoip获取地理位置可以满足你的需求可跳转: juejin.im/post/5d0c7e…

产品介绍

地理编码/逆地理编码 API 是通过 HTTP/HTTPS 协议访问远程服务的接口,提供结构化地址与经纬度之间的相互转化的能力。

结构化地址的定义: 首先,地址肯定是一串字符,内含国家、省份、城市、区县、城镇、乡村、街道、门牌号码、屋邨、大厦等建筑物名称。按照由大区域名称到小区域名称组合在一起的字符。一个有效的地址应该是独一无二的。注意:针对大陆、港、澳地区的地理编码转换时可以将国家信息选择性的忽略,但省、市、城镇等级别的地址构成是不能忽略的。

适用场景

  • 地理编码:将详细的结构化地址转换为高德经纬度坐标。且支持对地标性名胜景区、建筑物名称解析为高德经纬度坐标。
    结构化地址举例:北京市朝阳区阜通东大街6号转换后经纬度:116.480881,39.989410
    地标性建筑举例:天安门转换后经纬度:116.397499,39.908722
  • 逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。
    例如:116.480881,39.989410 转换地址描述后:北京市朝阳区阜通东大街6号

使用说明

第一步, 申请Web服务API类型Key

第二步,参考接口参数文档发起HTTP/HTTPS请求,第一步申请的 Key 需作为必填参数一同发送;

第三步,接收请求返回的数据(JSON或XML格式),参考返回参数文档解析数据。

如无特殊声明,接口的输入参数和输出数据编码全部统一为 UTF-8 编码方式。

parameters

代表的参数包括必填参数和可选参数。所有参数均使用和号字符(&)进行分隔。

逆地理编码API服务地址

https://restapi.amap.com/v3/geocode/geo?parameters复制代码

address 是需要获取坐标的结构化地址,output(XML)用于指定返回数据的格式,Key是用户请求数据的身份标识。

city为指定查询的城市(为可选参数)

逆地理编码API服务地址

https://restapi.amap.com/v3/geocode/regeo?parameters复制代码

location(116.310003,39.991957) 是所需要转换的坐标点经纬度,radius(1000)为返回的附近POI的范围,单位:米,extensions(all)为返回的数据内容,output(XML)用于指定返回数据的格式,Key 是高德Web服务 Key。

PHP实现高德地图的地理/逆地理编码api

本次DEMO在 laravel 框架中实现(其他框架均可用相同方式实现)

/**
     * 将详细的结构化地址转换为高德经纬度坐标-高德地图-地理编码
     * @param string $address 填写结构化地址信息:省份+城市+区县+城镇+乡村+街道+门牌号码
     * @param string $city 查询城市,可选:城市中文、中文全拼、citycode、adcode
     * @return array
     */
    public function geo($address = '', $city = '北京')
    {
        $key = config('app.amap_key');
        /**
         * url:https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=<用户的key>
         * output(XML/JSON)用于指定返回数据的格式
         */
        $url = "https://restapi.amap.com/v3/geocode/geo?output=JSON&key={$key}&address={$address}&city={$city}";

        // 执行请求
        $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;
    }

    /**
     * 根据经纬度获取地理位置-高德地图-逆地理编码
     * @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;
    }复制代码

需要传递经纬度来获取当前的地理位置,详细见代码注释

PHP实现高德地图的地理/逆地理编码api

PHP实现高德地图的地理/逆地理编码api

PHP实现高德地图的地理/逆地理编码api

PHP实现高德地图的地理/逆地理编码api

如还有问题,具体api文档见: lbs.amap.com/api/webserv…

纯原创,希望可以对大家有帮助,文章会不断更新,如有疑问,欢迎评论


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

互联网的误读

互联网的误读

詹姆斯•柯兰(James Curran)、娜塔莉•芬顿(Natalie Fenton)、德 斯•弗里德曼(Des Freedman) / 何道宽 / 中国人民大学出版社 / 2014-7-1 / 45.00

互联网的发展蔚为壮观。如今,全球的互联网用户达到20亿之众,约占世界人口的30%。这无疑是一个新的现象,对于当代各国的经济、政治和社会生活意义重大。有关互联网的大量大众读物和学术著作鼓吹其潜力将从根本上被重新认识,这在20世纪90年代中期一片唱好时表现尤甚,那时许多论者都对互联网敬畏三分,惊叹有加。虽然敬畏和惊叹可能已成过去,然而它背后的技术中心主义——相信技术决定结果——却阴魂不散,与之伴生的则......一起来看看 《互联网的误读》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换