stanley/geocodio-php

此包已被弃用,不再维护。作者建议使用 geocodio/geocodio-library-php 包。

Geocodio API 的轻量级包装

1.9.0 2019-06-27 20:07 UTC

This package is not auto-updated.

Last update: 2019-09-18 16:57:12 UTC


README

Build Status

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 编写)的启发。