Ride: Geocode Library
Geocoding library of the PHP Ride framework., (*1)
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., (*2)
There are a couple of implementations included in this library:, (*3)
ArcgisGeocodeService
This service uses Arcgis to perform geocoding of addresses.
Check https://www.arcgis.com for more information about this service., (*4)
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., (*5)
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., (*6)
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., (*7)
GeocodeResult
The GeocodeResult interface is used to return the result of a GeocodeService.
A default implementation is provided by the GenericGeocodeResult class., (*8)
GeocodeCoordinate
The GeocodeCoordinate interface is used to obtain the found coordinates from a GeocodeResult.
A default implementation is provided by the GenericGeocodeCoordinate class., (*9)
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., (*10)
Code Sample
Check this code sample to see some possibilities of this library:, (*11)
<?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
}
}
Installation
You can use Composer to install this library., (*12)
composer require ride/lib-geocode