Provides an abstraction layer for geocoding services. This bundle can be also used to split geocoding's calculation between a set of external geocoding service.
The following services are included to this bundle :
The the complete documentation to add you own provider.
$address = $container
->get('meup_geo_location.address_factory')
->create()
->setFullAddress('360 rue du thor, 34000 Montpellier')
;
$coordinates = $container
->get('meup_geo_location.locator')
->locate($address)
;
printf(
"%s,%s\n",
$coordinates->getLatitude(),
$coordinates->getLongitude()
);
// output : 43.6190815,3.9162419
The geolocation-bundle
only provides library ands services. But you can easily integrate it in your applications.
$coordinates = $container
->get('meup_geo_location.coordinates_factory')
->create()
->setLatitude(43.6190815)
->setLongitude(3.9162419)
;
$address = $container
->get('meup_geo_location.locator')
->locate($coordinates)
;
print $address->getFullAddress();
// output : 640 Rue du Mas de Verchant, 34000 Montpellier
When you found two location's coordinates you can also calculate their distance with the distance calculator.
$factory = $container
->get('meup_geo_location.coordinates_factory')
;
$paris = $factory
->create()
->setLatitude(48.856667)
->setLongitude(2.350987)
;
$lyon = $factory
->create()
->setLatitude(45.767299)
->setLongitude(4.834329)
;
$distance_paris_lyon = $container
->get('meup_geo_location.distance_calculator')
->getDistance($paris, $lyon)
;
printf('%d km', $distance_paris_lyon); # 391.613 km
Install the package with Composer :
composer require 1001pharmacies/geolocation-bundle
Or update the composer.json
file :
"require": {
"1001pharmacies/geolocation-bundle": "~1.0"
}
Update app/AppKernel.php
:
$bundles = array(
// ...
new Meup\Bundle\GeoLocationBundle\MeupGeoLocationBundle(),
);
Setup your app/config/parameters.yml
with your api keys :
parameters:
# ...
geo_location_google_api_key: your_google_api_key
geo_location_bing_api_key: your_bing_api_key
geo_location_nominatim_api_key: null
geo_location_mapquest_api_key: your_mapquest_api_key
geo_location_yandex_api_key: null
See detailed Google and Bing documentation to know how to retrieve api keys.