skagarwal / google-places-api
Google Places Api
Requires
- php: ^8.0.2
- guzzlehttp/guzzle: ^7.5
- illuminate/container: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^9.5.8|^10.5
- skagarwal/reflection: ~1.0
README
Google Places API.
这是一个针对 Google Places API Web Service 的 PHP 封装。并且与 Laravel 框架 兼容。
关于包
只需两行代码,您就可以请求任何 Google Places API 功能。无需手动执行任何 curl 请求。
以下地方请求可用
- 地方搜索 此服务根据用户的地理位置或搜索字符串提供地点列表。
- 地方详情 此服务提供有关特定地点的更详细信息,包括用户评论。
- 地方自动完成 此服务用于在您键入时自动填写地点的名称和/或地址。
- 查询自动完成 此服务用于提供基于文本的地理搜索的查询预测服务,通过在您键入时返回建议查询。
- 地方照片 这为您提供了访问 Google 地点数据库中存储的数百万张照片的机会
- 自定义头部 设置自定义头部。
- 附加方法 可用附加方法。
安装
使用 composer 安装它
composer require skagarwal/google-places-api
用法
Laravel 用户可以查看 Laravel 用法 部分
步骤 1 - 使用命名空间导入类
use SKAgarwal\GoogleApi\PlacesApi;
步骤 2 - 初始化对象
$googlePlaces = new PlacesApi('API KEY');
注意:您还可以在初始化类后使用 setKey('KEY')
方法设置 API 密钥。您可以与任何其他方法一起链式调用。
步骤 3 - 开始使用 API。
示例
$response = $googlePlaces->placeAutocomplete('some Place');
如前所述,只需两行代码即可进行任何请求。
完整示例
use SKAgarwal\GoogleApi\PlacesApi; function () { $googlePlaces = new PlacesApi('API_KEY') # line 1 $response = $googlePlaces->placeAutocomplete('some input'); # line 2 }
与 Laravel 一起使用
对于 Laravel 5.5
自动发现已添加。
对于 Laravel 5.4 及以下版本
步骤 1
在 config\app.php 中设置服务提供者和外观
'providers' => [ .... .... SKAgarwal\GoogleApi\ServiceProvider::class, ]; 'aliases' => [ .... .... 'GooglePlaces' => SKAgarwal\GoogleApi\Facade::class, ];
步骤 2
使用以下 artisan 命令发布配置文件
php artisan vendor:publish --provider="SKAgarwal\GoogleApi\ServiceProvider"
这将创建 config 目录中的 google.php 文件。
在此配置文件中设置 API 密钥。
设置 3
使用外观开始使用包。
$response = GooglePlaces::placeAutocomplete('some city');
响应
返回的响应是 Laravel 的 Collection,因此您可以在其上执行任何可用的集合方法。
如果您不熟悉 Laravel 的 Collection,您可以在 此处 参考文档,或者您可以使用 response 作为简单的数组。
可用方法
地方搜索
nearbySearch($location, $radius = null, $params = [])
location
— 获取地点信息的纬度/经度。这必须指定为纬度,经度。- 'radius' — 定义返回地点结果距离(单位:米)。最大允许半径为50,000米。请注意,如果指定了
rankby=distance
(在以下可选参数中描述),则不应包含radius
。 - 如果指定了
rankby=distance
(在以下可选参数中描述),则至少需要包含keyword
、name
或types
中的一个。 params
- 可选参数 您可以在Google官方网页上查看所有可用的可选参数。
textSearch($query, $params = [])
query
— 要搜索的文本字符串,例如:“restaurant”。Google地点服务将根据此字符串返回候选匹配项,并根据它们感知的相关性对结果进行排序。params
- 可选参数 您可以在Google官方网页上查看所有可用的可选参数。
findPlace($input, $inputType, $params = [])
input
— 指定搜索地点的文本输入(例如,名称、地址或电话号码)。inputType
— 输入类型。这可以是以下两种之一:textquery或phonenumber。电话号码必须使用国际格式(以加号"+"开头,然后是国家代码,最后是电话号码本身)。params
- 可选参数 您可以在Google官方网页上查看所有可用的可选参数。
地点详情
placeDetails($placeId, $params = [])
placeId
— 一个文本标识符,唯一标识地点,由地点搜索返回。params
- 可选参数 您可以在Google官方网页上查看所有可用的可选参数。
地点自动补全
placeAutocomplete($input, $params = [])
input
— 要搜索的文本字符串。地点自动补全服务将根据此字符串返回候选匹配项,并根据它们感知的相关性对结果进行排序。params
- 可选参数 您可以在Google官方网页上查看所有可用的可选参数。
查询自动补全
queryAutocomplete($input, $params = [])
input
— 要搜索的文本字符串。地点服务将根据此字符串返回候选匹配项,并根据它们感知的相关性对结果进行排序。params
- 可选参数 您可以在Google官方网页上查看所有可用的可选参数。
地点照片
photo($photoReference, $params = [])
params
- 将地点添加到Google所需的一组键值参数。您可以在Google官方网页关于地点添加的字段上查看。
自定义头部
withHeaders(array $headers)
在调用任何其他方法之前调用此方法以设置头部。您可以链接此方法。
new PlacesApi($key = null, $verifySSL = true, array $headers = [])
为了对每次调用都设置自定义头部,您可以在类构造函数中将第三个参数作为头部传递。
注意:对于Laravel用户,您可以在配置文件中通过键headers
设置此选项。
其他方法
getStatus()
这将返回Google API发送的响应的状态。在发出任何请求后使用。
getKey()
这将返回与请求一起使用的API密钥
。
setKey($key)
这将设置API密钥
。
verifySSL($verifySSL = true)
您可以将参数设置为false
来禁用SSL证书验证。
注意:对于Laravel用户,您可以在配置文件中设置此参数,键为verify_ssl
或者,您可以传递证书的路径。
异常
Google Places API可能会根据提供的$params
或响应抛出各种异常,这些异常位于SKAgarwal\GoogleApi\Exceptions
命名空间。
- 当未提供
API KEY
或$params
无效时,会抛出GooglePlacesApiException
。 注意:这是上述异常的父类。 - 当响应的
status
为INVALID_REQUEST
时,会抛出InvalidRequestException
。 - 当响应的
status
为OVER_QUERY_LIMIT
时,会抛出OverQueryLimitException
。 - 当响应的
status
为REQUEST_DENIED
时,会抛出RequestDeniedException
。 - 当响应的
status
为UNKNOWN_ERROR
时,会抛出UnknownErrorException
。 - 当无法确定响应时,会抛出
NotImplementedException
。
如果抛出了这些异常中的任何一个,您可以使用getErrorMessage()
方法从响应中获取error_message
字段(如果提供的话)。 注意: error_message
字段并不保证总是存在,其内容可能会更改。
贡献
请随时报告问题或发起Pull Requests。如果您认为这份文档有任何改进之处,请随时为它创建一个问题。
许可证
Google Places API是开源软件,采用MIT许可证授权。