aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/tom_tom/matrix.rb29
-rw-r--r--lib/tom_tom/matrix/point.rb6
2 files changed, 18 insertions, 17 deletions
diff --git a/lib/tom_tom/matrix.rb b/lib/tom_tom/matrix.rb
index 55568ab66..8e0331cca 100644
--- a/lib/tom_tom/matrix.rb
+++ b/lib/tom_tom/matrix.rb
@@ -29,23 +29,30 @@ module TomTom
end
def points_from_way_costs(way_costs)
- points = Set.new
+ points = []
way_costs.each do |way_cost|
departure_id, arrival_id = way_cost.id.split('-')
- points.add(
- TomTom::Matrix::Point.new(
- way_cost.departure,
- departure_id
- )
+ departure = TomTom::Matrix::Point.new(
+ way_cost.departure,
+ departure_id
)
- points.add(
- TomTom::Matrix::Point.new(
- way_cost.arrival,
- arrival_id
- )
+ arrival = TomTom::Matrix::Point.new(
+ way_cost.arrival,
+ arrival_id
)
+
+ # Don't add duplicate coordinates. This assumes that
+ # `way_costs` consists of an ordered route of points where
+ # each departure coordinate is the same as the preceding
+ # arrival coordinate.
+ if points.empty? ||
+ points.last.coordinates != departure.coordinates
+ points << departure
+ end
+
+ points << arrival
end
points
diff --git a/lib/tom_tom/matrix/point.rb b/lib/tom_tom/matrix/point.rb
index 4e9d11e68..435b4d4b0 100644
--- a/lib/tom_tom/matrix/point.rb
+++ b/lib/tom_tom/matrix/point.rb
@@ -13,12 +13,6 @@ module TomTom
@coordinates == other.coordinates &&
@id == other.id
end
-
- alias :eql? :==
-
- def hash
- @coordinates.hash + @id.hash
- end
end
end
end