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

需求:

从手工填写的地址中,解析出省市区信息

方法

使用百度地图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',
);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值