{"id":15109539,"url":"https://github.com/geocoder-php/geocoder","last_synced_at":"2025-05-13T18:11:10.175Z","repository":{"id":1805586,"uuid":"2729639","full_name":"geocoder-php/Geocoder","owner":"geocoder-php","description":"The most featured Geocoder library written in PHP.","archived":false,"fork":false,"pushed_at":"2025-04-15T13:24:55.000Z","size":41335,"stargazers_count":3956,"open_issues_count":55,"forks_count":521,"subscribers_count":128,"default_branch":"master","last_synced_at":"2025-04-25T15:48:42.056Z","etag":null,"topics":["geocoder"],"latest_commit_sha":null,"homepage":"https://geocoder-php.org","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"bundler/bundler","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geocoder-php.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2011-11-07T21:56:41.000Z","updated_at":"2025-04-20T18:15:29.000Z","dependencies_parsed_at":"2023-07-06T16:32:26.869Z","dependency_job_id":"7e400b1a-d138-486d-81db-5b3a0b9422e5","html_url":"https://github.com/geocoder-php/Geocoder","commit_stats":{"total_commits":1221,"total_committers":190,"mean_commits":6.426315789473684,"dds":0.6961506961506961,"last_synced_commit":"13a0c4ec3c81b9c5d8b5f07be5a7c4da8a574129"},"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geocoder-php%2FGeocoder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geocoder-php%2FGeocoder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geocoder-php%2FGeocoder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geocoder-php%2FGeocoder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geocoder-php","download_url":"https://codeload.github.com/geocoder-php/Geocoder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254000854,"owners_count":21997442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geocoder"],"created_at":"2024-09-25T23:03:35.287Z","updated_at":"2025-05-13T18:11:10.148Z","avatar_url":"https://github.com/geocoder-php.png","language":"PHP","readme":"# Geocoder\n\n[![Geocoder](https://github.com/geocoder-php/Geocoder/actions/workflows/php.yml/badge.svg)](https://github.com/geocoder-php/Geocoder/actions/workflows/php.yml)\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE)\n\n\u003e **Important:** You are browsing the documentation of Geocoder **4.x**.\n\u003e\n\u003e Documentation for version **3.x** is available here: [Geocoder 3.x\n\u003e documentation](https://github.com/geocoder-php/Geocoder/blob/3.x/README.md).\n\u003e\n\u003e Documentation for version **2.x** is available here: [Geocoder 2.x\n\u003e documentation](https://github.com/geocoder-php/Geocoder/blob/2.x/README.md).\n\n---\n\n**Geocoder** is a PHP library which helps you build geo-aware applications by\nproviding a powerful abstraction layer for geocoding manipulations.\n\n* [Installation](#installation)\n* [Cookbook](#cookbook)\n* [Usage](#usage)\n* [Providers](#providers)\n* [Special Geocoders and Providers](#special-geocoders-and-providers)\n* [Dumpers](#dumpers)\n* [Formatters](#formatters)\n* [Versioning](#versioning)\n\n## Installation\n\nTo install a Geocoder there are two things you need to know:\n\n1) What [Geocoder provider](https://packagist.org/providers/geocoder-php/provider-implementation) you want to use\n2) What [HTTP client/adapter](https://packagist.org/providers/psr/http-client-implementation) you want to use.\n\n### Geocoder providers\n\nSince 4.0 we do not include providers by default. You need to select a *geocoder provider*. You will see a list of\nproviders [at Packagist](https://packagist.org/providers/geocoder-php/provider-implementation)\n\n### HTTP Clients\n\nIn order to talk to geocoding APIs, you need HTTP adapters. While it was part of\nthe library in Geocoder before, Geocoder 4.x and upper now relies on [PSR-18](https://www.php-fig.org/psr/psr-18/)\nwhich defines how HTTP message should be sent and received. You can use any library to send HTTP messages\nthat implements [psr/http-client-implementation](https://packagist.org/providers/psr/http-client-implementation).\n\nRead more about PSR-18 in [this blog](https://www.php-fig.org/blog/2018/11/psr-18-the-php-standard-for-http-clients/).\n\n### Summary (Just give me the command)\n\nTo install Google Maps geocoder with Guzzle 7 you may run the following command:\n\n```cmd\ncomposer require geocoder-php/google-maps-provider guzzlehttp/guzzle\n```\n\nOr using the curl client (you'll need to provide a PSR7 implementation such as `nyholm/psr7` if not using Guzzle)\n\n```cmd\ncomposer require geocoder-php/google-maps-provider php-http/curl-client nyholm/psr7\n```\n\n### Framework integration\n\nIf you are using a framework then you may be interested in our excellent framework integrations.\n\nFramework      | Package   | Stats\n:------------- |:--------- |:-------\n[Laravel](https://github.com/geocoder-php/GeocoderLaravel) | `geocoder-php/GeocoderLaravel` | [![GitHub release](https://poser.pugx.org/toin0u/geocoder-laravel/v/stable)](https://packagist.org/packages/toin0u/geocoder-laravel) [![Packagist](https://poser.pugx.org/toin0u/geocoder-laravel/downloads)](https://packagist.org/packages/toin0u/geocoder-laravel)\n[Symfony](https://github.com/geocoder-php/BazingaGeocoderBundle) | `geocoder-php/BazingaGeocoderBundle` | [![Latest Stable Version](https://poser.pugx.org/willdurand/geocoder-bundle/v/stable)](https://packagist.org/packages/willdurand/geocoder-bundle) [![Total Downloads](https://poser.pugx.org/willdurand/geocoder-bundle/downloads)](https://packagist.org/packages/willdurand/geocoder-bundle)\n\n## Cookbook\n\nWe have a small cookbook where you can find examples on common use cases:\n\n* [Caching responses](/docs/cookbook/cache.md)\n* [Configuring the HTTP client](/docs/cookbook/http-client.md)\n* [Rate limiting API requests](/docs/cookbook/rate-limiting.md)\n\n## Usage\n\nIn the code snippet below we use GoogleMaps and Guzzle 7.\n\n```php\nuse Geocoder\\Query\\GeocodeQuery;\nuse Geocoder\\Query\\ReverseQuery;\n\n$httpClient = new \\GuzzleHttp\\Client();\n$provider = new \\Geocoder\\Provider\\GoogleMaps\\GoogleMaps($httpClient, null, 'your-api-key');\n$geocoder = new \\Geocoder\\StatefulGeocoder($provider, 'en');\n\n$result = $geocoder-\u003egeocodeQuery(GeocodeQuery::create('Buckingham Palace, London'));\n$result = $geocoder-\u003ereverseQuery(ReverseQuery::fromCoordinates(...));\n```\n\nThe `Provider` interface has three methods:\n\n* `geocodeQuery(GeocodeQuery $query):AddressCollection`\n* `reverseQuery(ReverseQuery $query):AddressCollection`\n* `getName():string`\n\nThe `Geocoder` interface extends the `Provider` interface and exposes two additional methods. They will\nmake migration from 3.x smoother.\n\n* `geocode($streetOrIpAddress)`\n* `reverse($latitude, $longitude)`\n\n## Providers\n\nProviders perform the geocoding black magic for you (talking to the APIs, fetching results, dealing with errors, etc.)\nand are highly configurable.\n\n### Special providers\n\nProvider       | Package | Features | Stats\n:------------- |:------- |:-------- |:-------\n[Cache](https://github.com/geocoder-php/cache-provider) | `geocoder-php/cache-provider` | Wraps a provider and cached the results | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/cache-provider/v/stable)](https://packagist.org/packages/geocoder-php/cache-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/cache-provider/downloads)](https://packagist.org/packages/geocoder-php/cache-provider)\n[Chain](https://github.com/geocoder-php/chain-provider) | `geocoder-php/chain-provider` | Iterates over multiple providers | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/chain-provider/v/stable)](https://packagist.org/packages/geocoder-php/chain-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/chain-provider/downloads)](https://packagist.org/packages/geocoder-php/chain-provider)\n\n### Address\n\n#### World\n\nProvider       | Package | Features | Stats\n:------------- |:------- |:-------- |:-------\n[Algolia Places](https://github.com/geocoder-php/algolia-places-provider) | `geocoder-php/algolia-places-provider` | address \u003cbr\u003e [Website](https://community.algolia.com/places/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/algolia-places-provider/v/stable)](https://packagist.org/packages/geocoder-php/algolia-places-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/algolia-places-provider/downloads)](https://packagist.org/packages/geocoder-php/algolia-places-provider)\n[ArcGIS Online](https://github.com/geocoder-php/arcgis-online-provider) | `geocoder-php/arcgis-online-provider` | address, reverse \u003cbr\u003e [Website](https://developers.arcgis.com/en/features/geocoding/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/arcgis-online-provider/v/stable)](https://packagist.org/packages/geocoder-php/arcgis-online-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/arcgis-online-provider/downloads)](https://packagist.org/packages/geocoder-php/arcgis-online-provider)\n[Azure Maps](https://github.com/geocoder-php/azure-maps-provider) | `geocoder-php/azure-maps-provider` | address, reverse \u003cbr\u003e [Website](https://docs.microsoft.com/en-us/azure/azure-maps/tutorial-search-location) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/azure-maps-provider/v/stable)](https://packagist.org/packages/geocoder-php/azure-maps-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/azure-maps-provider/downloads)](https://packagist.org/packages/geocoder-php/azure-maps-provider)\n[Bing Maps](https://github.com/geocoder-php/bing-maps-provider) | `geocoder-php/bing-maps-provider` | address, reverse \u003cbr\u003e [Website](http://msdn.microsoft.com/en-us/library/ff701713.aspx) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/bing-maps-provider/v/stable)](https://packagist.org/packages/geocoder-php/bing-maps-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/bing-maps-provider/downloads)](https://packagist.org/packages/geocoder-php/bing-maps-provider)\n[Geocode Earth](https://github.com/geocoder-php/geocode-earth-provider) | `geocoder-php/geocode-earth-provider` | address, reverse \u003cbr\u003e [Website](https://geocode.earth/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/geocode-earth-provider/v/stable)](https://packagist.org/packages/geocoder-php/geocode-earth-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/geocode-earth-provider/downloads)](https://packagist.org/packages/geocoder-php/geocode-earth-provider)\n[Geonames](https://github.com/geocoder-php/geonames-provider) | `geocoder-php/geonames-provider` | address, reverse \u003cbr\u003e [Website](http://www.geonames.org/commercial-webservices.html) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/geonames-provider/v/stable)](https://packagist.org/packages/geocoder-php/geonames-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/geonames-provider/downloads)](https://packagist.org/packages/geocoder-php/geonames-provider)\n[Google Maps](https://github.com/geocoder-php/google-maps-provider) \u003cbr\u003e Google Maps for business | `geocoder-php/google-maps-provider` | address, reverse \u003cbr\u003e [Website](https://developers.google.com/maps/documentation/geocoding/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/google-maps-provider/v/stable)](https://packagist.org/packages/geocoder-php/google-maps-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/google-maps-provider/downloads)](https://packagist.org/packages/geocoder-php/google-maps-provider)\n[Google Maps Places](https://github.com/geocoder-php/google-maps-places-provider) | `geocoder-php/google-maps-places-provider` | address, reverse \u003cbr\u003e [Website](https://developers.google.com/places/web-service/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/google-maps-places-provider/v/stable)](https://packagist.org/packages/geocoder-php/google-maps-places-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/google-maps-places-provider/downloads)](https://packagist.org/packages/geocoder-php/google-maps-places-provider)\n[GraphHopper](https://github.com/geocoder-php/graphhopper-provider) | `geocoder-php/graphhopper-provider` | address, reverse \u003cbr\u003e [Website](https://docs.graphhopper.com/#tag/Geocoding-API) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/graphhopper-provider/v/stable)](https://packagist.org/packages/geocoder-php/graphhopper-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/graphhopper-provider/downloads)](https://packagist.org/packages/geocoder-php/graphhopper-provider)\n[Here](https://github.com/geocoder-php/here-provider) | `geocoder-php/here-provider` | address, reverse \u003cbr\u003e [Website](https://developer.here.com/documentation/geocoder/topics/quick-start-geocode.html) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/here-provider/v/stable)](https://packagist.org/packages/geocoder-php/here-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/here-provider/downloads)](https://packagist.org/packages/geocoder-php/here-provider)\n[LocationIQ](https://github.com/geocoder-php/locationiq-provider) | `geocoder-php/locationiq-provider` | address, reverse \u003cbr\u003e [Website](https://locationiq.org/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/locationiq-provider/v/stable)](https://packagist.org/packages/geocoder-php/locationiq-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/locationiq-provider/downloads)](https://packagist.org/packages/geocoder-php/locationiq-provider)\n[Mapbox](https://github.com/geocoder-php/mapbox-provider) | `geocoder-php/mapbox-provider` | address, reverse \u003cbr\u003e [Website](https://www.mapbox.com/geocoding/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/mapbox-provider/v/stable)](https://packagist.org/packages/geocoder-php/mapbox-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/mapbox-provider/downloads)](https://packagist.org/packages/geocoder-php/mapbox-provider)\n[MapQuest](https://github.com/geocoder-php/mapquest-provider) | `geocoder-php/mapquest-provider` | address, reverse \u003cbr\u003e [Website](http://developer.mapquest.com/web/products/dev-services/geocoding-ws) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/mapquest-provider/v/stable)](https://packagist.org/packages/geocoder-php/mapquest-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/mapquest-provider/downloads)](https://packagist.org/packages/geocoder-php/mapquest-provider)\n[MapTiler](https://github.com/geocoder-php/maptiler-provider) | `geocoder-php/maptiler-provider` | address, reverse \u003cbr\u003e [Website](https://www.maptiler.com/cloud/geocoding/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/maptiler-provider/v/stable)](https://packagist.org/packages/geocoder-php/maptiler-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/maptiler-provider/downloads)](https://packagist.org/packages/geocoder-php/maptiler-provider)\n[Nominatim](https://github.com/geocoder-php/nominatim-provider) \u003cbr\u003e (OpenStreetMap) | `geocoder-php/nominatim-provider` | address, reverse \u003cbr\u003e [Website](http://wiki.openstreetmap.org/wiki/Nominatim) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/nominatim-provider/v/stable)](https://packagist.org/packages/geocoder-php/nominatim-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/nominatim-provider/downloads)](https://packagist.org/packages/geocoder-php/nominatim-provider)\n[OpenCage](https://github.com/geocoder-php/open-cage-provider) | `geocoder-php/open-cage-provider` | address, reverse \u003cbr\u003e [Website](https://opencagedata.com/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/open-cage-provider/v/stable)](https://packagist.org/packages/geocoder-php/open-cage-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/open-cage-provider/downloads)](https://packagist.org/packages/geocoder-php/open-cage-provider)\n[OpenRouteService](https://github.com/geocoder-php/openrouteservice-provider) | `geocoder-php/openrouteservice-provider` | address, reverse \u003cbr\u003e [Website](https://openrouteservice.org/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/openrouteservice-provider/v/stable)](https://packagist.org/packages/geocoder-php/openrouteservice-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/openrouteservice-provider/downloads)](https://packagist.org/packages/geocoder-php/openrouteservice-provider)\n[Pelias](https://github.com/geocoder-php/pelias-provider) | `geocoder-php/pelias-provider` | address, reverse \u003cbr\u003e [Website](https://pelias.io/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/pelias-provider/v/stable)](https://packagist.org/packages/geocoder-php/pelias-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/pelias-provider/downloads)](https://packagist.org/packages/geocoder-php/pelias-provider)\n[Photon](https://github.com/geocoder-php/photon-provider) | `geocoder-php/photon-provider` | address, reverse \u003cbr\u003e [Website](https://photon.komoot.de/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/photon-provider/v/stable)](https://packagist.org/packages/geocoder-php/photon-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/photon-provider/downloads)](https://packagist.org/packages/geocoder-php/photon-provider)\n[PickPoint](https://github.com/geocoder-php/pickpoint-provider) | `geocoder-php/pickpoint-provider` | address, reverse \u003cbr\u003e [Website](https://pickpoint.io/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/pickpoint-provider/v/stable)](https://packagist.org/packages/geocoder-php/pickpoint-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/pickpoint-provider/downloads)](https://packagist.org/packages/geocoder-php/pickpoint-provider)\n[TomTom](https://github.com/geocoder-php/tomtom-provider) | `geocoder-php/tomtom-provider` | address, reverse \u003cbr\u003e [Website](https://geocoder.tomtom.com/app/view/index) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/tomtom-provider/v/stable)](https://packagist.org/packages/geocoder-php/tomtom-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/tomtom-provider/downloads)](https://packagist.org/packages/geocoder-php/tomtom-provider)\n[Yandex](https://github.com/geocoder-php/yandex-provider) | `geocoder-php/yandex-provider` | address, reverse \u003cbr\u003e [Website](http://api.yandex.com/maps/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/yandex-provider/v/stable)](https://packagist.org/packages/geocoder-php/yandex-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/yandex-provider/downloads)](https://packagist.org/packages/geocoder-php/yandex-provider)\n\n#### Local\n\nRegion  | Provider      | Package | Features | Stats\n:------ |:------------- |:------- |:-------- |:-------\n:belgium: | [bpost](https://github.com/geo6/geocoder-php-bpost-provider) (third-party package*) | `geo6/geocoder-php-bpost-provider` | address \u003cbr\u003e [Website](https://www.bpost.be/site/en/webservice-address) | [![Latest Stable Version](https://poser.pugx.org/geo6/geocoder-php-bpost-provider/v/stable)](https://packagist.org/packages/geo6/geocoder-php-bpost-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geo6/geocoder-php-bpost-provider/downloads)](https://packagist.org/packages/geo6/geocoder-php-bpost-provider)\n:belgium: | [GeoPunt](https://github.com/geo6/geocoder-php-geopunt-provider) (third-party package*) | `geo6/geocoder-php-geopunt-provider` | address, reverse \u003cbr\u003e [Website](http://loc.geopunt.be/) | [![Latest Stable Version](https://poser.pugx.org/geo6/geocoder-php-geopunt-provider/v/stable)](https://packagist.org/packages/geo6/geocoder-php-geopunt-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geo6/geocoder-php-geopunt-provider/downloads)](https://packagist.org/packages/geo6/geocoder-php-geopunt-provider)\n:belgium: | [Service Public de Wallonie](https://github.com/geo6/geocoder-php-spw-provider) (third-party package*) | `geo6/geocoder-php-spw-provider` | address, reverse \u003cbr\u003e [Website](http://geoservices.wallonie.be/geolocalisation/doc/ws/index.xhtml) | [![Latest Stable Version](https://poser.pugx.org/geo6/geocoder-php-spw-provider/v/stable)](https://packagist.org/packages/geo6/geocoder-php-spw-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geo6/geocoder-php-spw-provider/downloads)](https://packagist.org/packages/geo6/geocoder-php-spw-provider)\n:belgium: | [UrbIS](https://github.com/geo6/geocoder-php-urbis-provider) (third-party package*) | `geo6/geocoder-php-urbis-provider` | address, reverse \u003cbr\u003e [Website](http://geoservices.irisnet.be/localization/) | [![Latest Stable Version](https://poser.pugx.org/geo6/geocoder-php-urbis-provider/v/stable)](https://packagist.org/packages/geo6/geocoder-php-urbis-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geo6/geocoder-php-urbis-provider/downloads)](https://packagist.org/packages/geo6/geocoder-php-urbis-provider)\n:fr: | [Addok](https://github.com/geo6/geocoder-php-addok-provider) (third-party package*) | `geo6/geocoder-php-addok-provider` | address, reverse \u003cbr\u003e [Website](https://adresse.data.gouv.fr/) | [![Latest Stable Version](https://poser.pugx.org/geo6/geocoder-php-addok-provider/v/stable)](https://packagist.org/packages/geo6/geocoder-php-addok-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geo6/geocoder-php-addok-provider/downloads)](https://packagist.org/packages/geo6/geocoder-php-addok-provider)\n:luxembourg: | [Geoportail.lu](https://github.com/frantzmiccoli/geocoder-php-geoportail-lu) (third-party package*) | `frantzmicccoli/geocoder-php-geoportail-lu` | address, reverse \u003cbr\u003e [Website](https://geoportail.lu/en/) | [![Latest Stable Version](https://poser.pugx.org/frantzmicccoli/geocoder-php-geoportail-lu/v/stable)](https://poser.pugx.org/frantzmicccoli/geocoder-php-geoportail-lu) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/frantzmicccoli/geocoder-php-geoportail-lu/downloads)](https://packagist.org/packages/frantzmicccoli/geocoder-php-geoportail-lu)\n:netherlands: | [Nationaal Georegister](https://github.com/swisnl/geocoder-php-nationaal-georegister-provider) (third-party package*) | `swisnl/geocoder-php-nationaal-georegister-provider` | address, reverse \u003cbr\u003e [Website](https://geodata.nationaalgeoregister.nl/) | [![Latest Stable Version](https://poser.pugx.org/swisnl/geocoder-php-nationaal-georegister-provider/v/stable)](https://packagist.org/packages/swisnl/geocoder-php-nationaal-georegister-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/swisnl/geocoder-php-nationaal-georegister-provider/downloads)](https://packagist.org/packages/swisnl/geocoder-php-nationaal-georegister-provider)\n:ru: | [Sputnik](https://github.com/demollc/sputnik-provider) (third-party package*) | `demollc/sputnik-provider` | address, reverse \u003cbr\u003e [Website](http://api.sputnik.ru/maps/) | [![Latest Stable Version](https://poser.pugx.org/demollc/sputnik-provider/v/stable)](https://packagist.org/packages/demollc/sputnik-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/demollc/sputnik-provider/downloads)](https://packagist.org/packages/demollc/sputnik-provider)\n\n\\* *Third-party package: Those providers are not official, i.e. not from the Geocoder core team.*\n\n### IP\n\nProvider       | Package | Features | Stats\n:------------- |:------- |:-------- |:-------\n[FreeGeoIp](https://github.com/geocoder-php/free-geoip-provider) | `geocoder-php/free-geoip-provider` | IPv4, IPv6 \u003cbr\u003e [Website](https://freegeoip.app/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/free-geoip-provider/v/stable)](https://packagist.org/packages/geocoder-php/free-geoip-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/free-geoip-provider/downloads)](https://packagist.org/packages/geocoder-php/free-geoip-provider)\n[GeoIP2](https://github.com/geocoder-php/geoip2-provider) | `geocoder-php/geoip2-provider` | IPv4 \u003cbr\u003e [Website](https://www.maxmind.com/en/geoip2-databases) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/geoip2-provider/v/stable)](https://packagist.org/packages/geocoder-php/geoip2-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/geoip2-provider/downloads)](https://packagist.org/packages/geocoder-php/geoip2-provider)\n[GeoPlugin](https://github.com/geocoder-php/geo-plugin-provider) | `geocoder-php/geo-plugin-provider` | IPv4, IPv6 \u003cbr\u003e [Website](http://www.geoplugin.com/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/geo-plugin-provider/v/stable)](https://packagist.org/packages/geocoder-php/geo-plugin-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/geo-plugin-provider/downloads)](https://packagist.org/packages/geocoder-php/geo-plugin-provider)\n[HostIp](https://github.com/geocoder-php/host-ip-provider) | `geocoder-php/host-ip-provider` | IPv4 \u003cbr\u003e [Website](http://www.hostip.info/use.html) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/host-ip-provider/v/stable)](https://packagist.org/packages/geocoder-php/host-ip-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/host-ip-provider/downloads)](https://packagist.org/packages/geocoder-php/host-ip-provider)\n[IP2Location](https://github.com/geocoder-php/ip2location-provider) | `geocoder-php/ip2location-provider` | IPv4, IPv6 \u003cbr\u003e [Website](https://www.ip2location.com/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/ip2location-provider/v/stable)](https://packagist.org/packages/geocoder-php/ip2location-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/ip2location-provider/downloads)](https://packagist.org/packages/geocoder-php/ip2location-provider)\n[IP2Location Binary](https://github.com/geocoder-php/ip2location-binary-provider) | `geocoder-php/ip2location-binary-provider` | IPv4, IPv6 \u003cbr\u003e [Website](https://www.ip2location.com/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/ip2location-binary-provider/v/stable)](https://packagist.org/packages/geocoder-php/ip2location-binary-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/ip2location-binary-provider/downloads)](https://packagist.org/packages/geocoder-php/ip2location-binary-provider)\n[IpInfo](https://github.com/geocoder-php/ip-info-provider) | `geocoder-php/ip-info-provider` | IPv4, IPv6 \u003cbr\u003e [Website](https://ipinfo.io/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/ip-info-provider/v/stable)](https://packagist.org/packages/geocoder-php/ip-info-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/ip-info-provider/downloads)](https://packagist.org/packages/geocoder-php/ip-info-provider)\n[IpInfoDB](https://github.com/geocoder-php/ip-info-db-provider) | `geocoder-php/ip-info-db-provider` | IPv4 \u003cbr\u003e [Website](http://ipinfodb.com/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/ip-info-db-provider/v/stable)](https://packagist.org/packages/geocoder-php/ip-info-db-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/ip-info-db-provider/downloads)](https://packagist.org/packages/geocoder-php/ip-info-db-provider)\n[ipstack](https://github.com/geocoder-php/ipstack-provider) | `geocoder-php/ipstack-provider` | IPv4, IPv6 \u003cbr\u003e [Website](https://ipstack.com/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/ipstack-provider/v/stable)](https://packagist.org/packages/geocoder-php/ipstack-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/ipstack-provider/downloads)](https://packagist.org/packages/geocoder-php/ipstack-provider)\n[MaxMind](https://github.com/geocoder-php/maxmind-provider) | `geocoder-php/maxmind-provider` | IPv4, IPv6 \u003cbr\u003e [Website](https://www.maxmind.com/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/maxmind-provider/v/stable)](https://packagist.org/packages/geocoder-php/maxmind-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/maxmind-provider/downloads)](https://packagist.org/packages/geocoder-php/maxmind-provider)\n[MaxMind Binary](https://github.com/geocoder-php/maxmind-binary-provider) | `geocoder-php/maxmind-binary-provider` | IPv4, IPv6 \u003cbr\u003e [Website](https://www.maxmind.com/) | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/maxmind-binary-provider/v/stable)](https://packagist.org/packages/geocoder-php/maxmind-binary-provider) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/maxmind-binary-provider/downloads)](https://packagist.org/packages/geocoder-php/maxmind-binary-provider)\n\n### Other packages\n\nThere are two \"*abstract*\" or \"*base*\" packages that most providers depend on.\n\nName       | Package | Features | Stats\n:--------- |:------- |:-------- |:-------\n[PHP common](https://github.com/geocoder-php/php-common) | `willdurand/geocoder` | Models, interfaces, exceptions etc | [![Latest Stable Version](https://poser.pugx.org/willdurand/geocoder/v/stable)](https://packagist.org/packages/willdurand/geocoder) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/willdurand/geocoder/downloads)](https://packagist.org/packages/willdurand/geocoder)\n[HTTP common](https://github.com/geocoder-php/php-common-http) | `geocoder-php/common-http` | `AbstractHttpProvider`, HTTPlug | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/common-http/v/stable)](https://packagist.org/packages/geocoder-php/common-http) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/common-http/downloads)](https://packagist.org/packages/geocoder-php/common-http)\n[Plugin](https://github.com/geocoder-php/plugin) | `geocoder-php/plugin` | Plugin provider | [![Latest Stable Version](https://poser.pugx.org/geocoder-php/plugin/v/stable)](https://packagist.org/packages/geocoder-php/plugin) \u003cbr\u003e[![Total Downloads](https://poser.pugx.org/geocoder-php/plugin/downloads)](https://packagist.org/packages/geocoder-php/plugin)\n\n## Special Geocoders and Providers\n\n### The Chain Provider\n\nThe `Chain` provider is a special provider that takes a list of providers and\niterates over this list to get information. Note that it **stops** its iteration\nwhen a provider returns a result. The result is returned by `GoogleMaps` because\n`FreeGeoIp` and `HostIp` cannot geocode street addresses. `BingMaps` is ignored.\n\n```php\nuse Geocoder\\Query\\GeocodeQuery;\n\n$geocoder = new \\Geocoder\\ProviderAggregator();\n$client  = new \\GuzzleHttp\\Client();\n\n$chain = new \\Geocoder\\Provider\\Chain\\Chain([\n    new \\Geocoder\\Provider\\FreeGeoIp\\FreeGeoIp($client),\n    new \\Geocoder\\Provider\\HostIp\\HostIp($client),\n    new \\Geocoder\\Provider\\GoogleMaps\\GoogleMaps($client, 'France'),\n    new \\Geocoder\\Provider\\BingMaps\\BingMaps($client, '\u003cAPI_KEY\u003e'),\n    // ...\n]);\n\n$geocoder-\u003eregisterProvider($chain);\n\n$result = $geocoder-\u003egeocodeQuery(GeocodeQuery::create('10 rue Gambetta, Paris, France'));\nvar_export($result);\n```\n\nEverything is ok, enjoy!\n\n### The ProviderAggregator\n\nThe `ProviderAggregator` is used to register several providers so that you can\ndecide which provider to use later on.\n\n```php\nuse Geocoder\\Query\\GeocodeQuery;\nuse Geocoder\\Query\\ReverseQuery;\n\n$client  = new \\GuzzleHttp\\Client();\n$geocoder = new \\Geocoder\\ProviderAggregator();\n\n$geocoder-\u003eregisterProviders([\n    new \\Geocoder\\Provider\\GoogleMaps\\GoogleMaps($client),\n    new \\Geocoder\\Provider\\GoogleMaps\\GoogleMapsBusiness($client, '\u003cCLIENT_ID\u003e'),\n    new \\Geocoder\\Provider\\Yandex\\Yandex($client),\n    new \\Geocoder\\Provider\\MaxMind\\MaxMind($client, '\u003cMAXMIND_API_KEY\u003e'),\n    new \\Geocoder\\Provider\\ArcGISOnline\\ArcGISOnline($client),\n]);\n\n$geocoder-\u003eregisterProvider(new \\Geocoder\\Provider\\Nominatim\\Nominatim($adapter, 'https://your.nominatim.server'));\n\n$geocoder\n    -\u003eusing('google_maps')\n    -\u003egeocodeQuery(GeocodeQuery::create( ... ));\n\n$geocoder\n    -\u003elimit(10)\n    -\u003ereverseQuery(ReverseQuery::fromCoordinates($lat, $lng));\n```\n\nThe `ProviderAggregator`'s API is fluent, meaning you can write:\n\n```php\nuse Geocoder\\Query\\GeocodeQuery;\n\n$locations = $geocoder\n    -\u003eregisterProvider(new \\My\\Provider\\Custom($adapter))\n    -\u003eusing('custom')\n    -\u003elimit(10)\n    -\u003egeocodeQuery(GeocodeQuery::create( ... ));\n```\n\nThe `using()` method allows you to choose the `provider` to use by its name.\nWhen you deal with multiple providers, you may want to choose one of them.  The\ndefault behavior is to use the first one but it can be annoying.\n\nThe `limit()` method allows you to configure the maximum number of results being\nreturned. Depending on the provider you may not get as many results as expected,\nit is a maximum limit, not the expected number of results.\n\n### TimedGeocoder\n\nThe `TimedGeocoder` class profiles each `geocode` and `reverse` call. So you can\neasily figure out how many time/memory was spent for each geocoder/reverse call.\n\n```php\nuse Geocoder\\Query\\GeocodeQuery;\n\n// configure your provider\n$provider = // ...\n\n$stopwatch = new \\Symfony\\Component\\Stopwatch\\Stopwatch();\n$geocoder = new \\Geocoder\\TimedGeocoder($provider, $stopwatch);\n\n$geocoder-\u003egeocodeQuery(GeocodeQuery::create('Paris, France'));\n\n// Now you can debug your application\n```\n\nWe use the [symfony/stopwatch](http://symfony.com/doc/current/components/stopwatch.html)\ncomponent under the hood. Which means, if you use the Symfony framework the\ngeocoder calls will appear in your timeline section in the Web Profiler.\n\n### StatefulGeocoder\n\nThe `StatefulGeocoder` class is great when you want your Geocoder to hold state. Say you want to configure locale,\nlimit or bounds in runtime. The `StatefulGeocoder` will append these values on each query.\n\n```php\nuse Geocoder\\Query\\GeocodeQuery;\n\n// configure your provider\n$provider = // ...\n$geocoder = new \\Geocoder\\StatefulGeocoder($provider);\n\n$geocoder-\u003esetLocale('en');\n$results = $geocoder-\u003egeocodeQuery(GeocodeQuery::create('London'));\necho $results-\u003efirst()-\u003egetLocality(); // London\n\n$geocoder-\u003esetLocale('es');\n$results = $geocoder-\u003egeocodeQuery(GeocodeQuery::create('London'));\necho $results-\u003efirst()-\u003egetLocality(); // Londres\n```\n\n## Dumpers\n\n**Geocoder** provides dumpers that aim to transform a `Location` object in\nstandard formats.\n\n### GPS eXchange Format (GPX)\n\nThe **GPS eXchange** format is designed to share geolocated data like point of\ninterests, tracks, ways, but also coordinates. **Geocoder** provides a dumper to\nconvert a `Location` object in an GPX compliant format.\n\nAssuming we got a `$location` object as seen previously:\n\n```php\n$dumper = new \\Geocoder\\Dumper\\Gpx();\n$strGpx = $dumper-\u003edump($location);\n\necho $strGpx;\n```\n\nIt will display:\n\n```xml\n\u003cgpx\n    version=\"1.0\"\n    creator=\"Geocoder\" version=\"1.0.1-dev\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xmlns=\"http://www.topografix.com/GPX/1/0\"\n    xsi:schemaLocation=\"http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd\"\u003e\n    \u003cbounds minlat=\"2.388911\" minlon=\"48.863151\" maxlat=\"2.388911\" maxlon=\"48.863151\"/\u003e\n    \u003cwpt lat=\"48.8631507\" lon=\"2.3889114\"\u003e\n        \u003cname\u003e\u003c![CDATA[Paris]]\u003e\u003c/name\u003e\n        \u003ctype\u003e\u003c![CDATA[Address]]\u003e\u003c/type\u003e\n    \u003c/wpt\u003e\n\u003c/gpx\u003e\n```\n\n### GeoJSON\n\n[GeoJSON](http://geojson.org/) is a format for encoding a variety of geographic\ndata structures.\n\n### GeoArray\n\nSimple PHP array format for using with your own encoders.\n\n### Keyhole Markup Language (KML)\n\n[Keyhole Markup Language](http://en.wikipedia.org/wiki/Keyhole_Markup_Language)\nis an XML notation for expressing geographic annotation and visualization within\nInternet-based, two-dimensional maps and three-dimensional Earth browsers.\n\n### Well-Known Binary (WKB)\n\nThe Well-Known Binary (WKB) representation for geometric values is defined by\nthe OpenGIS specification.\n\n### Well-Known Text (WKT)\n\nWell-known text (WKT) is a text markup language for representing vector geometry\nobjects on a map, spatial reference systems of spatial objects and\ntransformations between spatial reference systems.\n\n## Formatters\n\nA common use case is to print geocoded data. Thanks to the `StringFormatter`\nclass, it's simple to format a `Location` object as a string:\n\n```php\n// $location is an instance of Location\n$formatter = new \\Geocoder\\Formatter\\StringFormatter();\n\n$formatter-\u003eformat($location, '%S %n, %z %L');\n// 'Badenerstrasse 120, 8001 Zuerich'\n\n$formatter-\u003eformat($location, '\u003cp\u003e%S %n, %z %L\u003c/p\u003e');\n// '\u003cp\u003eBadenerstrasse 120, 8001 Zuerich\u003c/p\u003e'\n```\n\nHere is the mapping:\n\n* Street Number: `%n`\n* Street Name: `%S`\n* City (Locality): `%L`\n* City District (Sub-Locality): `%D`\n* Zipcode (Postal Code): `%z`\n* Admin Level Name: `%A1`, `%A2`, `%A3`, `%A4`, `%A5`\n* Admin Level Code: `%a1`, `%a2`, `%a3`, `%a4`, `%a5`\n* Country: `%C`\n* Country Code: `%c`\n* Timezone: `%T`\n\n## Versioning\n\nGeocoder follows [Semantic Versioning](http://semver.org/).\n\n### End Of Life\n\n#### 1.x\n\nAs of December 2014, branch `1.7` is not officially supported anymore, meaning\nmajor version `1` reached end of life. Last version is:\n[1.7.1](https://github.com/geocoder-php/Geocoder/releases/tag/1.7.1).\n\n#### 2.x\n\nAs of December 2014, version [2.x](https://github.com/geocoder-php/Geocoder/tree/2.x)\nis in a **feature frozen** state. All new features should be contributed to version 3.0\nand upper. Last version is:\n[2.8.1](https://github.com/geocoder-php/Geocoder/releases/tag/2.8.1).\n\nMajor version `2` will reach **end of life on December 2015**.\n\n#### 3.x\n\nAs of January 2017, version [3.x](https://github.com/geocoder-php/Geocoder/tree/3.x)\nis in a **feature frozen** state. All new features should be contributed to version 4.0\nand upper. Last version is:\n[3.3.2](https://github.com/geocoder-php/php-common/releases/tag/v3.3.2).\n\nMajor version `3` will reach **end of life on October 2017**.\n\n### Stable Version\n\nVersion `4.x` is the current major stable version of Geocoder.\n\n### Next version\n\nThere is no new major version planned at this time.\n\n## Contributing\n\nSee [`CONTRIBUTING`](https://github.com/geocoder-php/Geocoder/blob/master/CONTRIBUTING.md#contributing) file.\n\n## Unit Tests\n\nIn order to run the test suite, install the development dependencies:\n\n```cmd\ncomposer install --dev\n```\n\nThen, run the following command:\n\n```cmd\ncomposer test\n```\n\nYou'll obtain some _skipped_ unit tests due to the need of API keys.\n\nRename the `phpunit.xml.dist` file to `phpunit.xml`, then uncomment the\nfollowing lines and add your own API keys:\n\n```xml\n\u003cphp\u003e\n    \u003c!-- \u003cserver name=\"IPINFODB_API_KEY\" value=\"YOUR_API_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"BINGMAPS_API_KEY\" value=\"YOUR_API_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"GEOIPS_API_KEY\" value=\"YOUR_API_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"MAXMIND_API_KEY\" value=\"YOUR_API_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"GEONAMES_USERNAME\" value=\"YOUR_USERNAME\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"TOMTOM_MAP_KEY\" value=\"YOUR_MAP_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"GOOGLE_GEOCODING_KEY\" value=\"YOUR_GEOCODING_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"OPENCAGE_API_KEY\" value=\"YOUR_API_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"PICKPOINT_API_KEY\" value=\"YOUR_API_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"LOCATIONIQ_API_KEY\" value=\"YOUR_API_KEY\" /\u003e --\u003e\n    \u003c!-- \u003cserver name=\"IPSTACK_API_KEY\" value=\"YOUR_API_KEY\" /\u003e --\u003e\n\u003c/php\u003e\n```\n\nYou're done.\n\n## Credits\n\n* William Durand \u003cwill+git@drnd.me\u003e\n* Tobias Nyholm \u003ctobias.nyholm@gmail.com\u003e\n* [All contributors](https://github.com/geocoder-php/Geocoder/contributors)\n\n## License\n\nGeocoder is released under the MIT License. See the bundled LICENSE file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeocoder-php%2Fgeocoder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeocoder-php%2Fgeocoder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeocoder-php%2Fgeocoder/lists"}