All Versions
Latest Version
Avg Release Cycle
121 days
Latest Release
86 days ago

Changelog History
Page 1

  • v4.1.0

    July 04, 2020
    • ⬇️ Dropped support for PHP < 7.2
    • ➕ Added: Coordinates::toArray
    • ⚡️ Changed: Update namespaces
    • 🔄 Changed: Make sure we never use a country with name AND code as null
  • v4.0.0

    August 01, 2017
    • ⬇️ Dropped support for PHP < 7
    • Introduced GeocodeQuery and ReverseQuery.
    • ⚡️ Provider and Geocoder interfaces has been updated to use query objects
    • All providers are stateless and immutable.
    • Moved all providers to new namespaces. Previous Geocoder\Provider\BingMaps is now located at Geocoder\Provider\BingMaps\BingMaps
    • ➕ Added: Interface for Geocoder\Model\AddressCollection called Geocoder\Collection. Public APIs are updated to type hint for Geocoder\GeocoderResult.
    • ➕ Added: Interface for Geocoder\Model\Address called Geocoder\Location. Public APIs are updated to type hint for Geocoder\Location.
    • ➕ Added: GeoArray dumper
    • ➕ Added: Collection::isEmpty
    • 🔄 Changed: Location::getCoordinates will return null or a Coordinates object with coordinates data. It will never return Coordinates without data.
    • 🔄 Changed: Location::getBounds will return null or a Bounds object with coordinates data. It will never return Bounds without data.
    • 🔄 Changed: Support for unsecure transfer protocol was removed. The providers only support HTTPS.
    • 🔄 Changed: Using PSR-4 instead of PSR-0 for autoloading.
    • 🛠 Fixed: ArcGISOnline's street address should not contain city and country.
    • ✂ Removed: AdminLevel::toString in favor for AdminLevel::__toString.
    • ✂ Removed: Country::toString in favor for Country::__toString.
    • ✂ Removed: Address::getCountryCode in favor for Address::getCountry()->getCode().
    • ✂ Removed: Address::getLongitude in favor for Address::getCoordinates()->getLongitude().
    • ✂ Removed: Address::getLatitude in favor for Address::getCoordinates()->getLatitude().
    • ✂ Removed: Bounds::isDefined as it is always defined.
    • ✂ Removed: The following exception was removed: ZeroResults, ChainZeroResults, HttpError, UnexpectedValue
  • v3.3.0

    December 06, 2015

    This version officially supports PHP 7.0.


    • ➕ Added: timezone field for FreeGeoIp provider
    • ➕ Added: guess method for street and suburb
    • ➕ Added: use city, town village or hamlet as locality
    • ➕ Added: return ISO 3166-2 region codes for the US and the rest of the world
    • 🛠 Fixed: AdminLevelCollection::checkLevel() (#468)
  • v3.2.0

    October 09, 2015
    • ➕ Added: add __toString() methods in AdminLevel and Country
    • ➕ Added: __toString()toStreamInterface` mock
    • 🛠 Fixed: postal code for GeoIP2 provider
    • 🛠 Fixed: Make sure we check for an error in the response of the Yandex provider
    • 🛠 Fixed: emergency message "You need to specify the country and region codes."

    Thank you to all contributors!

  • v3.1.0

    August 13, 2015
    • ➕ Added: show more API error messages in GoogleMaps
    • 🛠 Fixed: require http-adapter ~0.8
    • 🛠 Fixed: use https transport in Yandex provider (#431)
    • 📚 Updated: documentation
  • v3.0.0

    April 20, 2015


    After three alpha versions, I am really happy to announce the immediate availability of Geocoder v3 🔥

    🚀 All changes are described in the different pre-release pages:

    📚 The GitHub documentation is up to date, and the website will be updated soon.

    Thank you to all contributors ❤️❤️❤️

  • v3.0.0-alpha3

    February 13, 2015

    🚀 This is the new 3.0.0 pre-release , including the following changes:

    • ➕ Added: LocaleTrait to reduce code duplication
    • ➕ Added: introduce admin levels concept (see PR #398)
    • 🛠 Fixed: GeoIP2 results use underscore case
    • 🚀 Merged: branch '2.x' (see releases 2.8.1 and 2.8.2 for more details)
  • v3.0.0-alpha2

    December 22, 2014

    🚀 This is the new 3.0.0 pre-release , including the following changes:

    • ➕ Added: Introduce AddressCollection class
    • ➕ Added: new documentation
  • v3.0.0-alpha1

    December 18, 2014


    I am proud to announce that we are ready to ship the next major version of Geocoder: 3.0.0. This is a pre-release which will help us ensure everything works smoothly. We are currently working hard on making Geocoder related projects compatible with this new version, hence the need for a pre-release version.

    Basically, we changed almost everything in this library but its simplicity and its robustness have been kept. Since 2012, Geocoder provides a powerful API to perform geocoding actions in PHP. However, things in PHP evolved a lot, and we decided to refactor the lib to be more flexible , and even more powerful.

    🔧 For instance, providers are now highly configurable and Geocoder leverages a third-party library implementing PSR-7.

    ⚡️ Update: the main idea behind this was to introduce a dependency to PSR-7 interfaces, and to avoid the NIH syndrom. The http-adapter library is a great one, and Geocoder is not about dealing with HTTP, it is about geocoding stuff.

    Geocoder 3.0.0 contains less code than previously, 49 classes, 5 interfaces and less than 5300 lines of code for the code (tests are not included here). As a matter of fact, Geocoder 2.x has 56 classes and 6500 lines of code. Removing code was a challenge as we did not want to remove features from this library. We rather re-organized Geocoder to fit its initial goal: providing a simple yet powerful way to geocode street and IP addresses, with the ability to switch from one provider to another with ease. Geocoder Extra contains alternative providers that are not worldwide and therefore less used. Again, we did not remove anything.

    🆕 New features have been added, such as the TimedGeocoder implementation and a better model layer. You will find all details in the CHANGELOG below.

    📚 The documentation, which has been rewritten, also contains a description of Geocoder's versioning strategy, and we are proud to have a Contributor Code of Conduct, because the lack of diversity in Open Source is not acceptable.

    Help us making Geocoder 3.0.0 really stable by giving this very first pre-release a try!

    Last but not the least, THANK YOU to all contributors!!! 💛 💙 ❤️ 💚 🚢 ⭐️ 🌟💙 🌠 💝

    Let's celebrate now!

    Full Changelog

    • ➕ Added: using() method now throws an exception if provider not found
    • ➕ Added: new Result classes (Address, Bounds, Region, Country, County, Coordinates)
    • ➕ Added: new named exceptions
    • ➕ Added: better exception messages
    • ➕ Added: new HTTP layer thanks to egeloen/http-adapter library
    • ➕ Added: TimedGeocoder implementation (works with StopWatch Symfony component)
    • ➕ Added: AbstractHttpProvider (extending AbstractProvider)
    • ➕ Added: provide a way to use IpInfoDB country precision
    • ➕ Added: cached responses for BingMaps provider (tests)
    • ➕ Added: cached reponse for GoogleMaps provider (tests)
    • ➕ Added: ProviderAggregator (replacing the former Geocoder class)
    • ➕ Added: ability to change providers locale at runtime
    • 📚 Documentation: almost entirely rewritten
    • 📚 Documentation: a note on versioning has been added
    • 📚 Documentation: a Contributor Code of Conduct has been added for the entire
      Geocoder project
    • 🛠 Fixed: phpdoc, wording
    • 🛠 Fixed: providers are now highly configurable, even at runtime
    • 🛠 Fixed: FreeGeoIp property because of an API change
    • 🚚 Moved: IGN OpenLS provider to geocoder-extra (#339)
    • 🚚 Moved: OIORest provider to geocoder-extra (#336)
    • 🚚 Moved: provider to geocoder-extra (#338)
    • 🚚 Moved: provider to geocoder-extra (#337)
    • 🚚 Moved: DataScienceToolkit provider to geocoder-extra (#340)
    • 🚚 Moved: Baidu provider to geocoder-extra (#341)
    • 🚚 Moved: IpGeoBase provider to geocoder-extra (#342)
    • 📇 Renamed: properties such as:
      • city => locality
      • cityDistrict => subLocality
      • zipcode => postalCode
    • ♻️ Refactored: dumpers (remove Interface suffix, define a new method signature)
    • ♻️ Refactored: class names!
    • ♻️ Refactored: all providers now implement the Geocoder interface
    • ♻️ Refactored: exception messages are a bit more verbose
    • ✂ Removed: Provider, Dumper, Interface, and Exception suffixes
    • ✂ Removed: autoload.php file
    • ✂ Removed: OpenStreetMapsProvider class (#335)
    • ✂ Removed: HTTP adapters layer
    • ✂ Removed: the Geocoder class does not exist anymore and has been replaced by
      the ProviderAggregator class
  • v2.8.2

    January 07, 2015
    • 🛠 Fixed: encoding issue for maxmind provider