geocoder-php / photon-provider
Geocoder Photon adapter
Requires
- php: ^8.0
- geocoder-php/common-http: ^4.1
- willdurand/geocoder: ^4.0|^5.0
Requires (Dev)
- geocoder-php/provider-integration-tests: ^1.6.3
- php-http/message: ^1.0
- phpunit/phpunit: ^9.5
Provides
README
This is the photon provider from the PHP Geocoder. This is a READ ONLY repository. See the main repo for information and documentation.
Install
composer require geocoder-php/photon-provider
API Documentation
https://photon.komoot.io https://github.com/komoot/photon
Usage
Basic usage
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));
OSM Tag Feature
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);
Contribute
Contributions are very welcome! Send a pull request to the main repository or report any issues you find on the issue tracker.