biscolab / google-maps-php-sdk
Google Maps PHP SDK。
Requires
- php: ^8.0
- guzzlehttp/guzzle: 5.*|6.*|7.*
Requires (Dev)
- ext-curl: *
- phpdocumentor/reflection-docblock: ~2.0
- phpunit/phpunit: 7.*|8.*|^9.0
- psr/log: ^1.0
- sami/sami: ^4.1
This package is auto-updated.
Last update: 2024-09-17 22:31:54 UTC
README
Google Maps PHP(非官方库)。此库提供与Google Maps API进行交互的简单函数。您可以在Google Maps平台文档中找到更多信息。
Google Maps提供许多服务,目前此包仅实现地理编码服务,但其他服务将很快可用。
参考与文档
Google Maps服务
准备就绪
- 地理编码 ☑️
- 海拔 ☑️
- 地点 ☑️
- 时区 ☑️
ASAP
- 路线(即将推出)
- 距离矩阵(即将推出)
- 道路(即将推出)
未计划
- 地理位置(未计划)
安装
您可以通过composer安装此包
composer require biscolab/google-maps-php-sdk
示例
查看示例
许可
文档
此库提供与Google Maps API进行交互的简单函数。您可以在Google Maps平台文档中找到更多信息。
参考
您可以在完整API参考中找到。
Google Maps服务
准备就绪
ASAP
- 路线(即将推出)
- 距离矩阵(即将推出)
- 道路(即将推出)
未计划
- 地理位置(未计划)
系统要求
PHP 7.1或更高版本
Composer
通过composer安装此包
composer require biscolab/google-maps-php-sdk
注意!此包尚未稳定,您可能会遇到最小稳定性的问题。更多文档即将推出。
Google Maps是由Google提供的一项服务。首先,您必须在Google Cloud Platform控制台注册您的应用项目,并获取一个Google API密钥,您可以将其添加到您的应用程序或网站(来源:官方Google Maps文档)。
Google控制台
地理编码API
地理编码API是一种提供地址地理编码和反向地理编码的服务。
初始化地理编码对象
首先将YOUR_API_KEY
替换为您的实际API密钥。
use Biscolab\GoogleMaps\Api\Geocoding; use Biscolab\GoogleMaps\Enum\GoogleMapsApiConfigFields; $geocoding = new Geocoding([ GoogleMapsApiConfigFields::KEY => 'YOUR_API_KEY' ]);
获取结果
您有3种不同的方式来获取您地点的数据!
访问SDK参考
通过地址作为字符串进行地理编码(纬度/经度查找)
getByAddress
接受以下参数
$results = $geocoding->getByAddress('Insert your address here, city, postal code etc...');
使用setLanguage
方法更改响应语言
您可以在以下位置找到支持的语种列表: https://developers.google.com/maps/faq#languagesupport
// Set Spanish language $results = $geocoding->setLanguage('es')->getByAddress('Insert your address here, city, postal code etc...');
反向地理编码(地址查找)通过位置/LatLng对象
getByLatLng
(getReverse
别名已弃用)接受一个代表地点位置的LatLng
对象。
$results = $geocoding->getByLatLng(new LatLng([ LatLngFields::LAT => $lat, LatLngFields::LNG => $lng, ])); // Alias `getReverse` deprecated!!! $results = $geocoding->getReverse(new LatLng([ LatLngFields::LAT => $lat, LatLngFields::LNG => $lng, ]));
使用setLanguage
方法更改响应语言
您可以在以下位置找到支持的语种列表: https://developers.google.com/maps/faq#languagesupport
// Set Spanish language $results = $geocoding->setLanguage('es')->getByLatLng(new LatLng([ LatLngFields::LAT => $lat, LatLngFields::LNG => $lng, ])); // Use the same way for getReverse (alias) method
使用字符串作为地点ID
getByPlaceId
接受作为参数的地点ID地址。
$results = $geocoding->getByPlaceId('YOUR_PLACE_ID');
使用结果
结果是一个Biscolab\GoogleMaps\Http\GeocodingResultsCollection
对象。
首先,您应该知道您的GeocodingResultsCollection
中有多少结果,使用count
方法。
$number_of_results = $results->count();
要检索第一个结果,您可以使用first
方法
$first_result = $results->first();
$first_result
是GeocodingResult
类的实例,并具有以下方法
高程API
高程API为地球上所有表面位置提供高程数据,包括海底深度位置(返回负值)。
有两种类型的请求
- 位置请求
- 采样路径请求
目前此包只支持位置请求
,但我正在开发采样路径请求
,它将很快可用。
初始化高程对象
首先将YOUR_API_KEY
替换为您的实际API密钥。
use Biscolab\GoogleMaps\Api\Elevation; use Biscolab\GoogleMaps\Enum\GoogleMapsApiConfigFields; $elevation = new Elevation([ GoogleMapsApiConfigFields::KEY => 'YOUR_API_KEY' ]);
获取结果(位置请求)
首先,您必须准备locations
变量,它可以是单个Location
对象、Location
对象数组或多段字符串。
单个位置对象
使用纬度和经度创建位置对象。
// get results by single Location object $locations = new Location([ LatLngFields::LAT => 39.73915360, LatLngFields::LNG => -104.9847034, ]);
位置对象数组
在数组中使用多个位置对象
// or by multiple Location objects $locations = [ new Location([ LatLngFields::LAT => 39.73915360, LatLngFields::LNG => -104.9847034, ]), // ... more locations new Location([ LatLngFields::LAT => 50.123, LatLngFields::LNG => 99.456, ]) ];
多段编码字符串
使用编码多段算法格式对位置进行编码。
// or by polyline $locations = 'enc:gfo}EtohhU';
执行API调用
// make API call $results = $elevation->getByLocations($locations);
获取结果(采样路径请求)
首先,您必须准备path
变量,它可以是Location
对象数组或多段字符串。
位置对象数组
在数组中使用多个位置对象
// or by multiple Location objects $path = [ new Location([ LatLngFields::LAT => 39.73915360, LatLngFields::LNG => -104.9847034, ]), // ... more locations new Location([ LatLngFields::LAT => 50.123, LatLngFields::LNG => 99.456, ]) ];
多段编码字符串
使用编码多段算法格式对位置进行编码。
// or by polyline $path = 'enc:gfo}EtohhUxD@bAxJmGF';
执行API调用
// make API call $samples = 5; // must be int > 0 $results = $elevation->getBySampledPath($path, $samples);
使用结果
结果是Biscolab\GoogleMaps\Http\ElevationResultsCollection
对象。
首先,您应该知道您的ElevationResultsCollection
中有多少结果,使用count
方法。
$number_of_results = $results->count();
要检索第一个结果,您可以使用first
方法
$first_result = $results->first();
$first_result
是ElevationResult
类的实例,并具有以下方法
地点API
地点API允许您查询各种类别的地点信息,例如:机构、著名地标、地理位置等。您可以通过邻近度或文本字符串(来源:官方文档网站)搜索地点。
有3种类型的请求
- 查找地点请求
- 附近搜索请求
- 文本搜索请求
初始化地点对象
首先将YOUR_API_KEY
替换为您的实际API密钥。
use Biscolab\GoogleMaps\Api\Places; use Biscolab\GoogleMaps\Enum\GoogleMapsApiConfigFields; $place = new Places([ GoogleMapsApiConfigFields::KEY => 'YOUR_API_KEY' ]);
查找地点请求
此函数接受文本输入(名称、地址或电话号码)并返回一个地点。
使用名称或地址
使用“名称”或“地址”搜索地点。
use Biscolab\GoogleMaps\Fields\GoogleMapsRequestFields; // get results by place's name or address $result = $places->findPlaceByText("Museum of Contemporary Art Australia");
findPlaceByText
方法接受3个参数
在此处查找请求字段的更多详细信息(必需、类型等...):https://developers.google.com/places/web-service/search#FindPlaceRequests
使用电话号码
使用“电话号码”搜索地点。
use Biscolab\GoogleMaps\Fields\GoogleMapsRequestFields; // get results by place's phone number $result = $places->findPlaceByPhoneNumber("+61293744000");
findPlaceByPhoneNumber
方法接受3个参数
在此处查找请求字段的更多详细信息(必需、类型等...):https://developers.google.com/places/web-service/search#FindPlaceRequests
附近搜索请求
此函数在指定区域内查找地点。
使用位置和半径
use Biscolab\GoogleMaps\Object\Location; use Biscolab\GoogleMaps\Fields\GoogleMapsRequestFields; $location = new Location([ LatLngFields::LAT => -33.8670522, LatLngFields::LNG => 151.1957362, ]); $radius = 1000; $result = $places->findNearbyPlaceByRadius($location, $radius);
findNearbyPlaceByRadius
方法接受 3 个参数
按距离排序
use Biscolab\GoogleMaps\Object\Location; use Biscolab\GoogleMaps\Fields\GoogleMapsRequestFields; $location = new Location([ LatLngFields::LAT => -33.8670522, LatLngFields::LNG => 151.1957362, ]); // You MUST set at least one of following values $params = [ GoogleMapsRequestFields::KEYWORD => 'a keyword', GoogleMapsRequestFields::NAME => 'name of the place you are looking for', // Biscolab\GoogleMaps\Values\PlaceTypeValues enum class GoogleMapsRequestFields::TYPE => 'Type of the place you are looking for' ]; $result = $places->findNearbyPlaceByDistance($location, $params);
findNearbyPlaceByDistance
方法接受 2 个参数
在此处查找有关请求字段(必需项、类型等)的更多详细信息:https://developers.google.com/places/web-service/search#PlaceSearchRequests
文本搜索请求
此服务基于字符串返回一组地点的信息。
按查询搜索
use Biscolab\GoogleMaps\Fields\GoogleMapsRequestFields; $query = "restaurants in Sydney"; $params = [ ... ]; $result = $places->textSearch($query, $params);
textSearch
方法接受 2 个参数
在此处查找有关请求字段(必需项、类型等)的更多详细信息:https://developers.google.com/places/web-service/search#TextSearchRequests
地点的详细信息
use Biscolab\GoogleMaps\Fields\GoogleMapsRequestFields; $place_id = "ChIJN1t_tDeuEmsRUsoyG83frY4"; $params = [ ... ]; $result = $places->details($place_id, $params);
details
方法接受 2 个参数
在此处查找有关请求字段(必需项、类型等)的更多详细信息:https://developers.google.com/places/web-service/details#PlaceDetailsRequests
使用结果
结果是一个 Biscolab\GoogleMaps\Http\PlaceResultsCollection
对象。
当前页面
首先,您应该使用 count
方法了解您的 PlaceResultsCollection
中有多少个结果。
$number_of_results = $results->count();
要检索第一个结果,您可以使用first
方法
$first_result = $results->first();
$first_result
是 PlaceResult
类的一个实例,并具有以下方法
下一页结果
结果可以进行分页。您如何知道结果是否有更多页面?
// getNextPage method checks if $result has "next page" $next_page_result = $result->getNextPage();
时区 API
时区 API 为地球表面的地点提供时间偏移数据。
初始化时区对象
首先将YOUR_API_KEY
替换为您的实际API密钥。
use Biscolab\GoogleMaps\Api\TimeZone; use Biscolab\GoogleMaps\Enum\GoogleMapsApiConfigFields; $timezone = new TimeZone([ GoogleMapsApiConfigFields::KEY => 'YOUR_API_KEY' ]);
获取结果
前往完整的 SDK 参考
通过位置和时间戳
$result = $timezone->get($location, $timestamp, $language);
get
接受 3 个参数
使用结果
结果是一个 Biscolab\GoogleMaps\Http\Result\TimeZoneResult
类的实例,并具有以下方法