Skip to content

[READ ONLY] Provider for Photon

License

Notifications You must be signed in to change notification settings

geocoder-php/photon-provider

Repository files navigation

photon Geocoder provider

Build Status Latest Stable Version Total Downloads Monthly Downloads Code Coverage Quality Score Software License

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.