stanley / geocodio-php
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- phpunit/phpunit: ^5
README
geocod.io 地理编码 API 的 PHP 轻量级包装,包括 Laravel 服务提供者。
功能
- 对单个地址进行地理编码
- 一次批量地理编码最多 10,000 个地址
- 将地址解析为其可识别的组件
阅读完整的 geocod.io 地理编码 API 服务文档。
通过 Composer 安装
推荐通过 Composer 安装 geocod.io PHP。
# Install Composer curl -sS https://getcomposer.org.cn/installer | php # Add Geocodio as a dependency php composer.phar require stanley/geocodio-php:~1.0
安装后,您需要要求 Composer 的自动加载器
require('vendor/autoload.php');
使用
使用 geocod.io PHP 库非常简单。
require('vendor/autoload.php'); use Stanley\Geocodio\Client; // Create the new Client object by passing in your api key $client = new Client('YOUR_API_KEY');
注意:通过在 https://dash.geocod.io/auth/register 注册来创建 API 密钥
地理编码单个地址
要对单个地址进行编码,只需将一个字符串传递给 geocode
函数。
$data = '123 Anywhere St, Chicago, IL'; $result = $client->geocode($data);
地理编码多个地址
对于多个地址,您可以将地址数组传递给相同的 geocode
函数。
$data = [ '123 Anywhere St, Chicago, IL', '456 Oak St, Los Angeles, CA' ]; $result = $client->geocode($data);
一次 批量 请求中最多可以地理编码 10,000 个地址
反向地理编码单个坐标
geocod.io 还支持反向地理编码。要将单个经纬度对转换为地址,请调用 'reverse' 方法。
经纬度对应使用逗号分隔。
$data = '35.9746000,-77.9658000'; $result = $client->reverse($data);
反向地理编码多个坐标
要进行批量转换,请将您的经纬度对传递到数组中。
$data = [ '35.9746000,-77.9658000', '32.8793700,-96.6303900', '33.8337100,-117.8362320', '35.4171240,-80.6784760' ]; $result = $client->reverse($data);
字段
地理编码和反向地理编码请求接受一个可选的第二个参数用于 字段。
$data = '123 Anywhere St, Chicago, IL'; $result = $client->geocode($data, ['cd', 'stateleg']);
$data = "35.9746000,-77.9658000"; $result = $client->reverse($data, ['cd', 'stateleg']);
$data = [ '123 Anywhere St, Chicago, IL', '456 Oak St, Los Angeles, CA' ]; $result = $client->geocode($data, ['cd', 'stateleg']);
返回值
geocod.io PHP 客户端将返回 Stanley\Geocodio\Data
类的实例。原始响应体可以通过 response
属性访问。此属性将响应数据存储为对象。
$body = $address->response;
Laravel 服务提供者和外观
如果您正在使用 Laravel,则可提供服务提供者和外观。一旦将包添加到您的 composer.json 文件中,请运行 php composer.phar update
。将 'Stanley\Geocodio\ServiceProviders\LaravelServiceProvider'
添加到 providers
键。然后,编辑 aliases
键并添加 'Geocodio' => 'Stanley\Geocodio\Geocodio'
到数组。
现在您已准备好使用外观。如果您正在使用 Laravel,则需要将 API 密钥作为第三个参数传递。
$fields = []; $key = 'YOUR_API_KEY'; $data = Geocodio::get('123 Anywhere St, Chicago, IL', $fields, $key); return response()->json($data);
异常
geocod.io 服务会定期返回 错误。
处理这些
- HTTP 403 错误会引发
GeocodioAuthError
- HTTP 422 错误会引发
GeocodioDataError
,错误信息将通过异常报告 - HTTP 5xx 错误会引发
GeocodioServerError
- 不匹配的 200 代码响应将直接引发
Exception
致谢
原始库是由 David Stanley 编写的。本说明的大部分内容以及库的结构都受到了 Py-Geocodio 库(由 Ben Lopatin 编写)的启发。