This is the photon provider from the PHP Geocoder. This is a READ ONLY repository. See the main repo for information and documentation.
composer require geocoder-php/photon-provider
https://photon.komoot.io https://github.com/komoot/photon
You can use your own photon instance :
// New instance of the provider :
$provider = new Geocoder\Provider\Photon\Photon($httpClient, 'https://your-photon-root-url');
// Run geocode or reverse query
$query = $provider->geocodeQuery(\Geocoder\Query\GeocodeQuery::create('Paris'));
$reverseQuery = $provider->reverseQuery(\Geocoder\Query\ReverseQuery::fromCoordinates(48.86036 ,2.33852));
You can search for location data based on osm tag filters.
For example, you can filter a geocode query to only include results of type 'place'. You can even restrict it to only have places of type 'city'. In the reverse geocoding context you can search for the 3 pharmacies closest to a location.
To see what you can do with this feature, check the official photon documentation
Below is an example to query the 3 pharmacies closest to a location :
$provider = new Geocoder\Provider\Photon\Photon($httpClient, 'https://your-photon-root-url');
$reverseQuery = \Geocoder\Query\ReverseQuery::fromCoordinates(52.51644, 13.38890)
->withData('osm_tag', 'amenity:pharmacy')
->withLimit(3);
$results = $provider->reverseQuery($reverseQuery);
You can combine multiple osm tag filters :
$provider = new Geocoder\Provider\Photon\Photon($httpClient, 'https://your-photon-root-url');
$reverseQuery = \Geocoder\Query\GeocodeQuery::create('Paris')
->withData('osm_tag', ['tourism:museum', 'tourism:gallery'])
->withLimit(5);
// Here we get 5 tourism results in Paris which are either museum or art gallery
$results = $provider->reverseQuery($reverseQuery);
Contributions are very welcome! Send a pull request to the main repository or report any issues you find on the issue tracker.