\Swx\Geocoder\Geocoder
组件,用于支持 国内经纬度反解析出省市区乡镇数据。
训练库更新于2022-1-4号,共计约 4W
条数据,对省市区三等级行政区域解析率达100%
,对乡镇级解析率达90%
,1-3线城市成功率达100%
。
查询响应时间在0.02 MS
以内。
注意:该扩展包使用的经纬度坐标系为:百度BD-09坐标系,若为其他坐标系使用前请先自行转换。
提示:开源包中不包含乡镇级解析库数据,仅开源了省市区数据,若需要乡镇级解析库,可联系作者小黄牛进行获取。
警告:该扩展包不支持香港、台湾地区的经纬度反解析。
composer require swx/geocoder
运行环境:
支持的框架:
依赖类:\Swx\Geocoder\Geocoder
方法名:handle()
参数:
float $longitude
float $latitude
bool $suffix
false
返回值:false
或 array()
使用示例:
$obj = new \Swx\Geocoder\Geocoder();
// 返回 false表示解析失败,成功返回array
$obj->handle(118.321612, 35.810455, true)
返回结果:
array(8) {
["province"]=>
string(6) "山东"
["province_code"]=>
int(370000)
["city"]=>
string(6) "临沂"
["city_code"]=>
int(371300)
["area"]=>
string(9) "沂水县"
["area_code"]=>
int(371323)
["township"]=>
string(12) "崔家峪镇"
["township_code"]=>
int(371323107)
}
提示:township
数据不一定存在,若查询不到乡镇数据则该项数据为空
。
依赖类:\Swx\Geocoder\Geocoder
方法名:error()
参数:无
返回值:string
使用示例:
$obj = new \Swx\Geocoder\Geocoder();
$ret = $obj->handle(118.321612, 35.810455, true);
if ($ret === false) {
echo $obj->error();
}
当解析成功时,handle()
方法会返回解析结果,是一个一维的array
数据结构。
同时,该组件也支持使用访问成员属性的方式,对结果集中的某一个字段值进行获取。
使用示例:
$obj = new \Swx\BankCard\BankCard();
$ret = $obj->handle(118.321612, 35.810455, true);
// 打印整个结果集
var_dump($ret);
// 通过访问成员属性的方法,获得单个字段信息
var_dump($obj->province);
解析结果的数组内容结构如下:
字段名 | 说明 | 示例 |
---|---|---|
province | 省级名称 | 山东省 |
province_code | 升级区号 | 370000 |
city | 市级名称 | 临沂市 |
city_code | 市级区号 | 371300 |
area | 区级名称 | 沂水县 |
area_code | 区级区号 | 371323 |
township | 乡镇级名称 | 崔家峪镇 |
township_code | 乡镇级区号 | 371323107 |