Skip to content

A simple and efficient geolocation library for Elixir applications.

License

Notifications You must be signed in to change notification settings

rog404/geolixir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Geolixir

Welcome to Geolixir! This library makes it simple to work with geocoding in your Elixir projects. Easily convert addresses to coordinates (geocoding) and coordinates back to addresses (reverse geocoding).

✨ Features

  • Geocoding: Find latitude and longitude from an address.
  • Reverse Geocoding: Find address details from latitude and longitude.
  • Multiple Providers: Supports various geocoding services (like OpenStreetMap, Geoapify, etc.). You can choose your preferred provider or stick with the default.
  • Simple Interface: Easy-to-use functions for common tasks.

🚀 Installation

Add geolixir to your mix.exs dependencies:

def deps do
  [
    {:geolixir, "~> 0.1.2"}
  ]
end

Then, run mix deps.get in your terminal.

💡 Usage

Here's how you can use Geolixir:

Geocoding (Address to Coordinates)

# Using the default provider (OpenStreetMap)
iex> Geolixir.geocode("1600 Amphitheatre Parkway, Mountain View, CA")
{:ok, %Geolixir.Result{
  coordinates: %Geolixir.Coords{lat: 37.4224764, lon: -122.0842499},
  location: %Geolixir.Location{...},
  bounds: %Geolixir.Bounds{...},
  metadata: %{}
}}

# Using a specific provider (e.g., Geoapify, requires API key)
iex> Geolixir.geocode("Eiffel Tower, Paris", provider: :geoapify, api_key: "YOUR_GEOAPIFY_KEY")
{:ok, %Geolixir.Result{...}}

### Reverse Geocoding (Coordinates to Address)

```elixir
# Using the default provider
iex> Geolixir.reverse_geocode(48.8584, 2.2945)
{:ok, %Geolixir.Result{
  location: %Geolixir.Location{formatted_address: "Tour Eiffel, 5, Avenue Anatole France, ...", ...},
  ...
}}

# Using a specific provider (e.g., PositionStack, requires API key)
iex> Geolixir.reverse_geocode(40.7128, -74.0060, provider: :position_stack, api_key: "YOUR_POSITIONSTACK_KEY")
{:ok, %Geolixir.Result{...}}

# Handling errors
iex> Geolixir.reverse_geocode(999.0, 999.0)
{:error, _provider_error_map} # Example error

Note: Some providers require an API key. Pass it using the api_key: "your_key" option. Check the specific provider module documentation for details.

🛣️ Roadmap

  • Create documentation on HexDocs
  • Implement batch operations (list_geocode, list_reverse_geocode).
  • Add support for more geocoding providers.
  • Enhance error handling.

📚 Documentation

Full documentation can be generated using ExDoc and published on HexDocs.

📝 License

Licensed under the MIT License.