dlin/geocoder

PHP 库用于 Google/Bing 地理编码

0.9.3 2013-10-03 12:42 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:17:31 UTC


README

1. 简介

这是一个使用 Google Map API 和/或 Microsoft Bing Map API 的 PHP 地理编码库。

目标是使使用 Google Map API 和/或 Bing Map API 进行地理编码变得简单。该库提供了两种方法,正向反向,用于正向地理编码反向地理编码

正向地理编码是指将给定地址格式中的位置转换为最接近的已知坐标的过程。地址可以是国家、县、城市、州、邮政编码、街道地址或这些地址的组合。

反向地理编码与正向地理编码相反。它接受提供的坐标(纬度和经度)并提供地址格式中最接近该点的已知位置。

此库接受多个 Google 账户和/或 Bing 账户配置,以避免因过度使用 API 而引起的问题。如果多次调用,则轮换使用账户,并在脚本中的后续调用中使用其他账户。账户之间也会互相备份。如果一个账户失败,其他账户将用作备份以完成任务。

2. 安装

使用 composer,将以下内容添加到 composer.json 中

{
    require: {
        "dlin/geocoder": "dev-master"
    }
}

3. 使用

此库类,以下称为 Dlin 地理编码器,具有一个非常简单的接口,仅包含两个方法。一个用于正向地理编码,另一个用于反向地理编码

构造函数

地理编码器类的构造函数接受一个配置数组作为参数。请参阅配置部分以获取详细信息。

$config = array();
$config['my google']['vendor'] = 'google';
$config['my google']['weight'] = 2; //greater the weight, higher the priority 
$config['my bing']['vendor'] = 'bing';
$config['my bing']['key'] = 'Your_Bing_account_key';
$config['my bing']['weight'] = 1;

$coder = new Geocoder(config);

正向地理编码

$address = $coder->forward("1 Queen Street, Melbourne, Vic, AU");

反向地理编码

$address = $coder->reverse("-33.86687", "151.19565");

返回值(地址对象)

上述两个方法的返回值是一个 Dlin/Geocoder/Address DTO 对象


$address = $coder->reverse("-33.86687", "151.19565");
print_r($address); 

/* ========= out put ============

Dlin\Geocoder\GeoAddress Object
(
    [addressLine1] => 48 Pirrama Rd
    [addressLine2] => 
    [suburb] => Pyrmont
    [state] => NSW
    [postcode] => 2009
    [country] => Australia
    [latitude] => -33.86687
    [longitude] => 151.19565
    [partial] => 
    [formattedAddress] => 5/48 Pirrama Road, Pyrmont NSW 2009, Australia
    [geoCoding] => my bing
)

========= end out put ============ */

大多数字段都是不言自明的,partial字段表示是否为近似值(对于反向方法始终为 false),geoCoding字段显示使用的 Google/Bing 账户。

如果地址无法解析(例如,无效地址),则返回值将为null

4. 配置

地理编码器库的构造函数接受一个账户配置数组,或者一个指向.ini配置文件的文件路径。

配置数组

传递给构造函数的配置数组必须采用以下形式

$config['account nick name'] = array('vendor'=>'[google or bing]', 'weight'=>[weight], 'key'=>'account key', 'client'=>'google client id' );


  • 您可以为每个账户提供一个昵称,如果该账户用于地理编码,它将被设置为返回地址对象的geoCoding字段;

  • 'vendor'字段可以是'google'或'bing',目前只支持这两个供应商

  • 'weight'字段设置账户的优先级,优先级更高的账户将被首先使用,但是,如果在同一脚本中还有其他账户,则将依次使用其他账户。

  • 'key'字段是 Bing 账户的密钥或 Google 账户的私有/秘密密钥

  • 'client'字段是 Google 账户的客户端 ID

配置文件

库还可以接受 .ini 文件作为配置。配置文件中的字段与上述配置数组的定义相对应。以下是一个示例

; This is a sample configuration file
; Comments start with ';'



;[Provider 1]
;vendor = google
;client = your_google_client_id
;key = your_private_key
;weight = 1;

[Provider2]
vendor = google
weight = 19

[Provider3]
vendor = bing
key = AvwNOuwxCZESwB9_p_RAHncR-oypS6UTsc5_g9u4Ejyt32G59_kKnvTSG3ySE3Q8
weight = 14

[Provider4]
vendor = bing
key = ApUmGCPD3VPcMRjlZUjVz1ZruPHhlZYqA6Up9wvOVjQrYmJlygS3ftM87SHlIyx9
weight = 5



5. 许可证

此库是免费的。请参阅根目录中的许可证文件以获取详细许可证信息。