资讯专栏INFORMATION COLUMN

从地址字符串获取省市区信息

MartinHan / 1916人阅读

摘要:需求从手工填写的地址中,解析出省市区信息方法使用百度地图正逆地理编码虽然百度地图提供地点检索,但是是需要传入行政区信息的根据正地理编码服务接口将地址转换为经纬度,然后根据经纬度调用逆地理编码服务接口,得到结构化的行政区信息代码你的百度地图返

需求:
从手工填写的地址中,解析出省市区信息
方法
使用百度地图api
正/逆地理编码
PS: 虽然百度地图提供地点检索,但是是需要传入行政区信息的

根据 正地理编码服务 接口 将地址转换为经纬度,然后根据经纬度调用 逆地理编码服务 接口,得到结构化的行政区信息

代码
define("BAIDU_MAP_AK", "你的百度地图AK");
function parse_address($string){
    try{
        $url = "http://api.map.baidu.com/geocoder/v2/";
        $params = [
            "address" => $string,
            "output" => "json",
            "ak" => BAIDU_MAP_AK,
        ];
        $url .= "?" . http_build_query($params);
        $json = json_decode(file_get_contents($url), true);
        if($loc = @$json["result"]["location"]){
            if(!is_null($loc)){
                $url = "http://api.map.baidu.com/geocoder/v2/";
                $params = [
                    "location" => "{$loc["lat"]},{$loc["lng"]}",
                    "output" => "json",
                    "ak" => BAIDU_MAP_AK,
                ];
                $url .= "?" . http_build_query($params);
                $json = json_decode(file_get_contents($url), true);
                return @$json["result"]["addressComponent"];
            }
        }
        return null;
    }catch(Exception $e){
        return null;
    }
}

//返回结果
array (
  "country" => "中国",
  "country_code" => 0,
  "country_code_iso" => "CHN",
  "country_code_iso2" => "CN",
  "province" => "福建省",
  "city" => "厦门市",
  "city_level" => 2,
  "district" => "XX区",
  "town" => "",
  "adcode" => "350206",
  "street" => "XX路",
  "street_number" => "26",
  "direction" => "附近",
  "distance" => "33",
);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30116.html

相关文章

  • vue项目中使用element-ui下拉框选项值为对象时报错

    摘要:在做后台管理时,使用了搭配,请求方法使用了插件,在使用下拉框时,因为我需要获取选中的选项中的其他值,因此需要传入对象。 在做后台管理时,使用了vue搭配elementUI,请求方法使用了axios插件,在使用下拉框时,因为我需要获取选中的选项中的其他值,因此需要传入对象。对select下拉框的文档没有读的很仔细,百度过几篇文章,也没有理解他们表达的意思,然后自己又去看文档,把他的属性看...

    Drummor 评论0 收藏0
  • 深入浅出 LVS 负载均衡系列(一):NAT、FULLNAT 模型原理

    摘要:本系列按照负载均衡器对数据包的处理方式分类,从计算机间通信的角度出发,浅谈模型的实现原理。将请求分摊给多台服务器的行为,就称之为负载均衡。真实服务器返回的数据包的下一个目的地必须是负载均衡器。LVS(Linux Virtual Server)是一个虚拟服务器集群系统。工作在 OSI 模型的传输层,即四层负载均衡。LVS 本身实现了 NAT、DR、TUN 模型,这些模型仅做数据包的转发,而不会...

    Tecode 评论0 收藏0
  • 深入浅出 LVS 负载均衡系列(一):NAT、FULLNAT 模型原理

    摘要:本系列按照负载均衡器对数据包的处理方式分类,从计算机间通信的角度出发,浅谈模型的实现原理。将请求分摊给多台服务器的行为,就称之为负载均衡。真实服务器返回的数据包的下一个目的地必须是负载均衡器。LVS(Linux Virtual Server)是一个虚拟服务器集群系统。工作在 OSI 模型的传输层,即四层负载均衡。LVS 本身实现了 NAT、DR、TUN 模型,这些模型仅做数据包的转发,而不会...

    Tecode 评论0 收藏0
  • 深入浅出 LVS 负载均衡系列(一):NAT、FULLNAT 模型原理

    摘要:本系列按照负载均衡器对数据包的处理方式分类,从计算机间通信的角度出发,浅谈模型的实现原理。将请求分摊给多台服务器的行为,就称之为负载均衡。真实服务器返回的数据包的下一个目的地必须是负载均衡器。LVS(Linux Virtual Server)是一个虚拟服务器集群系统。工作在 OSI 模型的传输层,即四层负载均衡。LVS 本身实现了 NAT、DR、TUN 模型,这些模型仅做数据包的转发,而不会...

    Tecode 评论0 收藏0
  • 深入浅出 LVS 负载均衡系列(一):NAT、FULLNAT 模型原理

    摘要:本系列按照负载均衡器对数据包的处理方式分类,从计算机间通信的角度出发,浅谈模型的实现原理。将请求分摊给多台服务器的行为,就称之为负载均衡。真实服务器返回的数据包的下一个目的地必须是负载均衡器。LVS(Linux Virtual Server)是一个虚拟服务器集群系统。工作在 OSI 模型的传输层,即四层负载均衡。LVS 本身实现了 NAT、DR、TUN 模型,这些模型仅做数据包的转发,而不会...

    Tecode 评论0 收藏0

发表评论

0条评论

MartinHan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<