]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/api/maps_controller.rb
Merge remote-tracking branch 'upstream/pull/5064'
[rails.git] / app / controllers / api / maps_controller.rb
index 2aa25fdd74611ecb2e3323af46ede63b8f72e5fe..439585462eba7e1e7f760183789eec960feffd12 100644 (file)
@@ -46,10 +46,7 @@ module Api
         way_ids = way_nodes.collect { |way_node| way_node.id[0] }
         ways = Way.preload(:way_nodes, :way_tags).find(way_ids)
 
-        list_of_way_nodes = ways.collect do |way|
-          way.way_nodes.collect(&:node_id)
-        end
-        list_of_way_nodes.flatten!
+        list_of_way_nodes = ways.flat_map { |way| way.way_nodes.map(&:node_id) }
       end
 
       # - [0] in case some thing links to node 0 which doesn't exist. Shouldn't actually ever happen but it does. FIXME: file a ticket for this
@@ -57,26 +54,12 @@ module Api
 
       nodes += Node.includes(:node_tags).find(nodes_to_fetch) unless nodes_to_fetch.empty?
 
-      visible_nodes = {}
-      @nodes = []
-      nodes.each do |node|
-        if node.visible?
-          visible_nodes[node.id] = node
-          @nodes << node
-        end
-      end
+      @nodes = nodes.filter(&:visible?)
 
-      @ways = []
-      way_ids = []
-      ways.each do |way|
-        if way.visible?
-          way_ids << way.id
-          @ways << way
-        end
-      end
+      @ways = ways.filter(&:visible?)
 
-      @relations = Relation.nodes(visible_nodes.keys).visible +
-                   Relation.ways(way_ids).visible
+      @relations = Relation.nodes(@nodes).visible +
+                   Relation.ways(@ways).visible
 
       # we do not normally return the "other" partners referenced by an relation,
       # e.g. if we return a way A that is referenced by relation X, and there's