Geolixir
View SourceWelcome 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 OpenStreetMaps, 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.0"}
]
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 (OpenStreetMaps)
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)
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, :invalid_coordinates} # 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](https://hexdocs.pm). Once published, the docs can be found at <https://hexdocs.pm/geolixir>.
## 📝 License
Licensed under the [MIT License](./LICENSE).