Current section
Files
Jump to
Current section
Files
lib/geocalc.ex
defmodule Geocalc do
def distance_between([point_1_lat, point_1_lng], [point_2_lat, point_2_lng]) do
r = 6_371_000
point_1_lat_rad = radian(point_1_lat)
point_2_lat_rad = radian(point_2_lat)
diff_lat = radian(point_2_lat - point_1_lat)
diff_lng = radian(point_2_lng - point_1_lng)
a = :math.sin(diff_lat / 2) * :math.sin(diff_lat / 2) + :math.cos(point_1_lat_rad) * :math.cos(point_2_lat_rad) * :math.sin(diff_lng / 2) * :math.sin(diff_lng / 2)
c = 2 * :math.atan2(:math.sqrt(a), :math.sqrt(1 - a))
r * c
end
def radian(lat_or_lng) do
lat_or_lng * :math.pi / 180
end
end