-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple reverse geocoding using OpenStreeMap -- -- Simple reverse geocoding using OpenStreeMap @package reverse-geocoding @version 0.2.4.0 module Data.Geolocation.Reverse.Types -- | Input types -- -- Latitude : newtype over double newtype Latitude Latitude :: (Maybe Double) -> Latitude -- | Longitude : newtype over double newtype Longitude Longitude :: (Maybe Double) -> Longitude -- | Output types newtype City City :: Text -> City [getCity] :: City -> Text newtype Suburb Suburb :: Text -> Suburb [getSuburb] :: Suburb -> Text newtype Street Street :: Text -> Street [getStreet] :: Street -> Text newtype Postcode Postcode :: Text -> Postcode [getPostcode] :: Postcode -> Text -- | Parsed Location Info: Country code and city are mandatory, all other -- info is optional data ParsedLocationInfo ParsedLocationInfo :: CountryCode -> City -> Maybe Suburb -> Maybe Street -> Maybe Postcode -> ParsedLocationInfo [parsedCountry] :: ParsedLocationInfo -> CountryCode [parsedCity] :: ParsedLocationInfo -> City [parsedSuburb] :: ParsedLocationInfo -> Maybe Suburb [parsedStreet] :: ParsedLocationInfo -> Maybe Street [parsedPostCode] :: ParsedLocationInfo -> Maybe Postcode instance GHC.Show.Show Data.Geolocation.Reverse.Types.ParsedLocationInfo instance GHC.Classes.Ord Data.Geolocation.Reverse.Types.ParsedLocationInfo instance GHC.Classes.Eq Data.Geolocation.Reverse.Types.ParsedLocationInfo instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Postcode instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Postcode instance GHC.Read.Read Data.Geolocation.Reverse.Types.Postcode instance GHC.Show.Show Data.Geolocation.Reverse.Types.Postcode instance GHC.Classes.Ord Data.Geolocation.Reverse.Types.Postcode instance GHC.Classes.Eq Data.Geolocation.Reverse.Types.Postcode instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Street instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Street instance GHC.Read.Read Data.Geolocation.Reverse.Types.Street instance GHC.Show.Show Data.Geolocation.Reverse.Types.Street instance GHC.Classes.Ord Data.Geolocation.Reverse.Types.Street instance GHC.Classes.Eq Data.Geolocation.Reverse.Types.Street instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Suburb instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Suburb instance GHC.Read.Read Data.Geolocation.Reverse.Types.Suburb instance GHC.Show.Show Data.Geolocation.Reverse.Types.Suburb instance GHC.Classes.Ord Data.Geolocation.Reverse.Types.Suburb instance GHC.Classes.Eq Data.Geolocation.Reverse.Types.Suburb instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.City instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.City instance GHC.Read.Read Data.Geolocation.Reverse.Types.City instance GHC.Show.Show Data.Geolocation.Reverse.Types.City instance GHC.Classes.Ord Data.Geolocation.Reverse.Types.City instance GHC.Classes.Eq Data.Geolocation.Reverse.Types.City instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Longitude instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Longitude instance GHC.Read.Read Data.Geolocation.Reverse.Types.Longitude instance GHC.Show.Show Data.Geolocation.Reverse.Types.Longitude instance GHC.Classes.Ord Data.Geolocation.Reverse.Types.Longitude instance GHC.Classes.Eq Data.Geolocation.Reverse.Types.Longitude instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Latitude instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Latitude instance GHC.Read.Read Data.Geolocation.Reverse.Types.Latitude instance GHC.Show.Show Data.Geolocation.Reverse.Types.Latitude instance GHC.Classes.Ord Data.Geolocation.Reverse.Types.Latitude instance GHC.Classes.Eq Data.Geolocation.Reverse.Types.Latitude instance Data.Aeson.Types.Class.ToJSON Data.ISO3166_CountryCodes.CountryCode instance Data.Aeson.Types.Class.FromJSON Data.ISO3166_CountryCodes.CountryCode -- | Here we define providers for the Reverse Geocoding feature, namely how -- to format the url, the key under which the results are returned, and -- how to parse the retrived data. -- -- Currently only Open Stree Map is provided, feel free to add others. module Data.Geolocation.Reverse.Providers type ReverseGeoJsonKey = Text type ReverseGeoParser = Object -> Parser ParsedLocationInfo type ReverseGeoProvider = (ReverseGeoJsonKey, ReverseGeoUrl, ReverseGeoParser) openStreetMap :: ReverseGeoProvider -- | This very simple module returns a Maybe Location info for a set of -- coordinates. -- -- Right now only one provider is given (OpenStreeMap), please feel free -- to add more. -- -- We use this for a very coarse geographic categorization, so the -- following equivalences hold: -- -- City : city <|> village <|> town <|> hamlet -- <|> county -- -- Suburb: suburb <|> hamlet <|> postcode <|> town -- -- Street: road <|> street -- -- All contribuitions are welcomed! module Data.Geolocation.Reverse -- | Default reverse geo provider defaultReverseGeoProvider :: ReverseGeoProvider -- | Given a Latitude and Longitude, return a Location Info. getLocationInfo :: Latitude -> Longitude -> ReverseGeoProvider -> IO (Maybe ParsedLocationInfo) -- | Get location info from default provider (right now Open Stree Map) getLocationInfoDef :: Latitude -> Longitude -> IO (Maybe ParsedLocationInfo)