[![Build Status](](
# Google Distance Matrix API Library for Elixir
This library allows you to obtain the distance and travel times between multiple origins and destinations via various travel methods.

## Installation

First, add distance_api_matrix to your `mix.exs` dependencies:

def deps do
  [{:distance_api_matrix, "~> 2.0"}]
and run `$ mix deps.get`.

## Usage

# Create a travel_list with coords and/or addresses
iex> travels = |>
  DistanceMatrixApi.TravelList.add_entry(%{origin: "Caen", destination: "Paris"}) |>
  DistanceMatrixApi.TravelList.add_entry(%{origin: "21 Rue de la République, 69002 Lyon, France", destination: "60 Rue de Rivoli, 75004 Paris, France"}) |>
  DistanceMatrixApi.TravelList.add_entry(%{origin: %{lat: 45.764043, long: 4.835658999999964}, destination: %{lat: 48.856614, long: 2.3522219000000177}})

# Basic call
iex> travels |> DistanceMatrixApi.distances

#with custom options
iex> options = %{mode: "bicycling", units: "imperial", language: "en-US"}
iex> travels |> DistanceMatrixApi.distances(options)

Check an example of the output format [here](,%20Paris%7CPlace%20de%20l%27Opera,%20Paris&destinations=Place%20de%20l%27Opera,%20Paris%7CPlace%20Gambetta,%20Paris&mode=bicycling&language=fr-FR)

## Options

All options defined in the [Google distance matrix documentation]( are available, such as: `mode` `key` `language` `units` etc.

**Key :**

Set by default if `Application.get_env(:distance_api_matrix, :api_key)` is present.

## Contributing

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

## Testing

Various tests included, just run;

    mix deps.get
    mix test

## License

Copyright (c) 2015 Thibault Hagler. See the LICENSE file for license rights and limitations (MIT).