ardyn/zipcode

此包最新版本(dev-master)没有提供许可证信息。

为您的项目提供的邮编数据库。

dev-master 2015-02-20 22:20 UTC

This package is not auto-updated.

Last update: 2024-10-02 06:58:14 UTC


README

使用此包将邮编转换为地理坐标,计算两个邮编之间的距离,找到距离纬度和经度点最近的邮编,以及返回半径内的邮编列表。

安装

通过composer安装,发布配置文件,使用新的artisan命令设置数据库,注册服务提供者和别名。

Composer

编辑您的composer.json文件

"require": {
  "ardyn/zipcode": "0.5"
}

运行composer update

发布配置文件

如果您想更改默认配置设置,运行php artisan config:publish ardyn/zipcode,然后修改app/config/packages/ardyn/zipcode/config.php的内容。

与Laravel集成

将以下内容添加到您的app/config.php文件中的providers数组

'Ardyn\Zipcode\ZipCodeServiceProvider'

aliases数组中添加别名

'Zipcode' => 'Ardyn\Zipcode\Facades\ZipCode'

数据库设置

要创建迁移,运行artisan zipcode:migrate source,其中source是一个带有列头的CSV文件。这将使用config.php文件中的数据创建迁移。您可以通过包含带有逗号[,]分隔的列来使用--columns选项提供额外的列。列名称必须与您的邮编数据源文件中的列头匹配。迁移将移动到在config.php文件中设置的迁移目录。

在迁移发布后,您可以使用artisan migrate运行迁移。

要填充数据库,调用artisan zipcode:seed source,其中source是用于迁移的相同CSV文件。默认情况下,仅填充zip_code、latitude和longitude列。要包含更多列,请使用columns选项。与迁移一样,列必须在数据源文件的列头中存在。

某些方法永久缓存。在更新数据库后,您可能需要清除缓存。

用法

用法非常简单。只需调用Zipcode::find($zipCode)即可返回一个ZipCode模型。

示例

// Finds the zip code and returns the ZipCodeEngine class
$zipCode = Zipcode::find('90210');

// Return a property of the zip code record
// These three methods are agnostic of your database column names
$zipCode->zipCode();
$zipCode->latitude();
$zipCode->longitude();

// Access any other column using its name
$zipCode->my_column;

// Calculate distance between two zip codes
Zipcode::distance($zipCode, '84102', "miles");

// Return all zip codes within $outerRadius and $innerRadius
Zipcode::radiusSearch($zip1, $zip2, $outerRadius, $innerRadius, "miles");

// Find nearest zip code
Zipcode::nearest($latitude, $longitude);

单位

在调用distance方法或radiusSearch方法时,您可以提供“miles”、“feet”、“kilometers”、“meters”、“radians”或“degrees”的“unit”参数。

扩展包

您可以通过编辑config.php文件来覆盖默认模型,使用自己的模型,该模型必须实现ardyn\Zipcode\Models\ZipCodeModelInterface。仓库也可以扩展。

要更改模型的primaryKey或表,只需编辑config.php文件即可,因为提供的ZipCodeRepository类将设置模型上的这些字段。

邮编数据源

/src/sample.csv中提供的邮编数据仅用于演示目的!要获取完整的邮编列表,请访问[http://greatdata.com/free-zip-code-database]获取免费数据库,或从[http://www.zip-codes.com/zip-code-database.asp]购买具有更精确WGS84坐标的数据库。

TODO

  • 重构这个玩意!
  • 语义化版本!
  • 对ZipCodeRepository进行单元测试
  • 对artisan命令进行单元测试
  • 更好的文档!
  • Find 应返回 StdClass 而不是 Eloquent Model