ride / lib-geocode
Ride框架的地理编码库
1.3.1
2019-06-07 10:34 UTC
Requires
- ride/lib-http: ^1.0.0
- ride/lib-http-client: ^1.0.0
README
PHP Ride框架的地理编码库。
本库包含内容
GeocodeService
GeocodeService 接口是本库的主要工作马,该类的实现负责实际查找地址到其他提供者。
本库包含几个实现
ArcgisGeocodeService
此服务使用 Arcgis 对地址进行地理编码。有关此服务的更多信息,请参阅 https://www.arcgis.com。
FreeGeoIpGeocodeService
此服务使用 freegeoip.net 获取 IP 地址或域名位置。有关此服务的更多信息,请参阅 https://www.freegeoip.net。
GoogleGeocodeService
此服务使用 Google Maps 对地址进行地理编码。有关此服务的更多信息,请参阅 https://developers.google.com/maps/documentation/geocoding/intro。
ChainGeocodeService
使用 ChainGeocodeService 将相似的服务链接在一起。当第一个服务无法处理查找时,将轮询下一个服务,依此类推。
GeocodeResult
GeocodeResult 接口用于返回 GeocodeService 的结果。由 GenericGeocodeResult 类提供了一个默认实现。
GeocodeCoordinate
GeocodeCoordinate 接口用于从 GeocodeResult 中获取找到的坐标。由 GenericGeocodeCoordinate 类提供了一个默认实现。
Geocoder
Geocoder 是本库的门面。您可以添加不同的服务并给它们命名。然后使用此名称查找特定的地址。
代码示例
查看此代码示例以了解本库的一些可能性
<?php use ride\library\http\client\Client; use ride\library\geocode\service\ArcgisGeocodeService; use ride\library\geocode\service\ChainGeocodeService; use ride\library\geocode\service\FreeGeoIpGeocodeService; use ride\library\geocode\service\GoogleGeocodeService; use ride\library\geocode\Geocoder; function createGeocoder(Client $httpClient) { // create a google service $googleService = new GoogleGeocodeService($httpClient); // optionally set a API key $googleService->setApiKey('your-api-key'); // create a chain of address services $addressService = new ChainGeocodeService('address'); $addressService->addService($googleService); $addressService->addService(new ArcgisGeocodeService($httpClient)); // create a chain of ip services $ipService = new ChainGeocodeService('ip'); $ipService->addService(new FreeGeoIpGeocodeService($httpClient)); // create the geocoder and set our defined services to it $geocoder = new Geocoder(); $geocoder->addService($addressService); $geocoder->addService($ipService); return $geocoder; } function geocodeStuff(Geocoder $geocoder) { try { $geocodeResult = $geocoder->geocode('address', 'Vital de costerstraat, Leuven'); $geocodeResult = $geocoder->geocode('ip', 'github.com'); $geocodeResult = $geocoder->geocode('ip', '8.8.8.8'); } catch (GeocodeException $exception) { // could not find any result } }
相关模块
安装
您可以使用 Composer 安装此库。
composer require ride/lib-geocode