Location & countries

Tiger_Location is one capability-based, provider-agnostic facade for everything geographic — so your form doesn't care who answered.

One facade, three capabilities

  • Address autocomplete / geocode — text → structured places.
  • Reverse geocode — lat/lng → an address.
  • IP geolocation — an IP → a coarse location (used to pre-fill a country).

Adapters (extend Tiger_Location_Adapter_Abstract) declare which operations they support; the facade routes each call to the configured, capable provider and returns the same normalized Tiger_Location_Place every time.

Adapters, config-driven and graceful

Ships adapters for Nominatim/OSM (free, key-less — the default), AWS Location Service (SigV4-signed), and IP geolocation. tiger.location.address.provider / .ip.provider pick the provider per operation group. An unset or incapable provider yields empty results, never a fatal — an unconfigured form just quietly does nothing. Add a provider with Tiger_Location::register().

Public read access is via Tiger_Service_Location (guest-allowed) — it powers the signup address autocomplete and IP-based country pre-fill (the IP lookup is locked to the requester's own address).

Countries

Tiger_I18n_Country gives a biased, localized country list: ISO alpha-2/-3 from a lazy country.ini, names resolved via country.<ISO2> translation keys (with a CLDR fallback), and a sort bias so common countries float to the top of the picker.

See also

  • Localization — how country names localize.
  • Forms — the signup form's address autocomplete + country picker.