数据库 - Model 前置说明
官方开源项目 抓取代理IP

介绍

\Swx\Geocoder\Geocoder组件,用于支持 国内经纬度反解析出省市区乡镇数据。
训练库更新于2022-1-4号,共计约 4W 条数据,对省市区三等级行政区域解析率达100%,对乡镇级解析率达90%,1-3线城市成功率达100%
查询响应时间在0.02 MS以内。

注意:该扩展包使用的经纬度坐标系为:百度BD-09坐标系,若为其他坐标系使用前请先自行转换。

提示:开源包中不包含乡镇级解析库数据,仅开源了省市区数据,若需要乡镇级解析库,可联系作者小黄牛进行获取。

警告:该扩展包不支持香港台湾地区的经纬度反解析。

安装

composer require swx/geocoder

环境

运行环境:

  • PHP7.0+
  • Windows / Linux
  • Swoole / FPM

支持的框架:

  • SW-X
  • 常用的FPM框架,如:ThinkPHP

调用

依赖类:\Swx\Geocoder\Geocoder
方法名:handle()

参数:

  • float $longitude

    • 功能:国内经度
    • 默认值:无
  • float $latitude

    • 功能:国内纬度
    • 默认值:无
  • bool $suffix

    • 功能:返回时是否删除省市后缀
    • 默认值false

返回值:falsearray()

使用示例:

$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

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录