class OSRM::Route
Attributes
distance[RW]
duration[RW]
geometry[RW]
Public Class Methods
new(json = {})
click to toggle source
# File lib/osrm/route.rb, line 7 def initialize(json = {}) @geometry = decode_geometry(json[:geometry]) @distance = json[:distance].to_f @duration = json[:duration].to_f end
Private Instance Methods
decode_geometry(geometry)
click to toggle source
# File lib/osrm/route.rb, line 15 def decode_geometry(geometry) return nil if geometry.nil? return [] if geometry.empty? EncodedPolyline.decode_points(geometry, 5).map do |point| point.map { |coordinate| fix_float_precision(coordinate) } end end
fix_float_precision(float)
click to toggle source
HACK: Should fix encoded_polyline gem instead
# File lib/osrm/route.rb, line 25 def fix_float_precision(float) decimals = float.to_f.to_s[/\d+\z/] fixed_decimals = decimals.sub(/(\d)\1{5,}\d{,2}\z/, '') decimals == fixed_decimals ? float : float.round(fixed_decimals.size) end