[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8449":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":21,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":16,"starSnapshotCount":16,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},8449,"Geocoder","geocoder-php\u002FGeocoder","geocoder-php","The most featured Geocoder library written in PHP.","https:\u002F\u002Fgeocoder-php.org",null,"PHP",3975,520,125,48,0,60.15,"MIT License",false,"master",true,[23],"geocoder","2026-06-12 04:00:39","# Geocoder\n\n[![Geocoder](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Factions\u002Fworkflows\u002Fphp.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Factions\u002Fworkflows\u002Fphp.yml)\n[![Software License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-brightgreen.svg?style=flat-square)](LICENSE)\n\n> **Important:** You are browsing the documentation of Geocoder **4.x**.\n>\n> Documentation for version **3.x** is available here: [Geocoder 3.x\n> documentation](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Fblob\u002F3.x\u002FREADME.md).\n>\n> Documentation for version **2.x** is available here: [Geocoder 2.x\n> documentation](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Fblob\u002F2.x\u002FREADME.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:\u002F\u002Fpackagist.org\u002Fproviders\u002Fgeocoder-php\u002Fprovider-implementation) you want to use\n2) What [HTTP client\u002Fadapter](https:\u002F\u002Fpackagist.org\u002Fproviders\u002Fpsr\u002Fhttp-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:\u002F\u002Fpackagist.org\u002Fproviders\u002Fgeocoder-php\u002Fprovider-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:\u002F\u002Fwww.php-fig.org\u002Fpsr\u002Fpsr-18\u002F)\nwhich defines how HTTP message should be sent and received. You can use any library to send HTTP messages\nthat implements [psr\u002Fhttp-client-implementation](https:\u002F\u002Fpackagist.org\u002Fproviders\u002Fpsr\u002Fhttp-client-implementation).\n\nRead more about PSR-18 in [this blog](https:\u002F\u002Fwww.php-fig.org\u002Fblog\u002F2018\u002F11\u002Fpsr-18-the-php-standard-for-http-clients\u002F).\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\u002Fgoogle-maps-provider guzzlehttp\u002Fguzzle\n```\n\nOr using the curl client (you'll need to provide a PSR7 implementation such as `nyholm\u002Fpsr7` if not using Guzzle)\n\n```cmd\ncomposer require geocoder-php\u002Fgoogle-maps-provider php-http\u002Fcurl-client nyholm\u002Fpsr7\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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoderLaravel) | `geocoder-php\u002FGeocoderLaravel` | [![GitHub release](https:\u002F\u002Fposer.pugx.org\u002Ftoin0u\u002Fgeocoder-laravel\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Ftoin0u\u002Fgeocoder-laravel) [![Packagist](https:\u002F\u002Fposer.pugx.org\u002Ftoin0u\u002Fgeocoder-laravel\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Ftoin0u\u002Fgeocoder-laravel)\n[Symfony](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FBazingaGeocoderBundle) | `geocoder-php\u002FBazingaGeocoderBundle` | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fwilldurand\u002Fgeocoder-bundle\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fwilldurand\u002Fgeocoder-bundle) [![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fwilldurand\u002Fgeocoder-bundle\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fwilldurand\u002Fgeocoder-bundle)\n\n## Cookbook\n\nWe have a small cookbook where you can find examples on common use cases:\n\n* [Caching responses](\u002Fdocs\u002Fcookbook\u002Fcache.md)\n* [Configuring the HTTP client](\u002Fdocs\u002Fcookbook\u002Fhttp-client.md)\n* [Rate limiting API requests](\u002Fdocs\u002Fcookbook\u002Frate-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->geocodeQuery(GeocodeQuery::create('Buckingham Palace, London'));\n$result = $geocoder->reverseQuery(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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fcache-provider) | `geocoder-php\u002Fcache-provider` | Wraps a provider and cached the results | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fcache-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fcache-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fcache-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fcache-provider)\n[Chain](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fchain-provider) | `geocoder-php\u002Fchain-provider` | Iterates over multiple providers | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fchain-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fchain-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fchain-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fchain-provider)\n\n### Address\n\n#### World\n\nProvider       | Package | Features | Stats\n:------------- |:------- |:-------- |:-------\n[Algolia Places](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Falgolia-places-provider) | `geocoder-php\u002Falgolia-places-provider` | address \u003Cbr> [Website](https:\u002F\u002Fcommunity.algolia.com\u002Fplaces\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Falgolia-places-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Falgolia-places-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Falgolia-places-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Falgolia-places-provider)\n[ArcGIS Online](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Farcgis-online-provider) | `geocoder-php\u002Farcgis-online-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fdevelopers.arcgis.com\u002Fen\u002Ffeatures\u002Fgeocoding\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Farcgis-online-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Farcgis-online-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Farcgis-online-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Farcgis-online-provider)\n[Azure Maps](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fazure-maps-provider) | `geocoder-php\u002Fazure-maps-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fazure-maps\u002Ftutorial-search-location) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fazure-maps-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fazure-maps-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fazure-maps-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fazure-maps-provider)\n[Bing Maps](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fbing-maps-provider) | `geocoder-php\u002Fbing-maps-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Fmsdn.microsoft.com\u002Fen-us\u002Flibrary\u002Fff701713.aspx) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fbing-maps-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fbing-maps-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fbing-maps-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fbing-maps-provider)\n[Geocode Earth](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fgeocode-earth-provider) | `geocoder-php\u002Fgeocode-earth-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fgeocode.earth\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgeocode-earth-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgeocode-earth-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgeocode-earth-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgeocode-earth-provider)\n[Geonames](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fgeonames-provider) | `geocoder-php\u002Fgeonames-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Fwww.geonames.org\u002Fcommercial-webservices.html) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgeonames-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgeonames-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgeonames-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgeonames-provider)\n[Google Maps](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fgoogle-maps-provider) \u003Cbr> Google Maps for business | `geocoder-php\u002Fgoogle-maps-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fdevelopers.google.com\u002Fmaps\u002Fdocumentation\u002Fgeocoding\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgoogle-maps-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgoogle-maps-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgoogle-maps-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgoogle-maps-provider)\n[Google Maps Places](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fgoogle-maps-places-provider) | `geocoder-php\u002Fgoogle-maps-places-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fdevelopers.google.com\u002Fplaces\u002Fweb-service\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgoogle-maps-places-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgoogle-maps-places-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgoogle-maps-places-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgoogle-maps-places-provider)\n[GraphHopper](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fgraphhopper-provider) | `geocoder-php\u002Fgraphhopper-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fdocs.graphhopper.com\u002F#tag\u002FGeocoding-API) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgraphhopper-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgraphhopper-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgraphhopper-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgraphhopper-provider)\n[Here](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fhere-provider) | `geocoder-php\u002Fhere-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fdeveloper.here.com\u002Fdocumentation\u002Fgeocoder\u002Ftopics\u002Fquick-start-geocode.html) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fhere-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fhere-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fhere-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fhere-provider)\n[LocationIQ](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Flocationiq-provider) | `geocoder-php\u002Flocationiq-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Flocationiq.org\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Flocationiq-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Flocationiq-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Flocationiq-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Flocationiq-provider)\n[Mapbox](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fmapbox-provider) | `geocoder-php\u002Fmapbox-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fwww.mapbox.com\u002Fgeocoding\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmapbox-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmapbox-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmapbox-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmapbox-provider)\n[MapQuest](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fmapquest-provider) | `geocoder-php\u002Fmapquest-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Fdeveloper.mapquest.com\u002Fweb\u002Fproducts\u002Fdev-services\u002Fgeocoding-ws) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmapquest-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmapquest-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmapquest-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmapquest-provider)\n[MapTiler](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fmaptiler-provider) | `geocoder-php\u002Fmaptiler-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fwww.maptiler.com\u002Fcloud\u002Fgeocoding\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmaptiler-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmaptiler-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmaptiler-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmaptiler-provider)\n[Nominatim](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fnominatim-provider) \u003Cbr> (OpenStreetMap) | `geocoder-php\u002Fnominatim-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Fwiki.openstreetmap.org\u002Fwiki\u002FNominatim) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fnominatim-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fnominatim-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fnominatim-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fnominatim-provider)\n[OpenCage](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fopen-cage-provider) | `geocoder-php\u002Fopen-cage-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fopencagedata.com\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fopen-cage-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fopen-cage-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fopen-cage-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fopen-cage-provider)\n[OpenRouteService](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fopenrouteservice-provider) | `geocoder-php\u002Fopenrouteservice-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fopenrouteservice.org\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fopenrouteservice-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fopenrouteservice-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fopenrouteservice-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fopenrouteservice-provider)\n[Pelias](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fpelias-provider) | `geocoder-php\u002Fpelias-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fpelias.io\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fpelias-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fpelias-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fpelias-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fpelias-provider)\n[Photon](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fphoton-provider) | `geocoder-php\u002Fphoton-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fphoton.komoot.de\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fphoton-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fphoton-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fphoton-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fphoton-provider)\n[PickPoint](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fpickpoint-provider) | `geocoder-php\u002Fpickpoint-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fpickpoint.io\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fpickpoint-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fpickpoint-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fpickpoint-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fpickpoint-provider)\n[TomTom](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Ftomtom-provider) | `geocoder-php\u002Ftomtom-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fgeocoder.tomtom.com\u002Fapp\u002Fview\u002Findex) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Ftomtom-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Ftomtom-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Ftomtom-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Ftomtom-provider)\n[Yandex](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fyandex-provider) | `geocoder-php\u002Fyandex-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Fapi.yandex.com\u002Fmaps\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fyandex-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fyandex-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fyandex-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fyandex-provider)\n\n#### Local\n\nRegion  | Provider      | Package | Features | Stats\n:------ |:------------- |:------- |:-------- |:-------\n:belgium: | [bpost](https:\u002F\u002Fgithub.com\u002Fgeo6\u002Fgeocoder-php-bpost-provider) (third-party package*) | `geo6\u002Fgeocoder-php-bpost-provider` | address \u003Cbr> [Website](https:\u002F\u002Fwww.bpost.be\u002Fsite\u002Fen\u002Fwebservice-address) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-bpost-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-bpost-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-bpost-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-bpost-provider)\n:belgium: | [GeoPunt](https:\u002F\u002Fgithub.com\u002Fgeo6\u002Fgeocoder-php-geopunt-provider) (third-party package*) | `geo6\u002Fgeocoder-php-geopunt-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Floc.geopunt.be\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-geopunt-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-geopunt-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-geopunt-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-geopunt-provider)\n:belgium: | [Service Public de Wallonie](https:\u002F\u002Fgithub.com\u002Fgeo6\u002Fgeocoder-php-spw-provider) (third-party package*) | `geo6\u002Fgeocoder-php-spw-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Fgeoservices.wallonie.be\u002Fgeolocalisation\u002Fdoc\u002Fws\u002Findex.xhtml) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-spw-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-spw-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-spw-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-spw-provider)\n:belgium: | [UrbIS](https:\u002F\u002Fgithub.com\u002Fgeo6\u002Fgeocoder-php-urbis-provider) (third-party package*) | `geo6\u002Fgeocoder-php-urbis-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Fgeoservices.irisnet.be\u002Flocalization\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-urbis-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-urbis-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-urbis-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-urbis-provider)\n:fr: | [Addok](https:\u002F\u002Fgithub.com\u002Fgeo6\u002Fgeocoder-php-addok-provider) (third-party package*) | `geo6\u002Fgeocoder-php-addok-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fadresse.data.gouv.fr\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-addok-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-addok-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeo6\u002Fgeocoder-php-addok-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeo6\u002Fgeocoder-php-addok-provider)\n:luxembourg: | [Geoportail.lu](https:\u002F\u002Fgithub.com\u002Ffrantzmiccoli\u002Fgeocoder-php-geoportail-lu) (third-party package*) | `frantzmicccoli\u002Fgeocoder-php-geoportail-lu` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fgeoportail.lu\u002Fen\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Ffrantzmicccoli\u002Fgeocoder-php-geoportail-lu\u002Fv\u002Fstable)](https:\u002F\u002Fposer.pugx.org\u002Ffrantzmicccoli\u002Fgeocoder-php-geoportail-lu) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Ffrantzmicccoli\u002Fgeocoder-php-geoportail-lu\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Ffrantzmicccoli\u002Fgeocoder-php-geoportail-lu)\n:netherlands: | [Nationaal Georegister](https:\u002F\u002Fgithub.com\u002Fswisnl\u002Fgeocoder-php-nationaal-georegister-provider) (third-party package*) | `swisnl\u002Fgeocoder-php-nationaal-georegister-provider` | address, reverse \u003Cbr> [Website](https:\u002F\u002Fgeodata.nationaalgeoregister.nl\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fswisnl\u002Fgeocoder-php-nationaal-georegister-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fswisnl\u002Fgeocoder-php-nationaal-georegister-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fswisnl\u002Fgeocoder-php-nationaal-georegister-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fswisnl\u002Fgeocoder-php-nationaal-georegister-provider)\n:ru: | [Sputnik](https:\u002F\u002Fgithub.com\u002Fdemollc\u002Fsputnik-provider) (third-party package*) | `demollc\u002Fsputnik-provider` | address, reverse \u003Cbr> [Website](http:\u002F\u002Fapi.sputnik.ru\u002Fmaps\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fdemollc\u002Fsputnik-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fdemollc\u002Fsputnik-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fdemollc\u002Fsputnik-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fdemollc\u002Fsputnik-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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Ffree-geoip-provider) | `geocoder-php\u002Ffree-geoip-provider` | IPv4, IPv6 \u003Cbr> [Website](https:\u002F\u002Ffreegeoip.app\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Ffree-geoip-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Ffree-geoip-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Ffree-geoip-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Ffree-geoip-provider)\n[GeoIP2](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fgeoip2-provider) | `geocoder-php\u002Fgeoip2-provider` | IPv4 \u003Cbr> [Website](https:\u002F\u002Fwww.maxmind.com\u002Fen\u002Fgeoip2-databases) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgeoip2-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgeoip2-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgeoip2-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgeoip2-provider)\n[GeoPlugin](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fgeo-plugin-provider) | `geocoder-php\u002Fgeo-plugin-provider` | IPv4, IPv6 \u003Cbr> [Website](http:\u002F\u002Fwww.geoplugin.com\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgeo-plugin-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgeo-plugin-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fgeo-plugin-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fgeo-plugin-provider)\n[HostIp](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fhost-ip-provider) | `geocoder-php\u002Fhost-ip-provider` | IPv4 \u003Cbr> [Website](http:\u002F\u002Fwww.hostip.info\u002Fuse.html) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fhost-ip-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fhost-ip-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fhost-ip-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fhost-ip-provider)\n[IP2Location](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fip2location-provider) | `geocoder-php\u002Fip2location-provider` | IPv4, IPv6 \u003Cbr> [Website](https:\u002F\u002Fwww.ip2location.com\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fip2location-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fip2location-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fip2location-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fip2location-provider)\n[IP2Location Binary](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fip2location-binary-provider) | `geocoder-php\u002Fip2location-binary-provider` | IPv4, IPv6 \u003Cbr> [Website](https:\u002F\u002Fwww.ip2location.com\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fip2location-binary-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fip2location-binary-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fip2location-binary-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fip2location-binary-provider)\n[IpInfo](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fip-info-provider) | `geocoder-php\u002Fip-info-provider` | IPv4, IPv6 \u003Cbr> [Website](https:\u002F\u002Fipinfo.io\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fip-info-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fip-info-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fip-info-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fip-info-provider)\n[IpInfoDB](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fip-info-db-provider) | `geocoder-php\u002Fip-info-db-provider` | IPv4 \u003Cbr> [Website](http:\u002F\u002Fipinfodb.com\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fip-info-db-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fip-info-db-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fip-info-db-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fip-info-db-provider)\n[ipstack](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fipstack-provider) | `geocoder-php\u002Fipstack-provider` | IPv4, IPv6 \u003Cbr> [Website](https:\u002F\u002Fipstack.com\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fipstack-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fipstack-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fipstack-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fipstack-provider)\n[MaxMind](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fmaxmind-provider) | `geocoder-php\u002Fmaxmind-provider` | IPv4, IPv6 \u003Cbr> [Website](https:\u002F\u002Fwww.maxmind.com\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmaxmind-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmaxmind-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmaxmind-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmaxmind-provider)\n[MaxMind Binary](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fmaxmind-binary-provider) | `geocoder-php\u002Fmaxmind-binary-provider` | IPv4, IPv6 \u003Cbr> [Website](https:\u002F\u002Fwww.maxmind.com\u002F) | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmaxmind-binary-provider\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmaxmind-binary-provider) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fmaxmind-binary-provider\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fmaxmind-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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fphp-common) | `willdurand\u002Fgeocoder` | Models, interfaces, exceptions etc | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fwilldurand\u002Fgeocoder\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fwilldurand\u002Fgeocoder) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fwilldurand\u002Fgeocoder\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fwilldurand\u002Fgeocoder)\n[HTTP common](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fphp-common-http) | `geocoder-php\u002Fcommon-http` | `AbstractHttpProvider`, HTTPlug | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fcommon-http\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fcommon-http) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fcommon-http\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fcommon-http)\n[Plugin](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fplugin) | `geocoder-php\u002Fplugin` | Plugin provider | [![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fplugin\u002Fv\u002Fstable)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fplugin) \u003Cbr>[![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fgeocoder-php\u002Fplugin\u002Fdownloads)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fgeocoder-php\u002Fplugin)\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>'),\n    \u002F\u002F ...\n]);\n\n$geocoder->registerProvider($chain);\n\n$result = $geocoder->geocodeQuery(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->registerProviders([\n    new \\Geocoder\\Provider\\GoogleMaps\\GoogleMaps($client),\n    new \\Geocoder\\Provider\\GoogleMaps\\GoogleMapsBusiness($client, '\u003CCLIENT_ID>'),\n    new \\Geocoder\\Provider\\Yandex\\Yandex($client),\n    new \\Geocoder\\Provider\\MaxMind\\MaxMind($client, '\u003CMAXMIND_API_KEY>'),\n    new \\Geocoder\\Provider\\ArcGISOnline\\ArcGISOnline($client),\n]);\n\n$geocoder->registerProvider(new \\Geocoder\\Provider\\Nominatim\\Nominatim($adapter, 'https:\u002F\u002Fyour.nominatim.server'));\n\n$geocoder\n    ->using('google_maps')\n    ->geocodeQuery(GeocodeQuery::create( ... ));\n\n$geocoder\n    ->limit(10)\n    ->reverseQuery(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    ->registerProvider(new \\My\\Provider\\Custom($adapter))\n    ->using('custom')\n    ->limit(10)\n    ->geocodeQuery(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\u002Fmemory was spent for each geocoder\u002Freverse call.\n\n```php\nuse Geocoder\\Query\\GeocodeQuery;\n\n\u002F\u002F configure your provider\n$provider = \u002F\u002F ...\n\n$stopwatch = new \\Symfony\\Component\\Stopwatch\\Stopwatch();\n$geocoder = new \\Geocoder\\TimedGeocoder($provider, $stopwatch);\n\n$geocoder->geocodeQuery(GeocodeQuery::create('Paris, France'));\n\n\u002F\u002F Now you can debug your application\n```\n\nWe use the [symfony\u002Fstopwatch](http:\u002F\u002Fsymfony.com\u002Fdoc\u002Fcurrent\u002Fcomponents\u002Fstopwatch.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\u002F\u002F configure your provider\n$provider = \u002F\u002F ...\n$geocoder = new \\Geocoder\\StatefulGeocoder($provider);\n\n$geocoder->setLocale('en');\n$results = $geocoder->geocodeQuery(GeocodeQuery::create('London'));\necho $results->first()->getLocality(); \u002F\u002F London\n\n$geocoder->setLocale('es');\n$results = $geocoder->geocodeQuery(GeocodeQuery::create('London'));\necho $results->first()->getLocality(); \u002F\u002F 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->dump($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:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance\"\n    xmlns=\"http:\u002F\u002Fwww.topografix.com\u002FGPX\u002F1\u002F0\"\n    xsi:schemaLocation=\"http:\u002F\u002Fwww.topografix.com\u002FGPX\u002F1\u002F0 http:\u002F\u002Fwww.topografix.com\u002FGPX\u002F1\u002F0\u002Fgpx.xsd\">\n    \u003Cbounds minlat=\"2.388911\" minlon=\"48.863151\" maxlat=\"2.388911\" maxlon=\"48.863151\"\u002F>\n    \u003Cwpt lat=\"48.8631507\" lon=\"2.3889114\">\n        \u003Cname>\u003C![CDATA[Paris]]>\u003C\u002Fname>\n        \u003Ctype>\u003C![CDATA[Address]]>\u003C\u002Ftype>\n    \u003C\u002Fwpt>\n\u003C\u002Fgpx>\n```\n\n### GeoJSON\n\n[GeoJSON](http:\u002F\u002Fgeojson.org\u002F) 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:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKeyhole_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\u002F\u002F $location is an instance of Location\n$formatter = new \\Geocoder\\Formatter\\StringFormatter();\n\n$formatter->format($location, '%S %n, %z %L');\n\u002F\u002F 'Badenerstrasse 120, 8001 Zuerich'\n\n$formatter->format($location, '\u003Cp>%S %n, %z %L\u003C\u002Fp>');\n\u002F\u002F '\u003Cp>Badenerstrasse 120, 8001 Zuerich\u003C\u002Fp>'\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:\u002F\u002Fsemver.org\u002F).\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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Freleases\u002Ftag\u002F1.7.1).\n\n#### 2.x\n\nAs of December 2014, version [2.x](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Ftree\u002F2.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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Freleases\u002Ftag\u002F2.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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Ftree\u002F3.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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002Fphp-common\u002Freleases\u002Ftag\u002Fv3.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:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Fblob\u002Fmaster\u002FCONTRIBUTING.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>\n    \u003C!-- \u003Cserver name=\"IPINFODB_API_KEY\" value=\"YOUR_API_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"BINGMAPS_API_KEY\" value=\"YOUR_API_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"GEOIPS_API_KEY\" value=\"YOUR_API_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"MAXMIND_API_KEY\" value=\"YOUR_API_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"GEONAMES_USERNAME\" value=\"YOUR_USERNAME\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"TOMTOM_MAP_KEY\" value=\"YOUR_MAP_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"GOOGLE_GEOCODING_KEY\" value=\"YOUR_GEOCODING_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"OPENCAGE_API_KEY\" value=\"YOUR_API_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"PICKPOINT_API_KEY\" value=\"YOUR_API_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"LOCATIONIQ_API_KEY\" value=\"YOUR_API_KEY\" \u002F> -->\n    \u003C!-- \u003Cserver name=\"IPSTACK_API_KEY\" value=\"YOUR_API_KEY\" \u002F> -->\n\u003C\u002Fphp>\n```\n\nYou're done.\n\n## Credits\n\n* William Durand \u003Cwill+git@drnd.me>\n* Tobias Nyholm \u003Ctobias.nyholm@gmail.com>\n* [All contributors](https:\u002F\u002Fgithub.com\u002Fgeocoder-php\u002FGeocoder\u002Fcontributors)\n\n## License\n\nGeocoder is released under the MIT License. See the bundled LICENSE file for details.\n","Geocoder 是一个用 PHP 编写的地理编码库，旨在帮助开发者构建地理位置感知的应用程序。它提供了一个强大的抽象层，支持多种地理编码服务提供商和 HTTP 客户端适配器。用户可以根据需求选择合适的地理编码提供商（如 Google Maps）以及符合 PSR-18 标准的 HTTP 客户端（如 Guzzle 或 cURL）。此外，该项目还提供了与 Laravel 等主流 PHP 框架的集成方案，方便在 Web 应用中快速启用地理编码功能。适用于需要处理地址解析、坐标转换等地理信息处理场景的 PHP 项目。",2,"2026-06-11 03:18:06","top_language"]