ride / lib-geocode
Geocode library of the Ride framework
Installs: 2 271
Dependents: 4
Suggesters: 0
Security: 0
Stars: 0
Watchers: 9
Forks: 0
Open Issues: 0
Requires
- ride/lib-http: ^1.0.0
- ride/lib-http-client: ^1.0.0
README
Geocoding library of the PHP Ride framework.
What's In This Library
GeocodeService
The GeocodeService interface is the main workhorse of this library. The implementations of this class perform the actual looking up of addresses to other providers.
There are a couple of implementations included in this library:
ArcgisGeocodeService
This service uses Arcgis to perform geocoding of addresses. Check https://www.arcgis.com for more information about this service.
FreeGeoIpGeocodeService
This service uses freegeoip.net to get the location of an IP address or domain names. Check https://www.freegeoip.net for more information about this service.
GoogleGeocodeService
This service uses Google Maps to perform geocoding of addresses. Check [https://developers.google.com/maps/documentation/geocoding/intro](https://developers.google.com/maps/documentation/geocoding/intro] for more information about this service.
ChainGeocodeService
Use the ChainGeocodeService to chain simular services together. When the first service can't handle the lookup, the following service will be polled and so on.
GeocodeResult
The GeocodeResult interface is used to return the result of a GeocodeService. A default implementation is provided by the GenericGeocodeResult class.
GeocodeCoordinate
The GeocodeCoordinate interface is used to obtain the found coordinates from a GeocodeResult. A default implementation is provided by the GenericGeocodeCoordinate class.
Geocoder
The Geocoder is the facade to this library. You can add different services and give them a name. This name is then used to lookup specific addresses.
Code Sample
Check this code sample to see some possibilities of this library:
<?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 } }
Related Modules
Installation
You can use Composer to install this library.
composer require ride/lib-geocode