Utilisation des Api de géolocalisation avec PHP
Dans de nombreux projets, j'ai besoin de pouvoir géolocaliser des adresses ou au contraire de trouver des informations géographiques (ville, département ...) à partir de coordonnées géographiques.
Pour me simplifier la vie et pouvoir intégrer cette fonctionnalité simplement lorsque j'en ai besoin, j'ai mis en place un petit bundle PHP qui remplit cette mission. Geolocator est donc capable de trouver les coordonnées géographiques d'une adresse donnée et des retrouver des informations plus administratives à partir d'une latitude et d'une longitude.
Il est également capable, dans la plupart des cas, de trouver l'altitude.
Et tout cela en utilisant que des ressources accessibles gratuitement et sans clé d'API :
- https://adresse.data.gouv.fr/api-doc/adresse
- https://nominatim.org/release-docs/develop/api/Overview/
- https://www.opentopodata.org/
Le dépot
https://github.com/frvaillant/Geolocator
Installation
composer require francoisvaillant/geolocator
Un petit tour
Ce bundle repose sur une classe nommée Place. C'est elle qui définit un lieu par ses coordonnées géographiques ou son adresse postale. Ainsi, pour démarrer il suffit de l'instancier et de l'hydrater avec les bons paramètres :
Démarrage
use Francoisvaillant\Geolocator\Place; $place = new Place();
Trouver un lieu par ses coordonnées
Si vous avez les coordonnées d'un point et que vous en cherchez la commune par exemple :
$place ->setLatitude(44.567) ->setLongitude(0.548) ->reverse(); $city = $place->getCity();
Géolocaliser une adresse
A l'inverse, si vous avez une adresse dont vous souhaitez obtenir les coordonnées :
$place ->setAddress('8 rue du Docteur Pujos') ->setZipCode(17300) ->setCity('Rochefort') ->geolocate(); $latitude = $place->getLatitude(); $longitude = $place->getLongitude();
Trouver une altitude
Pour obtenir l'altitude d'un point, il vous faut ses coordonnées géographiques :
$place ->setLatitude(44.567) ->setLongitude(0.548) ->findAltitude(); $altitude = $place->getAltitude();