class Malkist::Distances
Class Distance
is a class to get Distance
Matrix of coordinates. It will hit Google Maps Distance
Matrix API and wrap it inside Distance
class based on its origin and destination.
Public Class Methods
new(origins, destinations)
click to toggle source
# File lib/malkist/distances.rb, line 11 def initialize(origins, destinations) @origins = origins @destinations = destinations end
Public Instance Methods
calculate_distance()
click to toggle source
calculate_distance
will hit Distance
Matrix API and wrap it inside class Distance
.
# File lib/malkist/distances.rb, line 17 def calculate_distance uri = URI('https://maps.googleapis.com/maps/api/distancematrix/json') params = { origins: @origins.join('|'), destinations: @destinations.join('|') } uri.query = URI.encode_www_form(params) res = Net::HTTP.get_response(uri) # puts uri return [] unless res.is_a?(Net::HTTPSuccess) body = {} body = JSON.parse(res.body) result = [] body['rows'].each_with_index do |row, row_index| row['elements'].each_with_index do |element, index| dist = Distance.new( body['origin_addresses'][row_index], body['destination_addresses'][index], element['distance']['value'], element['duration']['value'] ) result.push(dist) end end result end