Documentation: http://hexdocs.pm/geocalc
Calculate distance, bearing and more between latitude/longitude points
All the formulas are adapted from http://www.movable-type.co.uk/scripts/latlong.html
First, add Geocalc to your mix.exs dependencies:
def deps do
[{:geocalc, "~> 0.5"}]
endThen, update your dependencies:
$ mix deps.getNow, list the :geocalc application as your
application dependency:
def application do
[applications: [:geocalc]]
endGeocalc.distance_between([50.0663889, -5.7147222], [58.6438889, -3.07])
# => 968853.5464535094Geocalc.destination_point([50.0663889, -5.7147222], [58.6438889, -3.07], 100_000)
# => {:ok, [50.95412546615634, -5.488452905258299]}Geocalc.destination_point([50.0663889, -5.7147222], 2.123, 100_000)
# => {:ok, [49.58859917965055, -4.533613856982982]}Geocalc.bearing([50.0663889, -5.7147222], [58.6438889, -3.07])
# => 0.1591708517503001berlin = [52.5075419, 13.4251364]
radius = 10_000
Geocalc.bounding_box(berlin, radius)
# => [[52.417520954378574, 13.277235453275123], [52.59756284562143, 13.573037346724874]]Geocalc.degrees_to_radians(245)
# => -2.007128639793479Geocalc.radians_to_degrees(1.234)
# => 70.70299191914359Everything which implements Geocalc.Point protocol can be passed as a point
argument for any function in this library.
We already have implementations for List, Tuple and Map.
You can define your own implementations if you need, everything we need to know
to do calculations are latitude and longitude.